1. Trang chủ
  2. » Luận Văn - Báo Cáo

Gắn bó dữ liệu trong các CSDL phân tán

22 602 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 256,5 KB

Nội dung

Điều này tương tự như điều màcâu vấn tin thực hiện, ngoại trừ trường hợp nếu CSDL nhất quán trước khi thực hiệngiao dịch thì cũng sẽ nhất quán vào lúc kết thúc, cho dù : 1 giao dịch có t

Trang 1

MỤC LỤC

LỜI MỞ ĐẦU

I MỘT SỐ KHÁI NIỆM VÀ GIẢI THUẬT ĐẢM BẢO TÍNH GẮN BÓ TRONG

CSDL PHÂN TÁN 3

I.1 Khái niệm giao dịch: 3

I.2 Các tính chất của giao dịch: 3

I.3 Các loại giao dịch 4

I.3.1 Giao dịch phẳng: 4

I.3.2 Giao dịch lồng: 4

I 4 Giải thuật hai pha tuyến tính : 5

II ĐẶT VẤN ĐỀ VÀ GIẢI QUYẾT VẤN ĐỀ 6

1 Sử dụng ngôn ngữ java để xây dựng chương trình 6

2 Thiết kế cơ sở dữ liệu 6

2.1 Thiết kế cơ sở dữ liệu 7

2.2 Đăng kết với ODBC 7

2.3 Kết nối cơ sở dữ liệu trong java 7

3 Mô hình Client/Server 9

3.1 Xây dựng hệ đơn Server theo mô hình Client/Server thường gặp 9

3.2 Xây dựng Server 11

3.3 Xây dựng Client 12

3.4 Xây dựng Monitor để Manager hệ thống 12

4 Kiểm tra tính gắn bó dữ liệu 13

III MỘT SỐ KẾT QUẢ THỬ NGHIỆM 14 KẾT LUẬN

TÀI LIỆU THAM KHẢO

Trang 2

LỜI MỞ ĐẦU

Với sự phát triển của khoa học và kỹ thuật, ngày nay các mạng máy tính đã pháttriển một cách nhanh chóng và đa dạng cả về quy mô, hệ điều hành và ứng dụng Khithông tin có thể được sử dụng chung thì nó mang lại cho người sử dụng khả năng tổchức lại các công việc với những thay đổi về chất như:

- Ðáp ứng những nhu cầu của hệ thống ứng dụng kinh doanh hiện đại

- Cung cấp sự thống nhất giữa các dữ liệu

- Tăng cường năng lực xử lý nhờ kết hợp các bộ phận phân tán

- Tăng cường truy nhập tới các dịch vụ mạng khác nhau đang được cung cấp trênthế giới

Thông qua môi trường mạng, con người có thể giao tiếp với nhau và chia sẻthông tin dữ liệu dù ở khoảng cách rất xa Vấn đề đặt ra là làm sao phải đảm bảo dữliệu trên mạng phải thống nhất Đây cũng chính là một trong những yêu cầu chính củalĩnh vực Lập trình mạng

Nội dung chủ yếu trình bày trong tiểu luận này là giải quyết một vấn đề về lậptrình mạng, đó là chia sẻ cơ sở dữ liệu giữa các đối tượng ở xa nhau và đảm bảo tínhgắn bó của dữ liệu Chương trình được viết trên ngôn ngữ Java và sử dụng Hệ quản trị

cơ sở dữ liệu Access Chương trình có thể được sử dụng để tham khảo đối với nhữngngười muốn tìm hiểu về lập trình mạng bằng Java

Tôi xin chân thành cảm ơn TS Lê Văn Sơn và các bạn lớp Khoa học máy tínhkhoá 11 (2009 – 2011) - Đại học Đà Nẵng đã giúp tôi hoàn thành tiểu luận này

Học viên thực hiện: Trần Tấn Nha

Trang 3

I MỘT SỐ KHÁI NIỆM VÀ GIẢI THUẬT ĐẢM BẢO TÍNH GẮN BÓ TRONG CSDL PHÂN TÁN

I.1 Khái niệm giao dịch:

