Tải bản đầy đủ (.doc) (20 trang)

tiểu luận môn lập trình mạng nâng cao viết chương trình cho hệ đa server với csdl gắn bó cho phép đăng ký tua du lịch từ xa với phương án lý tưởng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (312.02 KB, 20 trang )

MÔN: LẬP TRÌNH MẠNG NÂNG CAO ĐĂNG KÝ TUA DU LỊCH
ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA CÔNG NGHỆ THÔNG TIN
LẬP TRÌNH MẠNG NÂNG CAO
ĐỀ TÀI:
1.>Tên đề tài: Hãy viết chương trình cho hệ đa
Server với CSDL gắn bó cho phép đăng ký tua du lịch
từ xa với phương án lý tưởng.
2.>Xây dựng hệ thống 3 server và CSDL
3.>Xây dựng chương trình Client thực hiện đăng ký
trong điều kiện đảm bảo gắn bó thông tin
4.>Chống “trùng” và chống “ảo”
SINH VIÊN : NGUYỄN TÙNG SINH
LỚP : KHMT K16
GVHD : PGS.TS LÊ VĂN SƠN
ĐÀ NẴNG, 5/2012
Lời mở đầu
Nguyễn Tùng Sinh Trang 1
MÔN: LẬP TRÌNH MẠNG NÂNG CAO ĐĂNG KÝ TUA DU LỊCH
Ngày nay, công nghệ mạng máy tính và Internet đã phát triển mạnh, không
những cho chúng ta khai thác: Nguồn tài nguyên là những kho tư liệu về các lĩnh
vực, Mà còn có thể triển khai các hệ thống thông tin giải quyết những công việc đặt
ra trong hoạt động thường ngày.
Đối với các hệ 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 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 chia yêu
cầu xử lý dữ liệu cho nhiều máy nhằm tăng năng lực xử lý thông tin của hệ thống.
Môn học Lập Trình Mạng dưới sự giảng dạy của thầy giáo PGS.TS. Lê Văn
Sơn, Lớp Cao Học KHMT K16 đã hiểu thêm tầm quan trọng của vấn đề của môn


học. Vì vậy Tôi đã chọn tiểu luận:
1. Xây dựng hệ thống 3 server và CSDL
2. Xây dựng chương trình Client thực hiện đăng ký trong điều kiện đảm bảo gắn
bó thông tin
3. Chống “trùng” và chống “ảo”
Tiểu luận chắc chắn không tránh khỏi những thiếu sót, rất mong thầy và các
bạn học viên trong lớp cao học KHMT khóa 16 tận tình chỉ bảo và đóng góp ý kiến.
Cuối cùng, em xin chân thành cảm ơn những kiến thức quý giá mà thầy PGS.
TS. Lê Văn Sơn đã tận tình dạy bảo và hướng dẫn tiểu luận này.
Học viên thực hiện báo cáo: Nguyễn Tùng Sinh
Nguyễn Tùng Sinh Trang 2
MÔN: LẬP TRÌNH MẠNG NÂNG CAO ĐĂNG KÝ TUA DU LỊCH
CHƯƠNG I: CÁC VẤN ĐỀ ĐẶT RA CHO ỨNG DỤNG
I. Yêu cầu của chương trình :
Một công ty du lịch có 3 trung tâm lớn đặt tại: Hà Nội, T.p Hồ Chí Minh, và
Đà Nẵng, phục vụ cho việc tiếp nhận đăng ký và tổ chức các tua du lịch. Công ty
quyết định xây dựng một hệ thống ứng dụng cho phép đăng ký tua du lịch từ xa với 3
Server đặt tại trung tâm trên, các Server đều tổ chức một cơ sở dữ liệu riêng. Tuy
nhiên cấu trúc dữ liệu và dịch vụ của các server thì giống nhau. Với cơ sở hạ tầng về
mạng và thiết bị hệ thống hoạt động lý tưởng. Yêu cầu đặt ra là cần xây dựng hệ 3
server với Cơ sở dữ liệu “gắn bó”.
Trước tiên, ta giả sử rằng hệ thống viễn thông với đường truyền mà thông qua
đó các thông điệp được gửi và nhận có độ ổn định ở mức chấp nhận được và khả
năng hoạt động của các bộ vi xử lý với độ tin cậy cao.
Các đối tượng khác nhau của hệ được liên hệ với nhau bởi tập hợp các quan hệ
gọi là các ràng buộc toàn vẹn. Trạng thái của hệ thỏa mãn một tập các ràng buộc toàn
vẹn gọi là trạng thái gắn bó. Để xây dựng được một hệ đảm bảo tính gắn bó thông tin,
ta tìm hiểu kỹ hơn về giao dịch
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ực

