TIỂU LUẬN LẬP TRÌNH MẠNG VIẾT CHƯƠNG TRÌNH ÁP DỤNG THUẬT TOÁN DUY TRÌ GẮN BÓ, TRÁNH BẾ TẮC VÀ THIẾU THỐN VÔ HẠN HAI PHA TRONG HỆ ĐA SERVER (có kèm theo code) Lời mở đầu 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. Nội dung chủ yêu trình bày trong báo cáo này tập trung vào xây dựng chương trình đảm bảo gắn dữ liệu cho hệ thống đa server. Chương trình này được thiết kế và xây dựng dựa trên các điều kiện sau: Về mặt công cụ: Sử dụng ngôn ngữ lập trình mạng JAVA của Sun Micro System là JDK 1.6, đồng thời khai thác bộ thư Iện hỗ trợ lập trình phân tán được xây dựng sẳn trong bộ ngôn ngữ này là RMI. Về mặt thuật toán: Thuật toán sử dụng trong chương trình này là “THUẬT TOÁN DUY TRÌ GẮN BÓ, TRÁNH BẾ TẮC VÀ THIẾU THỐN VÔ HẠN HAI PHA TRONG HỆ ĐA SERVER”. Nội dung chủ yếu của thuật toán chủ được tham khảo từ báo cáo khoa học của Phạm Đình Hân và Lê Văn Sơn đăng trên Tạp chí Khoa học Công nghệ, số 4647(2004) và giáo trình Hệ Tin học Phân tán của PGS TS Lê Văn Sơn. Thuật toán này được cài đặt lại bằng ngôn ngữ JAVA RMI chạy trên nhiều server. Trong phạm I của tiểu luận này, chương trình được cài đặt demo trên 3 server, tuy nhiên chúng ta có thể cài đặt trên hệ thống gồm nhiều server. Chương trình cũng bao gồm một công cụ gọi là module monitor nhằm giám sát Việc cập nhật dữ liệu giữa các server, nhằm đánh giá tính gắn bó dữ liệu giữ liệu giữa các server với nhau. Cuối cùng, tôi mong muốn nhận được các ý kiến đóng góp, bổ sung của quý thầy và các bạn. Xin chân thành cảm ơn Phần I: Lý thuyết I.1 Đặt vấn đề: Bây giờ, ta hãy nghiên cứu một ví dụ cụ thể về Việc quản lý các tài khoản của một ngân hàng. Mỗi một người mở tài khoản tại ngân hàng sẽ được lưu trữ trong 1 bản ghi của CSDL. Các trường của bản ghi này bao gồm họ và tên, địa chỉ, điện thoại và một khoá duy nhất (mã số) cho người đó. Mã số đóng vai trò con trỏ đến CSDL khác chứa các lần thu tiền vào và rút tiền ra từ tài khoản. Cuối cùng, ta phải có CSDL chứa số dư. Số dư là số tiền có trong tài khoản ở thời điểm xem xét của từng người gửi tiền. Trạng thái của số dư trong tài khoản được khống chế ở mức xác định ví dụ như số dư không được N cho trước. Điều đó cũng đồng nghĩa với Việc đảm bảo trong tài khoản của NSD không bao giờ có giá trị bằng 0 hay giá trị âm. Do vậy, để nghiên cứu, ta cần giả định một số quy tắc nhất định cho Việc hoạt động của hệ. Các quy tắc này thể hiện trong bảng sau đây : STT Quy tắc 1 Chỉ có một loại phép toán (hay giao dịch) duy nhất là chuyển khoản từ tài khoản này sang tài khoản khác. 2 Hệ có số lượng tài khoản cố định. 3 Không có trao đổi nào khác diễn ra ngoài ngân hàng. 4 Ngân hàng không được phép tiết lộ bí mật về số dư của khách. Xét các quy tắc có tính chất điều kiện như trên, sau khi thực hiện xong hoàn toàn một giao dịch nào đó, hệ quản lý giao dịch cần phải đảm bảo hai đặc tính sau đây : STT Ký hiệu Đặc tính 1 P1 Tổng tất cả các số dư phải là một hằng số. 2 P2 Số dư cho một tài khoản là đại lượng 0. Hai đặc tính này gọi là đặc tính trạng thái tổng quát của CSDL (hay là các ràng buộc toàn vẹn của hệ). Ta nói rằng trạng thái của hệ được gắn bó, nếu hệ mang hai đặc tính vừa nêu. Phép toán chuyển khoản thể hiện bằng cách trừ đi một giá trị P nào đó ở một tài khoản và cộng chính giá trị đó vào tài khoản khác. Nếu ta ký hiệu A là số dư tài khoản bị trừ đi và B là số dư tài khoản được cộng vào, thì chương trình thể hiện giao dịch này có thể Iết như sau : Nếu A >= P thì A := A P (a) B := B + P (b) nếu không {Không cập nhật các tài khoản} Kết thúc nếu
Trang 1ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN
TIỂU LUẬN LẬP TRÌNH MẠNG VIẾT CHƯƠNG TRÌNH ÁP DỤNG THUẬT TOÁN DUY TRÌ GẮN BÓ, TRÁNH BẾ TẮC VÀ THIẾU THỐN VÔ HẠN HAI PHA TRONG HỆ ĐA SERVER
GVHD: PGS.TS LÊ VĂN SƠN
SVTH : ĐOÀN CƯỜNG
VÕ LÊ ĐỨC HUY LỚP : KHOA HỌC MÁY TÍNH
Đà Nẵng tháng 03- 2010
Lời mở đầu
Trang 2Như 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.
Nội dung chủ yêu trình bày trong báo cáo này tập trung vào xây dựng chương trình đảm bảo gắn dữ liệu cho hệ thống đa server Chương trình này được thiết
kế và xây dựng dựa trên các điều kiện sau:
Về mặt công cụ: Sử dụng ngôn ngữ lập trình mạng JAVA của Sun Micro System
là JDK 1.6, đồng thời khai thác bộ thư Iện hỗ trợ lập trình phân tán được xây dựng sẳn trong bộ ngôn ngữ này là RMI.
Về mặt thuật toán: Thuật toán sử dụng trong chương trình này là “THUẬT TOÁN DUY TRÌ GẮN BÓ, TRÁNH BẾ TẮC VÀ THIẾU THỐN VÔ HẠN HAI PHA TRONG HỆ ĐA SERVER” Nội dung chủ yếu của thuật toán chủ
được tham khảo từ báo cáo khoa học của Phạm Đình Hân và Lê Văn Sơn đăng trên Tạp chí Khoa học Công nghệ, số 46-47(2004) và giáo trình Hệ Tin học Phân tán của PGS TS Lê Văn Sơn Thuật toán này được cài đặt lại bằng ngôn ngữ JAVA RMI chạy trên nhiều server.
Trong phạm I của tiểu luận này, chương trình được cài đặt demo trên 3 server, tuy nhiên chúng ta có thể cài đặt trên hệ thống gồm nhiều server Chương trình cũng bao gồm một công cụ gọi là module monitor nhằm giám sát Việc cập nhật
dữ liệu giữa các server, nhằm đánh giá tính gắn bó dữ liệu giữ liệu giữa các server với nhau.
Cuối cùng, tôi mong muốn nhận được các ý kiến đóng góp, bổ sung của quý thầy
và các bạn.
Xin chân thành cảm ơn!
Trang 3Phần I: Lý thuyết
I.1 Đặt vấn đề:
Bây giờ, ta hãy nghiên cứu một ví dụ cụ thể về Việc quản lý các tài khoản của mộtngân hàng Mỗi một người mở tài khoản tại ngân hàng sẽ được lưu trữ trong 1 bản ghicủa CSDL Các trường của bản ghi này bao gồm họ và tên, địa chỉ, điện thoại và mộtkhoá duy nhất (mã số) cho người đó Mã số đóng vai trò con trỏ đến CSDL khác chứacác lần thu tiền vào và rút tiền ra từ tài khoản Cuối cùng, ta phải có CSDL chứa số dư
Số dư là số tiền có trong tài khoản ở thời điểm xem xét của từng người gửi tiền Trạngthái của số dư trong tài khoản được khống chế ở mức xác định ví dụ như số dư khôngđược N cho trước Điều đó cũng đồng nghĩa với Việc đảm bảo trong tài khoản củaNSD không bao giờ có giá trị bằng 0 hay giá trị âm
Do vậy, để nghiên cứu, ta cần giả định một số quy tắc nhất định cho Việc hoạt độngcủa hệ Các quy tắc này thể hiện trong bảng sau đây :
1 Chỉ có một loại phép toán (hay giao dịch) duy
nhất là chuyển khoản từ tài khoản này sang tài
khoản khác
2 Hệ có số lượng tài khoản cố định
3 Không có trao đổi nào khác diễn ra ngoài ngân
bị trừ đi và B là số dư tài khoản được cộng vào, thì chương trình thể hiện giao dịch này
có thể Iết như sau :
Trang 4Nếu A >= P thì
A := A - P (a)
B := B + P (b)
nếu không
<Xử lý theo kiểu séc không có tiền bảo chứng>
{Không cập nhật các tài khoản}
Kết thúc nếu
Theo thuật toán thể hiện bằng đoạn chương trình trên, ta cần lưu ý hai điểm sauđây :
1 Giả sử rằng ta thực hiện đồng thời hai séc trích từ A hay rót vào B Việc cập nhật
thông tin trên mỗi tài khoản không thể tiến hành theo kiểu tùy ý mà phải đảm bảo loạitrừ tương hổ ở mức tài khoản Việc loại trừ đó có thể thực hiện theo các kiểu khácnhau, một trong các kiểu đơn giản nhất là loại trừ ở mức toàn CSDL và hệ quả là loại
bỏ các phép song song Có thể áp dụng loại trừ ở mức từng tài khoản riêng biệt
2 Giả sử rằng bộ xử lý thực hiện giao dịch bị rơi vào trạng thái không làm Việc
được tại thời điểm giữa a và b Tài khoản A đã được trừ trong khi B còn chưa được cộng Nói cách khác, đặc tính P1 không thể đảm bảo được gì hơn, nếu dừng lại ở đây.
Ta cần phải bổ sung thêm cho hệ một đặc tính nữa nhằm vào điều vừa nêu Đó là sau khi thực hiện một giao dịch hoặc là tất cả các cập nhật đều được tiến hành hoặc là trạng thái các tài khoản không thay đổi.
Như vậy, lưu ý thứ 2 cho phép ta đảm bảo được tính gắn bó dữ liệu trong điềukiện có sự cố Đó chính là đòi hỏi quan trọng đối với toàn hệ trong Việc truy cập thôngtin
Bây giờ, ta giới thiệu một loại giao dịch mới Đó là giao dịch kèm theo tỷ lệ lợi
nhuận tiền gửi t có nghĩa là sau một khoản thời gian nào đó số dư này được tính tăng
lên bằng cách cộng số dư với lợi nhuận ngân hàng
Ta ký hiệu U - giao dịch mới
T - các giao dịch chuyển khoản
và, bây giờ, các ràng buộc toàn vẹn của hệ là :
3 P'3 Thực hiện n giao dịch loại U nâng tổng
của các tài khoản bằng (1 + t)n.
Cần lưu ý rằng nếu ta cho phép các giao dịch loại U và T hoạt động song song, thì
có nguy cơ phá vở đặc tính P'3
Ví dụ :
Hãy xem xét một hệ bao gồm hai tài khoản A và B, trong đó có hai giao dịch được
thực hiện theo kiểu tương tranh nhau :
Trang 5Giao dịch T Giao dịch U
A := A - P
B := B + P A := (1 + t) x A B := (1 + t) x B
và giả sử rằng đầu tiên ta phải kiểm tra điều kiện A P.
Nếu trình tự thực hiện của tác động sơ đẳng của hai giao dịch như sau :
A := A – P
A := (1 + t) x A
B := (1 + t) x B
B := B + P thì điều kiện P'3 không được tôn trọng.
Bây giờ, ta sẽ thực hiện bằng những giá trị số cụ thể Nếu trước khi thực hiệnhai giao dịch A = 1 000, B = 2 000 và nếu
t = 0.01 và P = 500, thì sau khi thực hiện chúng ta có A + B = 3300, trong khi đó ta lại
có A + B = 3250 Ta đã làm sai giá trị vốn cần có của chúng.
Ví dụ trên cho ta thấy một điều quan trọng khi thực hiện nhiều giao dịch songsong có thể dẫn hệ thống đến trạng thái không gắn bó Do vậy, cần phải có các giảipháp khắc phục tình hình đó và đây cũng chính là nội dung cốt lõi mà ta sẽ nghiên cứuliền sau đây
I.2 Sự gắn bó thông tin
I.2.1 Các điều kiện giả định và thực tế
Ta có một tập hợp thông tin nào đó có thể được truy cập bởi một tập hợp cáctiến trình Số lượng các đối tượng thông tin có thể truy cập được và số lượng các tiếntrình có nhu cầu thông tin là con số cố định Hệ này phát triển rời rạc theo thời gian;giữa các điểm quan sát (hay còn gọi là điểm xác định), ta có thể nhận biết được trạngthái thực của chúng, có nghĩa là các giá trị của các đối tượng và ngữ cảnh thực hiện củacác tiến trình Hệ kiểu như vậy hoạt động với độ ổn định tuyệt vời
Các điều kiện giả định này so với hệ thực tế có những điểm khác nhau căn bảnsau đây :
1 Các đối tượng và các tiến trình có thể được tạolập và huỷ bỏ có tính chất động trong suốt quá
trình tồn tại của hệ
2
Các đối tượng và các tiến trình có thể được phân
tán trên các trạm khác nhau liên hệ với nhau qua
hệ thống Iễn thông Do vậy, ta không thể xác định
trạng thái thời điểm của hệ vì lý do độ trễ đường
truyền giữa các trạm và tính không tương thích
giữa các điểm quan sát trong các trạm đó Để hiểu
Trang 6chi tiết vấn đề này, ta hãy tham khảo tài liệu về
mạng máy tính và các hệ thông mở
3 Hệ thống Iễn thông và các tiến trình là các đối
tượng có thể xảy ra sự cố kỹ thuật
Ta sẽ trình bày các thuật ngữ, các khái niệm và diễn giải có liên quan mật thiết đến cácđặc điểm vừa nêu
I.2.2 Tác động và giao dịch
Các đối tượng khác nhau của hệ không phải là các đối tượng độc lập nhau,chúng 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 Các ràngbuộc này thể hiện sâu sắc các đặc tính riêng biệt của hệ
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ó.
Các nhà thiết kế và vận hành hệ mong muốn rằng Việc thực hiện các tiến trìnhphải duy trì cho được hệ trong trạng thái gắn bó Để chính xác hóa đặc tính này, cầnphải lưu ý là trạng thái của hệ chỉ được xác định ở mức quan sát cho trước
Ta quan tâm đến hai mức quan sát :
thống
Mỗi giao dịch được cấu tạo từ một dãy
các tác động được thể hiện như sau Nếu
2 tác động A và B thuộc 2 giao dịch khác
nhau được thực hiện bởi 2 tiến trình, thìhiệu ứng tổng quát của chúng sẽ là hoặc
hiệu ứng của dãy (A; B) hoặc là (B; A).
Ở mức hệ thống, ta có thể nói rằng các tác động là phần tử nhỏ nhất không thể chiacắt được nữa
Trang 7hệ được bảo toàn, theo định nghĩa, bằng Việc thực hiện riêng biệt từng giao dịch Do
vậy, nó cũng được bảo toàn trong chế độ thực hiện tuần tự của M.
Nếu, vì lý do hiệu quả, nhiều giao dịch được thực hiện song song, thì sự gắn bókhông còn bảo đảm được nữa; ta cũng đã gặp trong ví dụ I.1
Một yêu cầu khác rất quan trọng là trong quá trình thực hiện hệ phải đảm bảocho các tác động không bị ngắt quảng
Trong các phần tiếp theo sau đây, ta sẽ nghiên cứu các điều kiện thực hiện cácgiao dịch song song mà vẫn tôn trọng các yêu cầu của ràng buộc toàn vẹn
I.2.3 Trật tự hóa các tác động
Trở lại với tập hợp giao dịch M = {T1, T2, , Tn} đã được xác định trong I.2.2.
Mỗi một giao dịch được cấu tạo từ một dãy các tác động Bằng các tác động không
chia xẻ được này, toàn bộ Việc thực hiện của tập hợp các giao dịch M bởi một tập hợp các tiến trình tương tranh là tương đương với Việc thực hiện một dãy S các tác động thuộc các giao dịch này, như S = (a1, a2, , an) chẳng hạn Trong trật tự tuân thủ trật tự
nội tại của từng giao dịch, dãy này bao gồm tất cả các tác động cấu tạo nên các giao
dịch M; mỗi một tác động chỉ xuất hiện một và chỉ một lần Một dãy như vậy gọi là trật tự hóa của tập hợp các giao dịch M.
Ví dụ :
Cho T1 = (a11, a12, a13 , a 14) và T1 = (a21, a22, a23) Một trật tự hóa (T1, T2) được thể
hiện ở ví dụ sau đây :
S = a 21, a11, a12, a22, a13, a23, a14
Trong số các trật tự hóa của một tập hợp các giao dịch, điều rất quan trọng là phảitách ra cho được những cái phục vụ trạng thái gắn bó dữ liệu và chúng được gọi là trật
tự hóa gắn bó
Đến đây, tuy ta chưa có dịp làm quen với các đặc tính tổng quát của trật tự hóa,
nhưng đã nắm được một đặc tính quan trọng là các trật tự hóa tương ứng với Việc thực hiện tuần tự của tập hợp các giao dịch hay còn gọi ngắn gọn là trật tự hóa tuần tự.
Nếu ta nắm được các đặc trưng của các trật tự hóa tương đương với một trật tự hóa
tuần tự có nghĩa là cùng có tác dụng như trật tự hóa tuần tự, thì ta đã có được điều kiện
đủ của sự gắn bó.
Đó chính là tiêu chuẩn tương đương mà ngay bây giờ ta sẽ phải thành lập
Ví dụ 1 :
Trở lại với ví dụ trong phần I.1 và xem xét 3 trật tự hóa có thể là S1, S2 và S3.
Trật tự hoá S1 thể hiện bằng hình vẽ I-1 sau đây :
A:=A-P A:=(1+t) x A B:=(1+t) x B B:=B+P Giao dÞch lo¹i T
H×nh VI-1 TrËt tù ho¸ S1 Giao dÞch lo¹i U
Hình vẽ I-2 thể hiện trật tự hoá S2 :
Trang 8
A:=A-P A:=(1+t) x A
B:=(1+t) x B B:=B+P Giao dÞch lo¹i T
H×nh VI-2 TrËt tù ho¸ S2 Giao dÞch lo¹i U
và S3 thể hiện một trật tự hoá như sau :
A:=A-P
A:=(1+t) x A B:=(1+t) x B
B:=B+P Giao dÞch lo¹i T
H×nh VI-3 TrËt tù ho¸ S3 Giao dÞch lo¹i U
Ta nhận thấy dễ dàng là S2 có cùng hiệu ứng với trật tự hóa tuần tự S3, trong khi
đó S1 lại khác Trong S2 và S3 các cập nhật lần lượt của A và B đều được thực hiện theo cùng một trật tự, còn trong S1 trật tự cập nhật B bị đảo ngược.
Ví dụ này cho ta thấy sự quan trọng của Việc đảm bảo trật tự khi cập nhật thông tin.
Sự bảo toàn trật tự cập nhật (ví dụ 1) và sự bảo toàn tập hợp các truy vấn trước
khi cập nhật (ví dụ 2) thể hiện điều kiện tương đương giữa các trật tự hóa.
Cho Stt là một trật tự hóa tuần tự của tập hợp các giao dịch M và S là một trật tự hóa bất kỳ của M Hiệu ứng của S giống với hiệu ứng của Stt, nếu hai điều kiện sau đây
được triển khai :
Điều kiện 1 :
Để cho mỗi đối tượng e, các cập nhật biểu hiện trong cùng một trật tự trong S và Stt.
Điều kiện 2 :
Trang 9Hãy xem xét hai cập nhật kế tiếp nhau của một đối tượng e trong số các trật tự hóa,
và các cập nhật tương ứng của e trong trật tự hóa khác Giữa hai cập nhật này, ta tham
khảo cùng các đối tượng trong hai trật tự hóa này trong cùng trật tự hay không
Cả hai điều kiện vừa nêu là rất mạnh trong Việc nghiên cứu tiếp tục sau này
Để cho trật tự hóa S, ta định nghĩa một quan hệ phụ thuộc giữa các giao dịch Cho T1 và T2 là hai giao dịch của M, e là đối tượng của hệ Ta nói rằng T2 phụ thuộc T1 qua trung gian của e, ký hiệu bằng (T1 , e, T 2), với các điều kiện sau đây được
kiểm tra :
1 Một tác động của T1 tham chiếu e và một tác động sau T2 thay đổi e.
2 Một tác động của T1 thay đổi e và một tác động sau T2 tham chiếu e (hệ quả của
điều kiện 2)
3 Một tác động của T1 thay đổi e và một tác động sau T2 thay đổi e (hệ quả của điều kiện 1) mà e không được thay đổi bởi một giao dịch khác giữa hai tác động T1 và T2 Thuật ngữ "trước" được hiểu theo nghĩa "cái tiếp theo nó trong trật tự hóa S".
Quan hệ này được biểu hiện bằng một đồ thị phụ thuộc mà các nút của nó đượcgán nhãn bởi tên của giao dịch và các cung là tên các đối tượng Để cho một trật tự hóa
tuần tự, đồ thị này không có vòng lặp (thực tế, nếu (T1 , e, T 2), thì T1 trước T 2 trong trật
tự tuần tự)
Để cho hai trật tự hóa có cùng một hiệu ứng, thì điều kiện đủ là chúng phải có cùng quan hệ phụ thuộc.
Do vậy, điều kiện đủ cho sự gắn bó của một trật tự hóa có thể phát biểu như sau
Một trật tự hóa là gắn bó, nếu nó có cùng quan hệ phụ thuộc với một trật tự tuần tự.
Chú ý :
Điều kiện cần này cũng có thể trở thành đủ trong một trường hợp đặc biệt mà trongthực tế ta thường hay gặp Đó chính là trường hợp mà toàn bộ đối tượng được cập nhậtbằng cách tham chiếu trước thời điểm đó bởi cùng một giao dịch
(S 2)AB
UT
(S 3)AB
UT
Hình I-5 Đồ thị ứng với
các trật tự hoá S1, S2 và S3.
Các đồ thị tương ứng với các giao dịch S'1 và S'2 của ví dụ 2 là :
(S' 1)C
T 2
T 1
(S' 2)C
T 2
T 1
Trang 10Hình I-6 Đồ thị ứng với hai giao dịch S'1 và S'2.
Bây giờ, ta hãy kiểm tra các phương tiện đảm bảo một tập hợp các giao dịchthực hiện theo một trật tự hóa gắn bó
I.3 Triển khai giao dịch tôn trọng sự gắn bó
Cho một tập hợp các giao dịch M = {T1, T2, , Tn} Một trật tự hóa của tập hợp
các tác động thành phần sẽ tương ứng với Việc thực hiện hoàn toàn các giao dịch Việcthu được một trật tự hóa gắn bó chỉ có thể thành công khi áp dụng các ràng buộc trêntrật tự thực hiện các tác động Nguyên lý của phương pháp là ở chổ làm chậm một tácđộng nào đó cho đến thời điểm mà sự thực hiện của nó không còn có nguy cơ phá huỷ
sự gắn bó của trật tự hóa (bằng cách chặn tiến trình hiện hành)
Hiệu ứng của bộ làm chậm này (cơ chế then cài) đã được trình bày trong cácphần trước của tài liệu này và sẽ được trình bày tiếp trong phần kề liền sau đây
I.3.1 Cơ chế then cài
Một giao dịch nào đó đang thực hiện phép then cài trên một đối tượng muốngiành quyền sử dụng đối tượng này theo một vài kiểu truy cập nhất định Cơ chế thencài gán hay không gán quyền truy cập này căn cứ vào quy tắc tiền định như loại trừtương hổ, luật đọc - hiệu chỉnh thông tin,
Nếu quyền được thừa nhận, thì đối tượng bị cài then bởi giao dịch Nếu không,tiến trình thực hiện giao dịch bị khóa và đối tượng không bị cài then
Cơ chế then cài cho phép một giao dịch có thể giải phóng đối tượng mà nó đãcài then
Ta sẽ mô tả Việc sử dụng các then cài để đạt được sự gắn bó của giao dịch.Then cài có thể là nguyên nhân của bế tắc và thiếu thốn vô hạn tài nguyên như đã thấytrong chương IV và ta cũng sẽ giải quyết vấn đề này trong chương này
I.3.1.1 Loại trừ tương hổ
Một trong những giải pháp giản đơn để đạt được trật tự hóa gắn bó thể hiện ởchổ bắt buộc phải sử dụng trật tự hóa tuần tự Để làm Việc đó, toàn bộ giao dịch được
đặt trong cặp hàm nguyên thuỷ mo_giaodich và dong_giaodich Đây là sự đảm bảo cho
Việc loại trừ tương hổ giữa các giao dịch Các hàm này có thể được triển khai dựa trêncác phương pháp đã nghiên cứu trong các chương trước
Nếu ta biết trước các đối tượng được xử lý bởi một giao dịch nào đó, thì ta cóthể cài then công Việc truy cập đến các đối tượng Điều đó chỉ cho phép thực hiện songsong đối với các giao dịch truy cập vào các đối tượng rời rạc
Nếu ta muốn nâng cao hơn nữa khả năng sử dụng song song, thì cần phải thựchiện cài then ở mức độ thấp hơn mức giao dịch Đó chính là điểm quan trọng mà ta cầnquan tâm
I.3.1.2 Then cài chọn lựa các đối tượng
Trang 11Các quy tắc truy cập đối tượng được chú ý Đó là tính hợp thức của Việc truycập Nội dung của quy tắc này như sau :
Một giao dịch thay đổi giá trị của 1 đối tượng phải loại trừ tất cả các đối tượng khác muốn truy cập, ngược lại thì Việc truy cập được tiến hành theo kiểu tương tranh.
Để đảm bảo điều đó luôn luôn được thực hiện, người ta cho phép tiến hành càithen một đối tượng trước khi Việc sử dụng nó có hiệu lực
Một giao dịch có thể thực hiện 3 hàm nguyên thuỷ trên đối tượng e :
1 v_doc(e) Sử dụng khi muốn có được quyền đọc e
theo kiểu chia xẻ
2 v_viet(e) Sử dụng khi muốn có được quyền đọc và
viết vào e theo kiểu loại trừ.
3 giai_phong(e
) Giải phóng đối tượng e Giả sử trước đóđã được cài then bởi cùng giao dịch này
Hai hàm nguyên thuỷ sau đã được trình bày trong các chương trước
Nói một cách chính xác hơn, một giao dịch gọi là phát triển, nếu :
1 Một phép toán chỉ được thực hiện trên một đối tượng sau khi đối tượng đó đãđược cài then bởi giao dịch theo kiểu tương thích với phép toán đó
2 Không có giao dịch nào cài then được trên đối tượng mà trước đó đã bị càithen cũng bởi chính giao dịch đó, ngoại trừ theo kiểu loại trừ trong trường hợp trước đó
đã sử dụng kiểu chia xẽ
3 Sau khi chấm dứt một giao dịch, không có đối tượng nào bị cài then
Các then cài được sử dụng để hạn chế một lớp các trật tự hóa có khả năng đượcthực hiện
Một trật tự hóa được gọi là hợp thức nếu :
1 Đối tượng được một giao dịch cài then theo kiểu chia xẻ không bị bất cứ thencài nào theo kiểu loại trừ của các giao dịch khác
2 Một đối tượng bị cài then theo kiểu loại trừ, thì không bị bất kỳ then cài mớinào nữa
Do vậy, mọi cố gắng cài then không phù hợp với các điều kiện tương hổ nêutrên đều phải chờ (bị làm chậm lại) cho đến khi mở then
Chú ý :
Một giao dịch là tốt, nếu nó sử dụng các then cài phù hợp với đặc điểm của chúng.Một trật tự hóa gọi là hợp thức, nếu các then cài hoạt động phù hợp với các đặc điểmnày
Trong phần tiếp theo, ta chỉ xem xét các trật tự hóa hợp thức của các giao dịch đượchình thành hoàn toàn hợp thức Ta sẽ xem xét các điều kiện của một trật tự hóa gắn bó
I.3.1.3 Giao dịch hai pha
Bây giờ, ta hãy xem xét một giao dịch hình thành hợp thức bằng cách kiểm trahai điều kiện :
1 Toàn bộ đối tượng bị cài then vẫn ở trong tình trạng cài then cho đến cuối giao dịch.
Trang 12Ta có thể chứng minh trong bài tập 1 của chương này rằng toàn bộ trật tự hóahợp thức của các giao dịch như vậy là gắn bó Nói một cách tổng quát, giả sử rằng toàn
bộ giao dịch là hình thành tốt và ngoài ra hãy kiểm tra bằng cách thay điều kiện 1 nêutrên bằng điều kiện tổng quát hơn Đó là điều kiện 2
2 Không có then cài nào có thể diễn ra tiếp theo một then cài khác trong cùng một giao dịch.
Điều kiện này thể hiện ở chổ là dãy các phép toán trên các then cài được phân tíchthành 2 pha nối tiếp nhau Một pha mà trong đó các đối tượng bị cài then, còn pha kiachúng được mở then Đặc tính này định nghĩa các giao dịch theo hai pha
Bằng cách sử dụng điều kiện tương đương đã cho trong I.2.3 ta có thể hình thànhnên kết quả sau đây và cũng được phản ảnh trong bài tập 1 của chương
Toàn bộ trật tự hóa hợp thức của một tập hợp các giao dịch hình thành tốt hai
pha là gắn bó, có nghĩa là cùng hiệu ứng với trật tự hóa tuần tự.
Ngược lại, nếu các giao dịch của một tập hợp (không phải là hình thành tốt và ở
hai pha, thì có thể xây dựng các trật tự hóa hợp thức của M là không gắn bó.
Ví dụ 1 :
Hãy truy cập vào tập hợp các đối tượng
Giả sử rằng ta muốn đọc các giá trị của một tập hợp các đối tượng và quy ướcrằng các giá trị này kiểm tra các ràng buộc toàn vẹn Lúc này, ta cần phải cài then theokiểu chia xẻ cho mỗi một đối tượng trước khi đọc, mở then diễn ra ở cuối của giao dịchnày Một phép như vậy gọi là đọc gắn bó của tập hợp các đối tượng
Như thế, giao dịch được thể hiện như sau :
v_doc(a) v_doc(b) doc(a) doc(b) v_doc(c) doc(c) giai_phong(a) giai_phong(b) giai_phong(c)
là giao dich đọc gắn bó của tập hợp {a, b, c}.
Ví dụ 2 :
Trở lại với ví dụ trong được mô tả trong ví dụ I.1 Đây là hai kiểu mô tả khác nhau
của giao dịch T và một kiểu mô tả có thể của giao dịch U :
Giao dịch T1 Giao dịch T2 Giao dịch T3
B := B + P 2 giai_phong(B)
v_viet(A)
A := (1 + t) x A v_viet(B)
B := (1 + t) x B giai_phong(B) giai_phong(A)
Ta kiểm tra rằng tất cả các giao dịch đều là hình thành tốt và T2 và U đều ở hai pha và T 1 không có hai pha.
Trang 13Sau đây là hai trật tự hóa hợp thức S1 và S2 xuất phát từ Việc thực hiện song song của T1 và U và T2 và U.
I.3.2 Hệ quả của tính không chắc chắn trên trạng thái của hệ
Bây giờ, ta hãy tưởng tượng rằng các đối tượng được phân tán trên nhiều trạmkhác nhau và được nối với nhau thông qua hệ thống viễn thông và rằng các tiến trìnhdiễn ra trên các trạm khác nhau Hệ thống viễn thông cho phép các tiến trình trên cáctrạm khác nhau có thể trao đổi các thông điệp với nhau Ta cũng giả định rằng các tiếntrình và các phương tiện truyền thông tin là các đối tượng có thể rơi vào tình trạng sựcố
Các đối tượng thay đổi hay tham chiếu trong quá trình thực hiện cùng một giao
dịch có thể nằm trên các trạm khác nhau Nếu ta xét đến ví dụ I.1, thì tài khoản A và tài khoản B có thể được quản lý bởi hai cơ quan khác nhau Phép chuyển khoản T trong
trường hợp này bao gồm các tác động thực hiện trên hai trạm khác nhau Một xử lý nhưvậy, trong trường hợp hệ tập trung chỉ cần một giao dịch tuần tự là đủ, nhưng với các
hệ phân tán, thì cần ít nhất hai dãy tác động cục bộ Tương tự như vậy đối với giao dịch
loại U.
Một hệ quản lý tập hợp thông tin phân tán bao gồm :
1 Cơ chế cho phép sắp xếp một cách tổng quát cáctác động của cùng một giao dịch, ngay cả khi các
tác động này diễn ra trên các trạm khác nhau
2 Cơ chế điều khiển các tranh chấp truy cập cục bộvào các đối tượng và đảm bảo tôn trọng tính vẹn
toàn của các đối tượng cục bộ này
3 Cơ chế có khả năng xử lý các bế tắc và thiếu thốn
vô hạn, hậu quả của Việc huỷ bỏ các giao dịch
Trang 144 Cơ chế phục hồi cỏc giao dịch đó bị huỷ bỏ hay
xử lý cỏc sự cố
I.3.3 Xử lý cỏc sự cố
Ta giả sử rằng cỏc bộ xử lý và bộ nhớ cấu tạo nờn cỏc trạm là nguyờn nhõn chớnhcủa cỏc sự cố làm ngắt quảng quỏ trỡnh thực hiện cỏc tiến trỡnh Cỏc hệ thống Iễn thụngcũng cú thể là nơi diễn ra cỏc sự cố làm mất hẵn hay chồng chộo cỏc thụng điệp
Ta xột sự gắn bú thụng tin khụng chỉ trong cỏc điều kiện thuận lợi như đó nờu trướcđõy, mà cũn tớnh đến cỏc yếu tố mới và cũng xột đến cỏc cụng cụ cho phộp đảm bảocho sự gắn bú này
Nếu một tiến trỡnh p bị sự cố trong lỳc thực hiện một giao dịch T, thỡ trạng thỏi của
hệ xuất phỏt từ Việc thực hiện từng phần đú chắc chắn sẽ khụng cũn gắn bú
Một cơ chế cho phộp duy trỡ sự gắn bú trong mụi trường phõn tỏn cú sự cố phải là :
1 Giao dịch T bắt buộc phải được thực hiện một cỏch
trọn vẹn
2 Nếu cú sự cố diễn ra, thỡ bắt buộc nú phải quay trở
lại điểm xuất phỏt
Muốn thực hiện những điều vừa nờu trong bảng trờn, người ta đũi hỏi giao dịch phải
cú cỏc đặc tớnh toàn vẹn như sau :
1 Nếu một tiến trỡnh bị sự cố trước khi kết thỳc T nhưng lại sau cỏc thao tỏc thay đổi cần thiết của T,
trạng thỏi của hệ là gắn bú.
2 Nếu một tiến trỡnh bị sự cố trước khi diễn ra cỏc
thay đổi của T, trạng thỏi của hệ là gắn bú.
3 Nếu một tiến trỡnh bị sự cố giữa cỏc thay đổi của
T, trạng thỏi của hệ là khụng gắn bú.
Cỏc đặc tớnh trờn cú thể mụ tả bằng hỡnh vẽ I-7 sau đõy :
1
2
3
Tr ớc khi cập nhật (thay đổi)
Sau khi cập nhật (thay đổi) Gắn bó
Không gắn bó