BỘ GIÁO DỤC & ĐÀO TẠO
ĐẠI HỌC ĐÀ NẴNG
TIỂU LUẬN
Môn: LẬP TRÌNH MẠNG
Đề tài:
XÂY DỰNG CHƯƠNG TRÌNH PHÂN TÁN ĐẢM BẢO GẮN
BÓ DỮ LIỆU TRÊN CÁC SERVER NGANG HÀNG
Giảng viên: PGS TS. Lê Văn Sơn
Học viên : Hoàng Như Quỳnh
Trần Nhật Vinh
Lớp : Khoa học máy tính K11
Khóa : 02/2009 - 2011
ĐÀ NẴNG, 03/2010
MỤC LỤC
PHẦN I: XÂY DỰNG CHƯƠNG TRÌNH PHÂN TÁN ĐẢM BẢO GẮN BÓ DỮ LIỆU TRÊN CÁC
SERVER NGANG HÀNG 4
1. Đặt vấn đề 4
2. Nội dung bài toán: 5
PHẦN II: LẬP TRÌNH HỆ THỐNG ĐA SERVER BẰNG NGÔN NGỮ JAVA 8
1. Giới thiệu mô hình đối tượng phân tán RMI 8
2. Cơ chế hoạt động của RMI: 9
3. Kết nối và truy cập cơ sở dữ liệu : 11
4. Xây dựng bài toán bằng Java RMI: 12
PHẦN III: DANH SÁCH DI CHUYỂN 13
1. Khái niệm: 13
2. Nội dung giải thuật danh sách di chuyển 13
PHẦN IV: VIẾT CHƯƠNG TRÌNH CẬP NHẬP CÁC D VÀ MONITORING TRÊN CÁC SERVER
NGANG HÀNG KHI CÁC CLIENT NHẬP DỮ LIỆU 16
LỜI NÓI ĐẦU
Hiện nay, công nghệ thông tin là mối quan tâm hàng đầu của Việt Nam và toàn thế
giới. Cùng với sự phát triển nhanh chóng của khoa học máy tính cũng như nhu cầu trao đổi
thông tin trong mọi hoạt động của xã hội đòi hỏi sự phát triển đồng bộ các phương tiện truyền
thông, cũng như sự gắn bó chặt chẽ của dữ liệu. Các thành tựu của ngành khoa học trí tuệ này
đã góp phần quan trọng vào việc thay đổi bộ mặt của thế giới cả về bề mặt lẫn chiều sâu. Việc
ứng dụng các thành tựu của nền công nghệ hiện đại này trở thành vấn đề chủ chốt, quan
trọng, quyết định sự thành bại của các thành phần tham gia vào lĩnh vực hoạt động trên thế
giới từ kinh tế, văn hóa……
Như chúng ta đã biết, đối với các hệ thống thông tin lớn, cơ sở dữ liệu không chỉ được
lưu trữ và quản lý bởi các Server độc lập mà thường được phân tán trên nhiều Server và phân
bố ở các vị trí địa lý khác nhau. Hệ thống cho phép xử lý đa truy cập đồng thời và cho phép
đăng ký từ xa. Một trong những lợi ích của việc phân tán dữ liệu như vậy là nhằm phân chia
yêu cầu xử lý dữ liệu cho nhiều máy nhằm làm tăng năng lực xử lý thông tin của hệ thống và
đặc biệt, nó đảm bảo yêu cầu toàn dữ liệu vì dữ liệu được lưu trữ dự phòng ở nhiều nơi khác
nhau.
Hệ thống trình bày như trên là hệ thống đa server và phức tạp. Một trong các yêu cầu
đặt ra cho hệ thống là phải đảm bảo gắn bó dữ liệu giữa các server đồng thời không làm ảnh
hưởng đến năng lực xử lý của hệ thống.
Trong phạm vi tiểu luận của mình, chúng tôi trình bày đề tài: 1. Xây dựng chương
trình phân tán đảm bảo gắn bó dữ liệu trên các server ngang hàng
1 2. Lập trình hệ thống đa server bằng ngôn ngữ java
2 3. Xây dựng hệ thống cơ sở dữ liệu D với (d1=d2=…dn)
3 4. Nghiên cứu thuật toán danh sách di chuyển
4 5. Viết chương trình cập nhật các D trên các server mỗi khi client nhập dữ liệu
6. Viết chương trình monitoring các D trên các server mỗi khi client nhập dữ
Được sự giúp đỡ tận tình của PGS.TS Lê Văn Sơn và các bạn chúng tôi đã hoàn thành
được bản báo cáo. Tuy nhiên thời gian và kiến thức có hạn nên bản báo cáo này chắc chắn
còn nhiều khuyết điểm, chúng tôi rất mong nhận được sự góp ý của Thầy giáo và các bạn. Cho
phép chúng tôi được bày tỏ lòng biết ơn đối với PGS.TS Lê Văn Sơn và các bạn đã ủng hộ,
giúp đỡ chúng tôi hoàn thành bản báo cáo này.
GẮN BÓ DỮ LIỆU TRÊN CÁC SERVER NGANG HÀNG Trang 4
Trân trọng cảm ơn!
PHẦN I: XÂY DỰNG CHƯƠNG TRÌNH PHÂN TÁN ĐẢM BẢO GẮN BÓ DỮ
LIỆU TRÊN CÁC SERVER NGANG HÀNG.
1. Đặt vấn đề
Vấn đề gắn bó dữ liệu trong các hệ thống phân tán nói chung và các hệ thống thông tin
đăng ký trên mạng nói riêng như việc đăng ký các tua du lịch, mua bán trong các giao dịch
thương mại điện tử, đăng ký giữ chỗ trong giao thông vận tải, đăng ký dự thi trong các hệ
thống thông tin đào tạo, đã trở thành một lĩnh vực thu hút nhiều sự quan tâm của các nhà
nghiên cứu lý thuyết lẫn các nhà sản xuất phần mềm nhằm tìm ra các giải pháp hữu hiệu đảm
bảo tính gắn bó thông tin trong các cơ sở dữ liệu truy cập ngẫu nhiên với số lượng truy cập lớn
Ta xét bài toán đảm bảo gắn bó dữ liệu trong các hệ thống thông tin lớn, đa truy cập. Hệ thống
thông tin được triển khai trên hệ thống gồm nhiều Server kêt nối với nhau qua đường truyền
viễn thông. Các hệ thống này thông tin này có thể chia thành nhiều cơ sở dữ liệu đặt trên các
server khác nhau hay chỉ bao gồm một cơ sở dữ liệu nhưng được cài đặt trên các server khác
nhau dưới dạng các bản sao.
Hệ thống trình bày ở trên là hệ thống thông tin phức tạp sẽ bao gồm các đặc điểm sau đây:
- Cập nhật thường xuyên để làm tươi cơ sở dữ liệu.
- Cho phép truy cập từ xa các thông tin cần thiết.
- Cho phép đăng ký từ xa.
GVHD: PGS.TS. Lê Văn Sơn TH: Trần Nhật Vinh & Hoàng Như Quỳnh
GẮN BÓ DỮ LIỆU TRÊN CÁC SERVER NGANG HÀNG Trang 5
Hệ thống với những đặc điểm trên đòi hỏi phải đảm bảo tính gắn bó dữ liệu bằng những
giải pháp kỹ thuật đáng tin cậy. Giải thuật danh sách di chuyển được phát triển nhằm giải
quyết triệt để các vấn đề gắn bó dữ liệu trình bày ở trên.
2. Nội dung bài toán:
Xây dựng hệ thống đa Server (n>2), xây dựng chương trình đảm bảo gắn bó dữ liệu
trên các cơ sở dữ liệu phân tán trên các Server đó.
Sử dụng ngôn ngữ lập trình Java với sự kết hợp với cơ chế truy cập triệu gọi phương
thức từ xa (RMI – Remote Method Invoke).
Ở góc độ mô phỏng chúng ta xây dựng 03 Server chứa các cơ sở dữ liệu phân tán và 01
Client truy cập đến cơ sở dữ liệu phân tán đó và cập nhập. Chúng ta quan sát sự thay đổi thông
tin cập nhập tại cơ sở dữ liệu phân tán, quan sát và khẳng định tính gắn bó (nhất quán) trong
các cơ sử dữ liệu phân tán.
Bài toán minh hoạ: Với bài toán cơ sở dữ liệu bán hàng từ xa hệ thống mạng phân tán có
những đặt điểm sau:
1. Hệ thống gồm nhiều server ( 3 Server ) được bố trí tại nhiều nơi khác nhau và các
server chứa CSDL giống nhau.
2. Cho phép nhiều đại lý cập nhật thông tin khách hàng đồng thời.
GVHD: PGS.TS. Lê Văn Sơn TH: Trần Nhật Vinh & Hoàng Như Quỳnh
GẮN BÓ DỮ LIỆU TRÊN CÁC SERVER NGANG HÀNG Trang 6
3. Hệ thống phải tuyệt đối đảm bảo gắn bó dữ liệu tránh trình trạng hàng hoá cung cấp
hết cho khách hàng A tại đại lý A nhưng vẫn được bán cho khách hàng B ở một đại
lý nào đó.
Đây là một hệ thống thông tin phức tạp gồm nhiều ứng dụng được thiết kế để giải quyết
bài toán một cách tổng thể toàn diện. Ở đây với mục đích tìm hiểu và nghiên cứu ta có thể thu
nhỏ bài toán cơ sở dữ liệu gồm bảng khách hàng.
Sanpham(Masp,Tensp, Soluong,Dongia)
Người sử dụng muốn được cung cấp thông tin về một yêu cầu nào đó qua câu truy vấn trên
Server tiếp nhận câu truy vấn và xử lý câu truy vấn rồi chuyển lại cho người yêu cầu.
Có một khách hàng ở địa điểm A muốn biết thông tin về giá cả, số lượng của mặt hàng
có tại đại lý B tại địa điểm B ở xa để làm được việc này hệ thống phải xử lý các công việc nhất
định.
Trước hết khi Client ra yêu cầu hệ thống phải xác định Client đang ở vị trí nào . đây
chính là vấn đề trỏ thông tin nội dung chủ yếu của việc trỏ thông tin là biến đổi địa điểm B
thành tên của hệ thống cục bộ quản lý để hệ thống có thể nhận dang được. Tên của hệ thống
cục bộ phải duy nhất không được trùng với các hệ thống cục bộ khác và không được phép thay
đổi.
Sau khi đã trỏ đúng vào địa chỉ chứa thông tin, hệ thống phải có khả năng tiếp nhận và
ghi lại những yêu cầu.
Biên dịch các yêu cầu thành dạng lệnh để truy tìm thông tin.
Thực hiện công việc cục bộ mang tính chất cục bộ của hệ thống cục bộ như kiểm tra
quyền truy cập thông tin, thống kê số lượng khách hàng lập hoá đơn bán hàng,…
Nếu tìm được đúng thông tin yêu cầu sau đó gởi thông tin này đến hệ thống có yêu cầu.
Đây là mô hình Client / Server ( khách / chủ) Client gởi yêu cầu ( thông điệp) đến
server. Sự tác động này gọi là sự giao dịch.
Client A :
{Goiyeucau(B,yc) // client gởi server B
Nhanyeucau(ketqua)}
Sever B
GVHD: PGS.TS. Lê Văn Sơn TH: Trần Nhật Vinh & Hoàng Như Quỳnh
GẮN BÓ DỮ LIỆU TRÊN CÁC SERVER NGANG HÀNG Trang 7
{ Nhanyeucau(s,nh)
Nếu(hợp lệ)
Bắt đầu
Tracuucsdl
Thongke
Traketqua(s,kq)
}
Câu truy vấn có thể cài đặt tại Client hoặc tại máy Server. Hai giải pháp này khác nhau
ở khối lượng thông tin trao đổi giữa các client với nhau. Giả sử rằng ta đang theo tác trên môi
trường Web. Vậy chương trình có thể triển khai trên Server và trên Client chỉ cần trình duyệt
Web mà thôi (các trình duyệt Web như Internet Explorer, Netcape Navigator). Web Server xử
lý các yêu cầu từ Client gởi lên sau khi xử lý xong và trả về kết quả Client. Như vậy với mô
hình này thì chương chình được cài đặt toàn bộ trên Server.
Với mô hình trên ta thấy độ tin cậy của thông tin. Thông tin là đúng tại thời điểm
Server nhận được thông điệp và đọc nó, có thể không đúng khi khi client nhận được. Điều này
liên quan đến việc làm tươi dữ liệu.
Vì vậy ta phải có giải pháp cho việc truy cập đồng thời vào dữ liệu dùng chung. Hiện
tại ta có một số hệ quản trị CSDL như SQL Server 2005 hoặc Oracle có tính năng bảo mật và
phân quyền rất tốt do đó đảm bảo tính an toàn cho hệ thống thông tin.
Có một số hệ quản trị CSDL có tính năng Transaction ( lập phiên giao dịch) cho phép
đảm bảo tính thống nhất trong khi lưu trữ dữ liệu đảm bảo không xẩy ra treo hệ khi nhiều
Client cùng truy xuất vào một CSDL.
Trong thực tế việc treo hệ vẫn có thể xảy ra ví dụ : một khách hàng A mua hàng hoá K
tại đại lý B và C khách hàng này nhận được lời chấp nhận với một số lượng cụ thể, nhưng số
lượng mặt hàng này không có hoặc có mà không đủ tại đại lý B và C. trong khi ra lệnh thì yêu
cầu của khách hàng vẫn được chấp nhận vì số lượng vẫn còn ở một địa điểm khác. Vì vậy xảy
ra vấn đề khách hàng A nhận được phản hồi chấp nhận mà trên thực tế số lượng hàng hoá tại
vị trí ấy không có.
GVHD: PGS.TS. Lê Văn Sơn TH: Trần Nhật Vinh & Hoàng Như Quỳnh
GẮN BÓ DỮ LIỆU TRÊN CÁC SERVER NGANG HÀNG Trang 8
PHẦN II: LẬP TRÌNH HỆ THỐNG ĐA SERVER BẰNG NGÔN NGỮ JAVA
1. Giới thiệu mô hình đối tượng phân tán RMI
RMI (Remote Method Invocation) là một công nghệ Java cho phép một máy ảo Java
này tương tác với một máy ảo Java khác và gọi các phương thức đối tượng. Ứng dụng phân
tán trong Java thông qua cơ chế RMI thực chất là sự kết hợp nhiều đối tượng đang tồn tại trên
các máy khác nhau để giải quyết vấn đề. Đối tượng này sử dụng hàm của đối tượng khác ở xa
để thực thi công việc. Khi đó việc gọi thực thi đối tượng ở xa cũng giống như gọi đối tượng
địa phương.
Để làm được điều này, ứng dụng phân tán RMI dùng bộ phận đăng ký dịch vụ (registry)
để quản lý hoạt động của các đối tượng trên mạng. Khi đó thông qua bộ phận đăng ký này,
máy ảo Java đóng vai trò server sẽ liên kết với đối tượng ở xa (remote object).
Client tìm đến đối tượng ở xa thông qua tên đã đăng ký với bộ phận đăng ký server này.
Bộ phận đăng ký dịch vụ được thiết lập mặc định ở cổng 1099 thông qua rmiregistry, có trong
bộ công cụ phát triển Java (J2SDK).
Vị trí của hệ thống RMI trong ứng dụng phân tán được mô tả như hình dưới. Trong đó
các chương trình client và server trao đổi với nhau qua cầu nối của hệ thống RMI.
Kiến trúc của hệ thống RMI bao gồm các tầng như sau:
GVHD: PGS.TS. Lê Văn Sơn TH: Trần Nhật Vinh & Hoàng Như Quỳnh
RMI Registry
RMI Client
RMI Server
GẮN BÓ DỮ LIỆU TRÊN CÁC SERVER NGANG HÀNG Trang 9
Để quá trình truyền tin là trong suốt với người lập trình, truyền tin giữa client và server
được cài đặt theo mô hình phân tầng như hình vẽ dưới đây
Các ứng dụng RMI được chia thành hai chương trình độc lập là: chương trình Client và
chương trình Server. Chương trình Server tạo ra các đối tượng từ xa và cung cấp các tham
chiếu đến chúng và chờ các chương trình Client triệu gọi các đối tượng này. Chương trình
Client nhận tham chiếu đến các đối tượng ở xa (đối tượng do chương trình Server tạo ra) và
triệu gọi chúng như các đối tượng cục bộ.
2. Cơ chế hoạt động của RMI:
Các hệ thống RMI phục vụ cho việc truyền tin thường được chia thành hai loại: client và
server. Một server cung cấp dịch vụ RMI, và client gọi các phương thức trên đối tượng của
dịch vụ này.
Server RMI phải đăng ký với một dịch vụ tra tìm và đăng ký tên. Dịch vụ này cho phép
các client truy tìm chúng, hoặc chúng có thể tham chiếu tới dịch vụ trong một mô hình khác.
Một chương trình đóng vai trò như vậy có tên là rmiregistry, chương trình này chạy như một
tiến trình độc lập và cho phép các ứng dụng đăng ký dịch vụ RMI hoặc nhận một tham chiếu
tới dịch vụ được đặt tên. Mỗi khi server đựơc đăng ký, nó sẽ chờ các yêu cầu RMI từ các
client. Gắn với mỗi đăng ký dịch vụ là một tên được biểu diễn bằng một xâu ký tự để cho phép
các client lựa chọn dịch vụ thích hợp. Nếu một dịch vụ chuyển từ server này sang một server
khác, client chỉ cần tra tìm trình đăng ký để tìm ra vị trí mới. Điều này làm cho hệ thống có
khả năng dung thứ lỗi-nếu một dịch vụ không khả dụng do một máy bị sập, người quản trị hệ
GVHD: PGS.TS. Lê Văn Sơn TH: Trần Nhật Vinh & Hoàng Như Quỳnh
Đường logic
Chương trình Server
Skeleton
Tầng tham chiếu từ xa
Tầng giao vận
Chương trình Client
Stub
Tầng tham chiếu từ xa
Tầng giao vận
Network
GẮN BÓ DỮ LIỆU TRÊN CÁC SERVER NGANG HÀNG Trang 10
thống có thể tạo ra một thể hiện mới của dịch vụ trên một hệ thống khác và đăng ký nó với
trình đăng ký RMI.
Các client RMI sẽ gửi các thông điệp RMI để gọi một phương thức trên một đối tượng
từ xa. Trước khi thực hiện gọi phương thức từ xa, client phải nhận được một tham chiếu từ xa.
Tham chiếu này thường có được bằng cách tra tìm một dịch vụ trong trình đăng ký RMI. Ứng
dụng client yêu cầu một tên dịch vụ cụ thể, và nhận một URL trỏ tới tài nguyên từ xa. Khuôn
dạng dưới đây được sử dụng để biểu diễn một tham chiếu đối tượng từ xa:
rmi://hostname:port/servicename
Trong đó hostname là tên của máy chủ hoặc một địa chỉ IP, port xác định dịch vụ, và
servicename là một xâu ký tự mô tả dịch vụ.
Mỗi khi có được một tham chiếu, client có thể tương tác với dịch vụ từ xa. Các chi tiết
liên quan đến mạng hoàn toàn được che dấu đối với những người phát triển ứng dụng-làm việc
với các đối tượng từ xa đơn giản như làm việc với các đối tượng cục bộ. Điều này có thể có
được thông qua sự phân chia hệ thống RMI thành hai thành phần, stub và skeleton.
Đối tượng stub là một đối tượng ủy quyền, truyền tải yêu cầu đối tượng tới server RMI.
Cần nhớ rằng mỗi dịch vụ RMI được định nghĩa như là một giao tiếp, chứ không phải là một
chương trình cài đặt, các ứng dụng client giống như các chương trình hướng đối tượng khác.
Tuy nhiên ngoài việc thực hiện công việc của chính nó, stub còn truyền một thông điệp tới một
dịch vụ RMI ở xa, chờ đáp ứng, và trả về đáp ứng cho phương thức gọi. Người phát triển ứng
dụng không cần quan tâm đến tài nguyên RMI nằm ở đâu, nó đang chạy trên nền nào, nó đáp
ứng đầy đủ yêu cầu như thế nào. Client RMI đơn giản gọi một phương thức trên đối tượng ủy
quyền, đối tượng này quản lý tất cả các chi tiết cài đặt.
GVHD: PGS.TS. Lê Văn Sơn TH: Trần Nhật Vinh & Hoàng Như Quỳnh
GẮN BÓ DỮ LIỆU TRÊN CÁC SERVER NGANG HÀNG Trang 11
Tại phía server, đối tượng skeleton có nhiệm vụ lắng nghe các yêu cầu RMI đến và
truyền các yêu cầu này tới dịch vụ RMI. Đối tượng skeleton không cung cấp bản cài đặt của
dịch vụ RMI. Nó chỉ đóng vai trò như là chương trình nhận các yêu cầu, và truyền các yêu
cầu. Sau khi người phát triển tạo ra một giao tiếp RMI, thì anh ta phải cung cấp một phiên bản
cài đặt cụ thể của giao tiếp. Đối tượng cài đặt này được gọi là đối tượng skeleton, đối tượng
này gọi phương thức tương ứng và truyền các kết quả cho đối tượng stub trong client RMI. Mô
hình này làm cho việc lập trình trở nên đơn giản, vì skeleton được tách biệt với cài đặt thực tế
của dịch vụ. Tất cả những gì mà người phát triển dịch vụ cần quan tâm là mã lệnh khởi tạo (để
đăng ký dịch vụ và chấp nhận dịch vụ), và cung cấp chương trình cài đặt của giao tiếp dịch vụ
RMI.
3. Kết nối và truy cập cơ sở dữ liệu :
Ngày nay khi đề cập đến việc xây dựng những chương trình máy tính, người ta thường
cài đặt dưới dạng giao diện làm việc trên Web.
Các chương trình làm việc không chỉ giới hạn trên một máy đơn lẽ mà còn phân tán trên
nhiều máy đặt ở những vị trí địa lý khác nhau.
Ví dụ từ client với Web browser, chúng ta có thể truy cập đến những server khác nhau
như:
• Server chứa cơ sở dữ liệu (Database server),
• Server quản trị Web (Web server),
• Server chứa chương trình ứng dụng (Application server).
Trong các Server kể trên, Server quản trị cơ sở dữ liệu đóng vai trò hết sức quan trọng.
Hầu hết các hệ thống thông tin đều cần đến Server này. Người ta có con số thống kê chỉ ra
rằng có khoảng trên 80% ứng dụng máy tính liên quan đến cơ sở dữ liệu.
Với Java, ngôn ngữ được phát triển nhằm hướng về với mạng Internet. Việc truy cập đến
cơ sở dữ liệu từ nhiều vị trí khác nhau là một việc không thể thiếu.
Sử dụng Java để kết nối với dữ liệu trên các hệ quản trị cơ sở dữ liệu cho phép tạo ra các
trang Web mang tính "động" hơn. Làm cho các trang văn bản Web không còn là các văn bản
với các liên kết như buổi ban đầu mới sáng tạo ra.
GVHD: PGS.TS. Lê Văn Sơn TH: Trần Nhật Vinh & Hoàng Như Quỳnh
GẮN BÓ DỮ LIỆU TRÊN CÁC SERVER NGANG HÀNG Trang 12
4. Xây dựng bài toán bằng Java RMI:
Chúng ta xây dựng bài toán nêu trên theo mô hình đối tượng phân tán RMI. Hệ thống gồm
nhiều Server chứa các chương trình và cơ sở dữ liệu giống nhau, cơ sở dữ liệu tại các Server
phải đảm bảo gắn bó, công việc này được thực hiện tự động mỗi khi Client cập nhật dữ liệu
vào một Server nào đó. Trên mỗi server chứa hai module xử lý chính:
• Module giao tiếp với Client. Module này có tên là ClientHandle, nó có chức năng nhận
dữ liệu từ các chương trình Client để lưu vào cơ sở dữ liệu.
Module xử lý danh sách di chuyển. Module này có tên MobListHandle, nó có chức năng
nhận dữ liệu từ module ClientHandle và cập nhật vào tất cả các server theo giải thuật danh
sách di chuyển mà chúng ta sẽ trình bày ở phần sau.
GVHD: PGS.TS. Lê Văn Sơn TH: Trần Nhật Vinh & Hoàng Như Quỳnh
GẮN BÓ DỮ LIỆU TRÊN CÁC SERVER NGANG HÀNG Trang 13
PHẦN III: DANH SÁCH DI CHUYỂN
1. Khái niệm:
Giao dịch là tập hợp của hàng loạt các sự kiện mà tất cả đều phải được hoàn tất đến
cùng hoặc không có bất cứ sự kiện nào được thực hiện. Và thông thường, khi triển khai thiết
kế trên các công cụ tạo web động, người ta có thể phân ra 2 loại giao dịch:
- Giao dịch CSDL (database transactions) được thiết kế ngay trong giai đoạn xây dựng
hệ quản trị các CSDL và thủ tục này có chức năng điều khiển giao dịch.
- Giao dịch cơ sở kết nối (connection-based transactions) cho phép xác định từ bên
ngoài CSDL, thường là chức năng của một đối tượng nào đó, ví dụ như đối tượng connection.
Trong phạm vi bài viết này, giao dịch cơ sở kết nối được nghiên cứu với các đối tượng
chủ yếu là Connection, SqlConnection và ODBConnection để tiến hành cập nhật thông tin.
Bảng 1 phản ảnh các phương thức quan trọng trong quá trình thiết kế các hệ thống cập
nhật CSDL bằng giao dịch với các thao tác tương ứng là bắt đầu, kết thúc, uỷ thác và khôi
phục.
Bảng 1. Các phương thức chuẩn trên giao dịch
TT Tên gọi Thuyết minh
1 BeginTransaction
<name>
Bắt đầu một giao dịch có tên là name trên một liên kết
2 End Ranh giới kết thúc giao dịch
3 Commit Khẳng định tất cả các thay đổi kể từ thời điểm bắt đầu
giao dịch
4 Rollback Khôi phục lại toàn bộ các thay đổi của giao dịch kể từ
khi nó bắt đầu thực hiện
2. Nội dung giải thuật danh sách di chuyển
Giải thuật danh sách di chuyển được trình bày như sau:
1. Khởi động các module trên server, gồm module MobListHandle, ClientHandle. Hệ
thống cho phép NSD cập nhật dữ liệu từ các chương trình Client.
2. Module ClientHandle nhận dữ liệu từ Client và thành lập danh sách di chuyển, sau đó
chuyển danh sách cho module MobListHandle.
GVHD: PGS.TS. Lê Văn Sơn TH: Trần Nhật Vinh & Hoàng Như Quỳnh
GẮN BÓ DỮ LIỆU TRÊN CÁC SERVER NGANG HÀNG Trang 14
3. MobListHandle mở ra một giao dịch, thực hiện truy vấn dữ liệu ngay trên cơ sở dữ liệu
cục bộ của mình. Sau khi kết thúc truy vấn, MobListHandle gửi danh sách di chuyển
đến Server kế tiếp trong hệ thống đa server.
4. Nếu Server cuối cùng trong danh sách di chuyển - nếu việc thực thi các câu lệnh truy
vấn trên CSDL cục bộ thành công thì chuyển sang trạng thái uỷ thác
(CommitTransaction) và trả danh sách kết quả khác null về cho Server liền trước nó.
Ngược lại trả về null và chuyển sang trạng thái khôi phục (RollbackTransaction).
5. Server nhận được danh sách kết quả từ Server sau nó trong danh sách di chuyển - nếu
kết quả khác null thì chuyển sang trạng thái uỷ thác (CommitTransaction) và gán kết
quả truy vấn cục bộ vào danh sách kết quả và trả về Server liền trước nó. Ngược lại,
chuyển sang trạng thái khôi phục (Rollback transaction) trả kết quả về null cho Server
liền trước.
6. Khi Server đầu tiên nhận được danh sách kết quả - nếu danh sách kết quả khác null thì
chuyển sang trạng thái uỷ thác (CommitTransaction) và trả danh sách kết quả cho
ClientHandle. Ngược lại, chuyển sang trạng thái khôi phục (Rollback transaction) và trả
kết quả về null cho ClientHandle.
7. ClientHandle nhận được danh sách kết quả và xử lý dựa trên danh sách kết quả.
GVHD: PGS.TS. Lê Văn Sơn TH: Trần Nhật Vinh & Hoàng Như Quỳnh
GẮN BÓ DỮ LIỆU TRÊN CÁC SERVER NGANG HÀNG Trang 15
GVHD: PGS.TS. Lê Văn Sơn TH: Trần Nhật Vinh & Hoàng Như Quỳnh
GẮN BÓ DỮ LIỆU TRÊN CÁC SERVER NGANG HÀNG Trang 16
PHẦN IV: VIẾT CHƯƠNG TRÌNH CẬP NHẬP CÁC D VÀ MONITORING
TRÊN CÁC SERVER NGANG HÀNG KHI CÁC CLIENT NHẬP DỮ LIỆU
Module Client: phần giao diện của module client là hiển thị form nhập dữ liệu. Module client
sau đó sẽ triệu gọi đối tượng từ xa trên hệ thống đa server để cập nhật dữ liệu vào cơ sở dữ
liệu.
(Hình – Giao diện nhập liệu trên Client )
Module Server: Module này đảm nhận toàn bộ các chức năng chính của giải thuật danh sách
di chuyển. Module này được cài trên các server khác nhau được đánh thứ tự từ 1 đến 3 . Mỗi
server thực hiện chức năng lắng nghe các yêu cầu từ module client cũng như từ các module
server khác nhằm triển khai giải thuật gắn bó dữ liệu là giải thuật danh sách di chuyển trình
bày ở trên.
Ngoài ra, để giám sát quá trình cập nhật dữ liệu của hệ thống, chúng ta còn xây dựng thêm
module giám sát hệ thống gọi là module monitor.
Module monitor hiện thị form dữ liệu phân tán tại tất cả các server trong hệ thống, sau đó hiện
thị tức thời tất cả dữ liệu cập nhật vào từng server, chúng ta có thể căn cứ vào các form dữ liệu
này để đánh giá tính gắn bó dữ liệu giữa các server trong hệ thống.
GVHD: PGS.TS. Lê Văn Sơn TH: Trần Nhật Vinh & Hoàng Như Quỳnh
GẮN BÓ DỮ LIỆU TRÊN CÁC SERVER NGANG HÀNG Trang 17
GVHD: PGS.TS. Lê Văn Sơn TH: Trần Nhật Vinh & Hoàng Như Quỳnh
GẮN BÓ DỮ LIỆU TRÊN CÁC SERVER NGANG HÀNG Trang 18
TÀI LIỆU THAM KHẢO
[1] Lê Văn Sơn, Hệ tin học phân tán, Nxb Đại học Quốc gia TP Hồ Chí Minh, 2002.
[2] Phạm Đình Hân, Lê Văn Sơn, Phát triển giải pháp kỹ thuật đảm bảo gắn bó dữ liệu
cho các hệ thống thông tin đào tạo trên mạng Internet/Intranet, Tạp chí Khoa học và
Công nghệ các Trường Đại học Kỹ thuật, số 46+47/2004, Hà Nội, 2004.
[3] Phạm Đình Hân, Lê Văn Sơn, Phát triển kỹ thuật MAONT bằng JSP đảm bảo gắn bó
dữ liệu trong các hệ thông tin đào tạo, Tạp chí Khoa học & Công nghệ, Đại học Đà
Nẵng, số 8.2004
[4] Lê Văn Sơn, Nguyễn Hữu Hải, Phát triển phương pháp đảm bảo gắn bó dữ liệutrong
điều kiện có sự cố của các hệ thống thông tin đăng ký trên mạng Internet/Intranet, Tạp
chí Khoa học và Công nghệ, Đại học Đà Nẵng, số 6.2004
GVHD: PGS.TS. Lê Văn Sơn TH: Trần Nhật Vinh & Hoàng Như Quỳnh