quan, một giao dịch nhận một CSDL, thực hiện một hành động trên CSDL và sinh ra
mộ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ện giao 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.
1.1 Tính nguyên tử:
Nguyễn Tùng Sinh Trang 3
MÔN: LẬP TRÌNH MẠNG NÂNG CAO ĐĂNG KÝ TUA DU LỊCH
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ả đều
hoàn tất hoặc không một hành động nào hoàn tất.
1.2 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ói
cách khác, một giao dịch là một chương trình đúng đắn, ánh xạ CSDL từ trạng
thái nhất quán này sang trạng thái nhất quán khác
1.3 Tính biệt lập:
Biệt lập là tính chất của các giao dịch, đòi hỏi mỗi giao dịch phải luôn nhìn
thấy CSDL nhất quán. Nói cách khác, một giao dịch đang thực thi không thể làm
lộ ra các kết quả của nó cho những giao dịch khác đang cùng hoạt động trước
khi nó ủy thác.
1.4 Tính bền vững:
Tính bền vững muốn nói đến tính chất của giao dịch, đảm bảo rằng một khi
giao dịch ủy thác, kết quả của nó được duy trì cố định và không bị xóa ra
khỏi CSDL.
I.3 Các loại giao dịch:

I.3.1 Giao dịch phẳng:
Giao dịch phẳng có một khởi điểm duy nhất (Begin_transaction) và một điểm
kết thúc duy nhất (End_transaction).
I.3.2 Giao dịch lồng:
Đây là một mô hình giao dịch cho phép một giao dịch gồm chứa những
giao dịch khác với điểm bắt đầu và ủy thác riêng của chúng. Những giao dịch
như thế được gọi là giao dịch lồng (nested transaction). Những giao dịch được
đặt vào trong giao dịch khác thường được gọi là giao dịch con.
Các giao dịch lồng đã được chú ý như một khái niệm giao dịch tổng quát
hơ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
Nguyễn Tùng Sinh Trang 4
MÔN: LẬP TRÌNH MẠNG NÂNG CAO ĐĂNG KÝ TUA DU LỊCH
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ểu lồ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
đầu sau 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
ủy thá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ủa các giao dịch lồng đóng. Vì thế một giao dịch lồng mở cho phép bên
ngoài giao dị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ột
giao dịch. Thí dụ nếu giao dịch đăng ký tua du lịch được cài đặt như giao dịch
phẳ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ột tua 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 đợi cho đến khi kết thúc giao dịch đầu tiên mà trong đó nó gồm cả các công
việc đặt phò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ẽ cho phép giao dịch thứ hai truy xuất dữ liệu về tua ngay khi giao dịch con Tour
của 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ực hiệ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ạn chế 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ấp hơ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ất bại, chỉ giao dịch con chứa thao tác đó cần phải hủy bỏ và khởi động
lại.
Nguyễn Tùng Sinh Trang 5
MÔN: LẬP TRÌNH MẠNG NÂNG CAO ĐĂNG KÝ TUA DU LỊCH
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ân
tán, các nhà nghiên cứu đã đưa ra một số thuật toán, trong đó có giải thuật hai pha
tuyế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ác thao 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ên trao đổ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ện cá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à trong pha 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 động theo 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ẵn sà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à giao dị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 sang trạ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 được thà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 cho thà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àn cụ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 toán được mô tả trong hình 1:
Nguyễn Tùng Sinh Trang 6
1 2 3 4 5 N
prepare VC/VA VC/VA VC/VA VC/VA
GC/GA GC/GA GC/GA GC/GA GC/GA
Pha 1
Pha 2
MÔN: LẬP TRÌNH MẠNG NÂNG CAO ĐĂNG KÝ TUA DU LỊCH
Hình 1: Cấu trúc giao tiếp 2PC tuyến tính
VC: vote-commmit; VA: vote-abort; GC: global commit; GA: global-abort
II. Dự kiến mô hình khai thác ứng dụng :
Hiện tại công ty đã có hệ thống mạng hoạt động ổn định, kết nối giữa các trung
tâm đến các đại lý (clients). Với nhiệm vụ phát triển hệ thống được đặt hàng như trên
của công ty. Tôi dự kiến mô hình khai thác của hệ thống như sau:
III. Hướng giải quyết bài toán:
Các yêu cầu đặt ra của bài toán đòi hỏi việc phát triển hệ thống phải dựa trên
cơ sở lý thuyết về lập trình mạng cho ứng dụng và hệ cơ sở dữ liệu phân tán.
 Vận dụng mô hình lý thuyết về hệ phân tán :
 Hệ tin học phân tán (Distributed System) là hệ thống xử lý thông tin bao gồm