Giao dịch là một đơn vị tính toán nhất quán và đáng tin cậy Vì thế về mặt trựcquan, một giao dịch nhận một CSDL, thực hiện một hành động trên CSDL và sinh ramột bản CSDL mới, gây ra một dịch chuyển trạng thái Điều này tương tự như điều màcâu vấn tin thực hiện, ngoại trừ trường hợp nếu CSDL nhất quán trước khi thực hiệngiao dịch thì cũng sẽ nhất quán vào lúc kết thúc, cho dù : (1) giao dịch có thể thực hiệnđồng thời với những giao dịch khác (2) có xảy ra sự cố trong lúc thực hiện giao dịch

I.2 Các tính chất của giao dịch:

Các khía cạnh nhất quán và khả tín của giao dich là do 4 tính chất: tính nguyên tử(atomicity), tính nhất quán (consistency), tính biệt lập (isolation) và tính bền vững; vàthường được gọi chung là tính chất ACID của giao dịch

Tính nguyên tử:

Tính nguyên tử liên quan đến sự kiện là một giao dịch được xử lý như mộtđơn vị hoạt tác Chính vì thế mà các hành động của giao dịch, hoặc tất cả đềuhoàn tất hoặc không một hành động nào hoàn tất

Tính nhất quán:

Tính nhất quán của một giao dịch chỉ đơn giản là tính đúng đắn của nó Nóicách khác, một giao dịch là một chương trình đúng đắn, ánh xạ CSDL từ trạngthái nhất quán này sang trạng thái nhất quán khác

Trang 4

I.3 Các loại giao dịch

Các giao dịch lồng đã được chú ý như một khái niệm giao dịch tổng quáthơn Mức độ lồng nói chung là để ngỏ, cho phép các giao dịch con cũng có thể

có các giao dịch lồng Tính tổng quát này có ích trong các lĩnh vực ứng dụng

mà ở đó các giao dịch phức tạp hơn so với việc xử lý dữ liệu truyền thống.Giao dịch lồng có thể phân loại thành: kiểu lồng đóng (closed nesting) và kiểulồng mở (open nesting) do các đặc trưng kết thúc của chúng Các giao dịch lồngđóng ủy thác theo lối từ dưới lên đến gốc Vì thế một giao dịch con lồng bắt đầusau cha và hoàn tất trước nó, và việc ủy thác giao dịch con phụ thuộc vào việc ủythác của giao dịch cha Ngữ nghĩa của những giao dịch này cưỡng chế tính nguyên

tử tại mức trên cùng Kiểu lồng mở nới lỏng sự hạn chế về tính nguyên tử của củacác giao dịch lồng đóng Vì thế một giao dịch lồng mở cho phép bên ngoài giaodịch thấy được các kết quả một phần của nó

Ưu điểm của các giao dịch lồng biểu hiện qua những điểm sau: trước tiên,chúng cung cấp một mức độ đồng thời cao cho các giao dịch Vì một giao dịch cóchứa đựng một số giao dịch khác, tính đồng thời là cao hơn ngay bên trong mộtgiao dịch Thí dụ nếu giao dịch đăng ký tua du lịch được cài đặt như giao dịchphẳng, rất có thể chúng ta không truy xuất được các mẫu tin về tour cụ thể nào đócùng một lúc Nói cách khác, nếu một công ty du lịch đưa ra giao dịch đăng ký mộttua du lịch, bất kỳ một giao dịch đồng thời khác muốn truy xuất tua đó đều phải đợicho đến khi kết thúc giao dịch đầu tiên mà trong đó nó gồm cả các công việc đặtphòng khách sạn và mướn xe ngoài việc tua Tuy nhiên, một cài đặt lồng sẽ chophép giao dịch thứ hai truy xuất dữ liệu về tua ngay khi giao dịch con Tour của

Trang 5

giao dịch đăng ký tua du lịch thứ nhất hoàn tất Nói cách khác, chúng ta có thể thựchiện một mức đồng bộ hóa chi tiết hơn giữa các giao dịch đồng thời.

Ưu điểm thứ hai của giao dịch lồng là khả năng khôi phục Chúng ta có thểkhôi phục một cách độc lập cho mỗi giao dịch con sau khi gặp sự cố Điều này hạnchế những tổn hại một phần trong các giao dịch nhỏ khiến chi phí khôi phục thấphơn Trong một giao dịch phẳng, nếu một thao tác nào bị thất bại, toàn bộ giao dịchđều bị hủy bỏ và khởi động lại, còn trong một giao dịch lồng, nếu một thao tác thấtbại, chỉ giao dịch con chứa thao tác đó cần phải hủy bỏ và khởi động lại