nhiều bộ xử lý hoặc bộ vi xử lý nằm tại các vị trí khác nhau được liên kết với
nhau thông qua phương tiện viễn thông dưới sự điều khiển thống nhất của một hệ
điều hành.
 đặc điểm của hệ:

• Không dùng chung hoặc chia sẻ bộ nhớ;
• Không sử dụng chung đồng hồ xung nhịp;
• Chúng liên lạc với nhau thông qua mạng truyền thông.
Nguyễn Tùng Sinh Trang 7
Xem dữ liệu tua (tourlist)
Đăng ký tua cho khách
huỷ đăng ký tua cho khách
Xoá bớt tua
Thêm Tua mới
Đại lý
(client)
Trung tâm
(admin)
Biểu đồ mô tả quan hệ giữa các tác nhân và các use case của hệ thống.
MÔN: LẬP TRÌNH MẠNG NÂNG CAO ĐĂNG KÝ TUA DU LỊCH
• Mỗi hệ xử lý có bộ xử lý, bộ nhớ riêng .
 Ứng dụng của hệ: Một trong những tư tưởng lớn của các hệ phân tán là phân
tán hóa các quá trình xử lý thông tin và thực hiện các công việc đó trên các trạm
xa nhau. Đó là cơ sở để xây dựng các hệ ứng dụng lớn như thương mại điện tử,
giáo dục điện tử, chính phủ điện tử. . .
 Vấn đề đặt ra cho ứng dụng: Trong tìm kiếm mô hình vận dụng, Tôi nhận thấy
tính tương tự của vấn đề đặt ra cho ứng dụng với Bài toán kinh điển “Bãi để xe ô
tô” được giải quyết khá hoàn chỉnh trong lý thuyết của Hệ tin học phân tán.
- Tài nguyên của hệ là số lượng đặt chỗ trên các tua
- SV - server với điều hành của trung tâm điều phối việc đặt chổ
- KH - có thể đăng ký tua hoặc huỷ việc đặt tua thông qua các đại lý
Việc đồng bộ hoá CSDL đăng ký tua tại các server có độ trễ nhất định và điều đó
dẫn đến tình huống :
- Trên thực tế, dữ liệu server nào đó cho biết không còn chỗ trống về một
tua nào đó nữa, trong khi trên 1 server khác lại vừa mới có một số khách

huỷ tua mà chưa cập nhật cho các server khác (ảo). Cũng có thể diễn ra
trường hợp là cùng một lúc các server giải quyết đăng ký vào cùng một
tua chỉ còn một chỗ trống (trùng) cũng do thiếu gắn bó thông tin
 Lập trình phân tán với Java:
 Một số vấn đề về ngôn ngữ Java
Trong những năm gần đây cùng với sự phát triển của Internet, ngôn ngữ Java
được nhắc đến khá nhiều trong các đề án Tin học. Java không còn chỉ là ngôn ngữ mà
được phát triển như một công nghệ với các công cụ như J2SE, J2EE, J2ME, v.v
Công nghệ Java được tổ chức thành các lĩnh vực chính như:
• J2SE (Core/Desktop)
• J2EE (Enterprise/Server)
• J2ME (Mobile/Wireless)
• Java Card
• Java Web Services
Nguyễn Tùng Sinh Trang 8
MÔN: LẬP TRÌNH MẠNG NÂNG CAO ĐĂNG KÝ TUA DU LỊCH
• XML
• Other Java Technologies
Bộ phận cấu thành của Java bao gồm:
• Ngôn ngữ lập trình Java
• Máy ảo Java – Java Virtual Machine (JVM), hay còn gọi là bộ thông
dịch Java.
• Thư viện phần mềm API (Application Programming Interface) và GUI
(Graphical User Interface)
Tính uyển chuyển của ngôn ngữ Java thể hiện qua việc chương trình biên dịch
Java chuyển đổi chương trình nguồn Java thành mã đối tượng, gọi là mã byte
(bytecodes) - tập tin có tên quy ước với phần mở rộng là .class. Sau đó, máy ảo Java
có trên máy điều khiển để thực thi.
Bytecode là mã trung gian được tạo ra bởi chương trình biên dịch Java.
Mã máy chỉ thực hiện trên máy tính mà nó được biên dịch, trong khi bytecode

có thể thực hiện trên bất kỳ hệ thống máy tính nào có trình điều khiển Java. Ngoài ra,
tính uyển chuyển làm tăng khả năng tái sử dụng các lớp được tạo ra; các lớp cho phép
thực hiện kỹ thuật kết nối động (dynamic binding) khi chương trình thực thi.
Nguyễn Tùng Sinh Trang 9
MÔN: LẬP TRÌNH MẠNG NÂNG CAO ĐĂNG KÝ TUA DU LỊCH
 Kiến trúc và kỹ thuật RMI:
Ứng dụng phân tán trong Java thông qua cơ chế RMI (Remote Method
Invocation) 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.
Nguyễn Tùng Sinh Trang 10
RMI Registry
RMI Client
RMI Server
MÔN: LẬP TRÌNH MẠNG NÂNG CAO ĐĂNG KÝ TUA DU LỊCH
Kiến trúc của hệ thống RMI bao gồm các tầng như sau:
+Tầng ứng dụng: bao gồm ứng dụng server và client.
- Server:
• Hiện thực giao diện remote mà client dùng

• Xuất (Exports) đối tượng mà các phương thức của nó được triệu gọi từ
xa (bằng cách tạo lớp là UnicastRemoteObject)
• Đăng ký chính nó với độ đăng ký RMI.
- Client:
• Nhận tham chiếu đến đối tượng
• Chuyển các tham chiếu như những giao diện từ xa.
• Triệu gọi các hành vi của đối tượng
+ Tầng ủy quyền: bao gồm
- Client (gọi là Stub)
- Server (gọi là Skeleton)
+ Tầng truy cập từ xa: Sự trừu tượng hóa giữa tầng ủy quyền và tầng vận chuyển.
+ Tầng vận chuyển: Quản lý sự giao tiếp giữa các host với nhau trên mạng, dựa
trên kết nối TCP/IP. Thực chất thực hiện kết nối giữa các máy ảo Java.
Các bước để hiện thực ứng dụng phân tán trên hệ thống RMI:
– Mô tả giao diện (interface) của đối tượng cùng với các hành vi cần sử
dụng. Giao diện này được đặt trên cả client và server. Giao diện này có thể là
Remote hay Serializable.
Nguyễn Tùng Sinh Trang 11
MÔN: LẬP TRÌNH MẠNG NÂNG CAO ĐĂNG KÝ TUA DU LỊCH
– Hiện thực nội dung của giao diện ở trên trong một lớp cụ thể đặt ở
server.
– Sử dụng tiện ích rmic của JDK để tạo các lớp Stub đặt trên client và
Skeleton trên server.
– Xây dựng lớp để thực hiện trên server, trong lớp này có sử dụng hành vi
exportObject() của lớp UnicastRemoteObject để báo cho máy ảo Java biết đối
tượng được truy cập đến từ xa bởi các đối tượng khác.
– Sử dụng các phương thức trên máy server từ các lớp trên máy client.
Như vậy, trong quá trính thực hiện có 3 máy ảo Java hoạt động
– Quản lý bộ đăng ký (rmiregistry).
– Thực thi đối tượng nhằm xuất khẩu đối tượng ra ngoài.