Nhằm duy trì tính chất nguyên tử và tính chất bền vững của các giao dịch phântán, các nhà nghiên cứu đã đưa ra một số thuật toán, trong đó có giải thuật hai phatuyến tính (linear 2PC) (cũng được gọi là nghi thức 2PC lồng)[Gray, 1979]

I 4 Giải thuật hai pha tuyến tính :

Chúng ta giả thiết rằng, tại vị trí nguồn của giao dịch một tiến trình thực hiện cácthao tác của nó, tiến trình này được gọi là điều phối viên (Coordinator) Điều phối viêntrao đổi với các thành viên (Participant) tại những vị trí có tham gia vào việc thực hiệncác thao tác của giao dịch

Có một thứ tự giữa các vị trí trong hệ thống dành cho việc giao tiếp Chúng ta hãy

giả thiết rằng thứ tự giữa các vị trí có tham gia vào việc thực hiện một giao dịch là 1, 2,

…, N với điều phối viên là vị trí đầu tiên trong thứ tự này Nghi thức 2PC được cài đặt

bằng cách trong pha đầu tiên truyền tới [ tính từ điều phối viên (số 1) đến N] và trongpha thứ hai truyền ngược từ N về điều phối viên Thuật toán 2PC tuyến tính hoạt độngtheo cách sau:

Điều phối viên gửi thông báo prepare đến thành viên 2 Nếu thành viên 2 chưa sẵnsàng ủy thác giao dịch, nó gửi thông báo biểu quyết hủy bỏ vote-abort (VA) và giaodịch bị hủy tại thời điểm này (hủy bỏ đơn phương của 2) Ngược lại nếu thành viên 2đồng ý ủy thác, nó gửi thông báo vote-commit(VC) cho thành viên 3 rồi chuyển sangtrạng thái READY Quá trình này tiếp tục cho đến khi một biểu quyết ủy thác đến đượcthành viên N Đến đây kết thúc pha đầu tiên Nếu N quyết định ủy thác, nó gửi chothành viên N-1 thông báo global-commit (GC); bằng không, nó gửi một thông báo toàncục global-abort(GA) Theo đó các thành viên sẽ chuyển sang trạng thái thích hợp(COMMIT hoặc ABORT) và làm lan truyền thông báo trở về điều phối viên Thuật

Pha 1

Pha 2

Trang 6

toán được mô tả trong hình 1:

Hình 1: Cấu trúc giao tiếp 2PC tuyến tínhVC: vote-commmit; VA: vote-abort; GC: global commit; GA: global-abort

II ĐẶT VẤN ĐỀ VÀ GIẢI QUYẾT VẤN ĐỀ

Giả sử rằng ta có hệ thống CSDL phối hợp với một hoạt động được gọi từ xanhằm phục vụ cho việc cập nhật hay tra cứu thông tin cần thiết Hãy viết chương trìnhtrên ngôn ngữ Java cho phép cập nhật CSDL có kiểm tra tính gắn bó

1 Đây là hệ đơn Server, có thể hoạt động theo mô hình Client/Server thường gặp

2 Viết chương trình theo kiểu đa truy cập, ngẫu nhiên, từ xa với số lượng truycập lớn

3 Xây dựng Monitoring để Manager hệ thống có thể kiểm tra và điều khiển quátrình thực hiện

1 Sử dụng ngôn ngữ java để xây dựng chương trình

Các đặc điểm của java có thể tóm gọn trong một câu như sau: “Java là một ngônngữ đơn giản, hướng đối tượng, phân tán, thông dịch mạnh mẽ, bảo mật, cấu trúc độclập, khả chuyển, hiệu quả cao và linh động”

Để soạn thảo một chương trình java có thể sử dụng nhiều trình biên soạn khácnhau như Notepad, Jcreator, Editplus, NetBeans, Jbuilder, VisualAge

Sau khi soạn thảo chương trình java, có thể sử dụng trình biên dịch JDK hoặcSDK để dịch và chạy chương trình

2 Thiết kế cơ sở dữ liệu

Yêu cầu đầu tiên của bài toán là phải có một hệ thống cơ sở dữ liệu Cơ sở dữliệu này sẽ phối hợp với một hoạt động cập nhật, tra cứu thông tin từ xa

Pha 1

Pha 2

Trang 7