– Thực thi chương trình của client.
Cơ chế làm việc của chương trình trên client và server khi đã được đăng ký bởi
bộ đăng ký rmiregistry như sau:
– Máy ảo Java (JVM) trên máy server dùng hàm bind() hoặc rebind() của
lớp Naming để đăng ký với rmiregistry.
– Chương trình client dùng hàm Naming.lookup() để yêu cầu bộ đăng ký
cho biết tham chiếu đến đối tượng.
– Bộ đăng ký rmiregistry trả về tham chiếu đối tượng tồn tại trên máy
server.
– Trên cơ sở tham chiếu của đối tượng do hàm lookup() trả về, chương
trình client sử dụng để triệu gọi hành vi của đối tượng trên máy server.
 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.
Nguyễn Tùng Sinh Trang 12
MÔN: LẬP TRÌNH MẠNG NÂNG CAO ĐĂNG KÝ TUA DU LỊCH
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.
Các trình điều khiển JDBC
Trên mô hình client/server chúng ta cần một database client để truy cập đến cơ
sở dữ liệu được quản lý bởi một database server.
Các database client chính là những chương trình do người sử dụng viết, hoặc
một hệ quản trị cơ sở dữ liệu nào đó người sử dụng dùng trong việc truy vấn dữ liệu.
Database server này chính là một hệ quản trị cơ sở dữ liệu (Database
Management System - DBMS). Một database client chỉ truy cập đến databse server
tương ứng với nó.
Tuy nhiên, do ngày càng có nhiều Database server khác nhau, chẳng hạn như
Oracle, DB2, PostgreSQL, SQL Server, MySQL, mSQL, Informix, FoxPro, Access,
v.v
Nên việc có một database client để truy cập đến bất kỳ database server là cần
thiết. Java giúp giải quyết vấn đề này khá dễ dàng.
Nguyễn Tùng Sinh Trang 13
MÔN: LẬP TRÌNH MẠNG NÂNG CAO ĐĂNG KÝ TUA DU LỊCH
Hãng Microsoft cũng đã đưa ra một chương trình điều khiển chuẩn để kết nối
giữa database client với một database server bất kỳ làm việc trên môi trường
Windows. Gọi đó là ODBC Driver (Open Database Connectivity).
Trình điều khiển này trên Windows gọi là ODBC Data Source Administrator, để
quản trị các cơ sở dữ liệu.
Trong database client có thể kết nối đến mà không phải quan tâm đó là hệ quản
trị cơ sở dữ liệu nào.
Chính vì vậy mỗi hệ quản trị cơ sở dữ liệu phải cung cấp một ODBC Driver
tương ứng, để qua đó người sử dụng có thể viết chương trình truy cập đến các bảng
của cơ sở dữ liệu được tạo ra.
Do Java có thể làm việc trên các nền tảng hệ điều hành khác nhau. Nên trình
điều khiển ODBC không thể đáp ứng được.
Chính vì vậy, hãng Sun phải đưa ra một trình điều khiển tương tự ODBC gọi là