Trong tiểu luận này, Cơ sở dữ liệu được thiết kế không nhằm mục đích quản lý

mà chỉ mô phỏng cho yêu cầu về cập nhật, tra cứu thông tin Do đó có thể thiết kế rấtđơn giản

Ở đây có thể kết nối cơ sở dữ liệu đơn giản như sau:

2.1 Thiết kế cơ sở dữ liệu

- Thiết kế cơ sở dữ liệu Books sử dụng hệ quản trị cơ sở dữ liệu Access

- Cơ sở dữ liệu Books sẽ bao gồm table Books

- Table Books gồm một trường Maso để lưu các mã số về các cuốn sách

2.2 Đăng kết với ODBC

Trong Tiểu luận này ta dùng Cơ chế ODBC (Open Database Connectivity) để kếtnối đến Cơ sở dữ liệu ODBC là một giao tiếp phổ biến nhất trong thế giới các máytính cá nhân và dần dần đi vào các môi trường khác ODBC là một cài đặt của hãngMicrosoft cung cấp các hàm cho phép các ngôn ngữ lập trình truy cập vào CSDL

Để tạo một kết nối ODBC trên một máy tính, ta thực hiện các bước sau:

- Vào Control Panel chọn Data Sources (ODBC) 32 bit (Win 98, Me) hoặc vàoControl Panel/ Administrative Tools chọn Data Sources (ODBC) (Win NT, 2000, XP)

- Chọn tab System DSN, Click vào button Add, chọn phương thức điều khiển

dữ liệu dăng kết: Driver do Microsoft Access, Click

Finish. Bạn sẽ thấy một cửa sổ hiện ra, Click vào Select và chọn file Access, (trongtrường hợp này là Books.mdb), bấm vào sau đó Click vào button OK Nhập TextboxData Source Name : DSNThuVien Sau đó chọn OK Như vậy là bạn đã hoàn thànhviệc đăng kết Access thông qua ODBC

2.3 Kết nối cơ sở dữ liệu trong java

a Nạp trình điều khiển

Cấu trúc lệnh :

Class.forName("myDriver.ClassName");

Trong đó:

myDriver: tên trình điều khiển

ClassName: tên của Class tương ứng

Trang 8

Trong đó:

url: là một chuỗi nêu lên đặc điểm của CSDL có dạng: jdbc:subprotocol:subname subprotocol: là giao thức con tương ứng với loại CSDL

subname: là tên CSDL (DataSource)

“myLoginName”: là tên người dùng khi đăng nhập vào CSDL

“myPassword”: là mật khẩu người dùng khi đăng nhập vào CSDL

c Tạo đối tượng Statement

Tất cả các lệnh dùng để tác động lên CSDL đều phải thông qua đối tượng

Statement hoặc một đối tượng cùng tính chất như PreparedStatement hay CallableStatement

Tạo đối tượng Statement từ kết nối conn:

Trang 9

Statement lenhSQL = knoi.createStatement();

3.1 Xây dựng hệ đơn Server theo mô hình Client/Server thường gặp

Trong mô hình này, chương trình ứng dụng được chia thành 2 thành phần:

- Quá trình chuyên cung cấp một số phục vụ nào đó, chẳng hạn: phục vụ tập tin,phục vụ máy in, phục vụ thư điện tử, phục vụ Web Các quá trình này được gọi là cáctrình phục vụ hay Server

- Một số quá trình khác có yêu cầu sử dụng các dịch vụ do các server cung cấpđược gọi là các quá trình khách hàng hay Client

Việc giao tiếp giữa client và server được thực hiện dưới hình thức trao đổi cácthông điệp (Message) Để được phục vụ, client sẽ gởi một thông điệp yêu cầu (RequestMessage) mô tả về công việc muốn server thực hiện Khi nhận được thông điệp yêucầu, server tiến hành phân tích để xác định công việc cần phải thực thi Nếu việc thựchiện yêu cầu này có sinh ra kết quả trả về, server sẽ gởi nó cho client trong một thôngđiệp trả lời (Reply Message) Dạng thức (format) và ý nghĩa của các thông điệp

Trang 11

3.2 Xây dựng Server

- Sơ đồ khối cho chương trình chính của Server như sau:

- Tuy nhiên đây là chương trình đa truy cập, ngẫu nhiên, từ xa với số lượng truycập lớn, do đó phải xây dựng một Server có thể nhận kết nối từ nhiều Client cùng lúc