JDBC (Java Database Connectivity) để cho phép từ database client được viết bằng
Java có thể truy cập đến một cơ sở dữ liệu tùy ý nào đó.
Hãng Sun đã phân ra bốn loại trình điều khiển JDBC khác nhau:
Loại I: JDBC-ODBC bridge plus ODBC Driver, đây là trình điều khiển mang
tính cầu nối giữa trình ứng dụng Java và trình điều khiển ODBC của Microsoft.
Trình điều khiển này được hiện thực bằng bytecode, trong khi trình điều khiển
CSDL là nhị phân nên không dùng được trên các trình duyệt Web.
Chương trình ứng dụng Java trong trường hợp này chỉ thực thi trên máy với
Windows.
Loại II: Trình điều khiển JDBC truy cập cơ sở dữ liệu thông qua giao thức riêng
của hệ quản trị cơ sở dữ liệu (Native - API partly - Java Driver) như Oracle, Sybase,
Informix, DB2 hay một hệ quản trị cơ sở dữ liệu nào đó.
Trình điều khiển này sử dụng phần mã nhị phân làm driver của hệ quản trị
CSDL, nên phần mã nhị phân phải được nạp vào máy client khi hoạt động.
Loại III: JDBC-Net pure Java Driver, trình điều khiển hoàn toàn bằng Java dùng
giao thức chuẩn.
Nguyễn Tùng Sinh Trang 14
MÔN: LẬP TRÌNH MẠNG NÂNG CAO ĐĂNG KÝ TUA DU LỊCH
Với trình điêu khiển này, có thể dùng nó để truy cập đến bất kỳ một cơ sở dữ
liệu nào như là một cầu nối giữa database client với một database server (tương tự
loại I).
Nhưng đây là trình điều khiển hoàn toàn bằng Java (bytecode) nên có thể nạp để
thực thi trên Web vào thời điểm ứng dụng thực thi. Có thể dùng để truy cập qua Web
browser
Loại IV: Trình điều khiển hoàn toàn bằng Java dùng giao thức đặc thù (Native
Protocol pure Java Driver).
Trình điều khiển náy tương tự loại II, nhưng được viết hoàn toàn bằng Java
(bytecode), nên không cần phải có bất kỳ chương trình nào được nạp trước khi ứng
dụng thực thi.
Chính vì vậy có thể triển khai trên hệ thống sử dụng Web browser làm database

client.
Trình điều khiển này thường được dùng khi cần kết nối với các hệ cơ sở dữ liệu
chuyên nghiệp như mSQL, MySQL, PostgreSQL, Oracle, v.v trong việc xây dựng
các hệ thống thông tin đa tầng.
Nguyễn Tùng Sinh Trang 15
MÔN: LẬP TRÌNH MẠNG NÂNG CAO ĐĂNG KÝ TUA DU LỊCH
CHƯƠNG II: XÂY DỰNG CHƯƠNG TRÌNH
Hệ thống gồm nhiều Server chứa các chương trình và cơ sở dữ liệu tại các Server
như sau:
- Server 1: Lưu trữ database về Tour, file database là Tour gồm hai bảng Tour,
DangKy, DangKy_DichVu
- Server 2: Lưu trữ database về Hotel, file database là KhachSan gồm hai bảng
Khach_San, Tour_KhachSan, Dich_Vu, DichVu_KhachSan
- Server 3: Lưu trữ database về Transport, file database là PhuongTien gồm hai
bảng Phuong_Tien, Tour_PhuongTien
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à MGT, 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 MXL, 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.
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 MXL, MGT. Hệ thống cho
phép NSD cập nhật dữ liệu từ các chương trình Client.
2. Module MGT 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 MXL.
3. MXL 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, MXL gửi danh sách di chuyển đến
Server kế tiếp trong hệ thống đa server.
Nguyễn Tùng Sinh Trang 16
MÔN: LẬP TRÌNH MẠNG NÂNG CAO ĐĂNG KÝ TUA DU LỊCH
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 MGT. 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 MGT.
7. MGT nhận được danh sách kết quả và xử lý dựa trên danh sách kết quả.
Nguyễn Tùng Sinh Trang 17
MÔN: LẬP TRÌNH MẠNG NÂNG CAO ĐĂNG KÝ TUA DU LỊCH
KẾT LUẬN
Một trong các tiêu chí đặt ra trong việc phát triển các chương trình ứng dụng
hiện nay, là phải hoạt động hiệu quả trên môi trường mạng, đáp ứng được các yêu
cầu của đối tượng sử dụng. Đòi hỏi các nhà thiết kế hệ thống, người lập trình phải
có tư duy và khả năng và nắm bắt kịp thời các công nghệ ứng dụng trong lập trình
mạng.
Qua quá trình nghiên cứu bài giảng của PGS.TS Lê Văn Sơn và các tài liệu
liên quan, áp dụng thực hiện tiểu luận, bản thân Tôi được hiểu thêm bản chất của hệ
tin học phân tán, cơ chế hoạt động của hệ thống đa server, cơ chế triệu gọi từ xa, tư

duy lập trình mạng, . . .
Nội dung nghiên cứu của đề tài cũng có thể mở rộng dụng cho nhiều bài toán
đặt ra trong thực tế phục vụ việc thiết kế và xây dựng các hệ thống giao tiếp điện tử
như: đăng ký đào tạo qua mạng, quản lý hoạt động kinh doanh qua mạng, đăng ký
công tác qua mạng, . . .
Do một số hạn chế của bản thân: Lần đầu tiếp cận với kỹ thuật lập trình mạng,
bị chi phối bởi tư duy lập trình thủ tục cho ứng dụng trên máy đơn. Nên kết quả
nghiên cứu chưa thoả mãn mong muốn đặt ra của bản thân và cũng có lẽ chưa làm
hài lòng Thầy giáo đã tận tình chỉ dạy. Mong nhận được sự thông cảm của Thầy giáo
và các bạn.
Xin chân thành cảm ơn !
Nguyễn Tùng Sinh Trang 18
MÔN: LẬP TRÌNH MẠNG NÂNG CAO ĐĂNG KÝ TUA DU LỊCH
MỤC LỤC
CHƯƠNG I: CÁC VẤN ĐỀ ĐẶT RA CHO ỨNG DỤNG 3
I. Yêu cầu của chương trình : 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. 4. Giải thuật hai pha tuyến tính: 6
II. Dự kiến mô hình khai thác ứng dụng : 7
III. Hướng giải quyết bài toán: 7
 Vận dụng mô hình lý thuyết về hệ phân tán : 7
 Lập trình phân tán với Java: 8
 Kiến trúc và kỹ thuật RMI: 10
 Kết nối và truy cập cơ sở dữ liệu : 12
CHƯƠNG II: XÂY DỰNG CHƯƠNG TRÌNH 16
NỘI DUNG GIẢI THUẬT DANH SÁCH DI CHUYỂN: 16
KẾT LUẬN 18
TÀI LIỆU THAM KHẢO 20

Nguyễn Tùng Sinh Trang 19
MÔN: LẬP TRÌNH MẠNG NÂNG CAO ĐĂNG KÝ TUA DU LỊCH
TÀI LIỆU THAM KHẢO

[1] TS. Lê Văn Sơn, Hệ tin học phân tán, Nhà xuất bản Đại học quốc gia TP. Hồ
Chí Minh.
[2] Nguyễn Phương Lan, Hoàng Đức Hải, Java lập trình mạng, Nhà xuất bản Giáo
dục, 2001
[3] Lê Văn Sơn, Nguyễn Xuân Tiến, Nghiên cứu phát triển giải pháp hiệu quả khai
thác luật kết hợp trong cơ sở dữ liệu phân tán
[4] Lê Văn Sơn, Phạm Đình Hâ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
[5] RM
Nguyễn Tùng Sinh Trang 20

×