Sơ đồ khối cho MultipleSocketServer:

HVTH: Trần Tấn Nha

Bắt đầuTạo giao diệnĐợi kết nối từ các Client

Nhận kết nối

Sai

ĐúngTạo một Thread mới cho MultipleSocketServer

Kết thúc

Bắt đầuTạo kết nối với CSDLNhận thông tin từ Client

Thực thi việc Nhập, sửa, xoá, xuất thông tin theo thông tin nhận đượcGửi kết quả về cho Client

Kết thúc

11

Trang 12

3.3 Xây dựng Client

Sơ đồ khối cho chương trình chính của Client như sau:

3.4 Xây dựng Monitor để Manager hệ thống

Monitoring thực hiện các công việc sau:

- Quan sát các Client kết nối vào Server

- Quan sát các công việc mà các client thực hiện trên cơ sở dữ liệu

Để đảm bảo Monitoring luôn nhận được thông tin về các hoạt động truy xuất dữliệu giữa Client/Server, các hoạt động về việc kết nối và truy xuất dữ liệu sẽ được ghivào file txtketnoi.txt và txtthaotac.txt

Bắt đầuTạo giao diệnKết nối đến Server

Thực hiện yêu cầu thêm, sửa, xoá, xuất trên giao diện

Chuyển yêu cầu đến

Server

Nhận kết quả từ Server, xuất kết quả ra màn hình

Kết thúc

Trang 13

4 Kiểm tra tính gắn bó dữ liệu

Cho một hệ thống cho phép cập nhật thông tin hay tra cứu thông tin cần thiết.Thông thường một ứng dụng nhiều người dùng (multiuser application) làm việc vớiCSDL, ta sẽ gặp phải trường hợp hai người cùng truy xuất và cập nhật trên cùng một

dữ liệu Ta gọi đó là trạng thái xung đột Và khi đó số liệu dễ bị sai lạc và làm mất tínhtoàn vẹn, gắn bó của dữ liệu Do đó, mỗi khi cập nhật thông tin hay tra cứu thông tin,phải kiểm tra để xác định quyền truy cập để đọc hay sửa đổi nội dung các bảng cơ sở

dữ liệu Chỉ cho phép cập nhật khi không có truy vấn nào đang tiến hành

Các hệ CSDL có hỗ trợ transaction sẽ sử dụng cơ chế lock, khoá các khối dữ liệuđang ở trong một transaction ngăn không cho các truy cập từ những người dùng khác.Trong java, khi chế độ Auto-Commit được mở, mỗi câu lệnh được xem như mộttransaction và được commit tức thời sau khi thực hiện xong, thì việc lock dữ liệu sẽđược gọi trong từng câu lệnh Tác dụng của việc lock dữ liệu là giúp người dùngkhông phải nhận những giá trị sai hay những giá trị chưa được xác lập

Có thể biểu diễn quá trình transaction như sau:

HVTH: Trần Tấn Nha

Bắt đầuTạo giao diệnKết nối đến Server

Thực hiện yêu cầu kiểm tra kết nối, kiểm tra thao tác, thoát

Chuyển yêu cầu đến

Server

Nhận kết quả từ Server, xuất kết quả ra màn hình

Kết thúc

13

Trang 14

Trong quá trình cập nhật dữ liệu, nếu ta không muốn thực thi các cập nhật, ta cóthể gọi lệnh rollback Lúc này các trường (field) sẽ nhận lại các giá trị trước khi cáclệnh cập nhật được gọi Rollback một transaction là cách tốt nhất cho phép ta kiểmsoát các thay đổi của dữ liệu, giá trị nào đã commit hay chưa Ta cần thực hiệnrollback ngay khi nhận được ngoại lệ SQLException Vì khi nhận được ngoại lệ này,

ta chỉ có thể biết là có một cái gì đó không đúng nhưng không thể chỉ ra được là cái gì

đó đã commit hay chưa

III MỘT SỐ KẾT QUẢ THỬ NGHIỆM

1/ Server sau khi khởi động sẽ đợi các kết nối từ Client:

Tạo ConnectionChấm dứt auto-commit

Các lệnh SQL Update, Insert, Delete

commit

commit

Các lệnh SQL Update, Insert, Delete

Transaction

Transaction

Ngày đăng: 23/03/2015, 22:17

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w