Lý thuyết điều khiển tương tranh hay đồng thời được đưa ra trong việc quản lý các giao dịch trên cơ sở dữ liệu phân tán nhằm giải quyết các tính chất biệt lập và nhất quán [5] trên một h
Trang 1TRƯỜNG ĐẠI HỌC KHOA HỌC
TRẦN LÊ NGỌC
TÌM HIỂU MỘT SỐ THUẬT TOÁN ĐIỀU KHIỂN
TƯƠNG TRANH TRONG CƠ SỞ DỮ LIỆU PHÂN TÁN
CHUYÊN NGÀNH: KHOA HỌC MÁY TÍNH
MÃ SỐ: 60.48.01
LUẬN VĂN THẠC SĨ KHOA HỌC
NGƯỜI HƯỚNG DẪN KHOA HỌC
TS NGUYỄN MẬU HÂN
Huế, 2012
Trang 2LỜI CAM ĐOAN
Tôi xin cam đoan luận văn là kết quả của quá trình nghiên cứu của riêng tôi dưới sự hướng dẫn của TS Nguyễn Mậu Hân Các số liệu, kết quả đã nêu trong luận văn là trung thực và chưa từng được ai công bố trong bất kỳ công trình nào khác, các tài liệu tham khảo có trích dẫn đầy đủ
Người thực hiện luận văn
Trần Lê Ngọc
Trang 3Tôi xin gửi lời cảm ơn chân thành đến TS Nguyễn Mậu Hân, Thầy đã tận tình hướng dẫn em trong suốt thời gian học tập cũng như thời gian thực hiện luận văn
Vì thời gian và trình độ còn nhiều hạn chế cũng như số lượng lớn các thuật ngữ, khái niệm cần trình bày, chắc chắn luận văn còn có chỗ sai sót Rất mong nhận được ý kiến góp ý và động viên của các Thầy/Cô cũng như tất cả các Anh/Chị
và các bạn để luận văn được hoàn thiện hơn nữa
Xin chân thành cảm ơn!
Người thực hiện luận văn
Trần Lê Ngọc
Trang 4MỤC LỤC
Trang phụ bìa
Lời cam đoan
Mục lục
Danh mục các ký hiệu, các chữ viết tắt
Danh mục các bảng
Danh mục các hình vẽ, đồ thị
MỞ ĐẦU 1
1.Lý do chọn đề tài 1
2 Mục đích nghiên cứu 1
3 Đối tượng và phạm vi nghiên cứu 1
4 Phương pháp nghiên cứu 1
5 Ý nghĩa khoa học và thực tiễn 2
6 Cấu trúc luận văn 2
CHƯƠNG 1 TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU PHÂN TÁN 3
1.1 Phân mảnh dữ liệu 4
1.1.1 Các lý do phân mảnh dữ liệu 4
1.1.2 Các yêu cầu của việc phân mảnh dữ liệu 5
1.2 Các chiến lược phân tán dữ liệu 8
1.2.1 Tập trung dữ liệu 8
1.2.2 Chia nhỏ dữ liệu 8
1.2.3 Sao lặp dữ liệu 8
1.2.4 Phương thức lai 9
1.3 Cấp phát tài nguyên trong hệ phân tán 9
CHƯƠNG 2 QUẢN TRỊ GIAO DỊCH PHÂN TÁN 11
2.1 Xử lý truy vấn phân tán 11
2.1.1 Mục đích của xử lý truy vấn 11
2.1.2 Chức năng của xử lý truy vấn 11
2.1.3 Các phương pháp xử lý truy vấn cơ bản 11
2.1.4 So sánh xử lý truy vấn tập trung và phân tán 12
2.2 Quản trị các giao dịch phân tán 13
2.2.1 Các khái niệm 13
2.2.1.1 Quản lý giao dịch (Transaction Management – TM): 13
Trang 52.2.1.2 Giao dịch (Transaction): 14
2.2.2 Tính chất của giao dịch 14
2.2.3 Trạng thái của giao dịch 18
2.2.4 Xử lý giao dịch 20
2.3 Lịch biểu 21
2.3.1 Khái niệm lịch biểu 21
2.3.2 Các loại lịch biểu 22
2.4 Tính khả tuần tự 25
2.4.1 Tiến trình tuần tự 25
2.4.2 Tiến trình không tuần tự 25
2.4.3 Hai thao tác xung đột 25
2.4.4 Tiến trình tương đương 26
2.4.5 Tiến trình khả tuần tự 26
2.4.6 Tính khả tuần tự trong cơ sở dữ liệu phân tán 27
CHƯƠNG 3 ĐIỀU KHIỂN TƯƠNG TRANH TRONG CƠ SỞ DỮ LIỆU PHÂN TÁN 28
3.1 Cơ sở của điều khiển tương tranh phân tán 28
3.1.1 Các khái niệm 30
32
3.2 Các kỹ thuật điều khiển tương tranh 34
3.2.1 Các kỹ thuật đồng bộ hóa dựa trên khóa hai pha 34
3.2.1.1 Quá trình thực hiện 2PL cơ bản 35
3.2.1.2 Kỹ thuật 2PL sao chép chính 39
3.2.1.3 Kỹ thuật 2PL biểu quyết 40
3.2.1.4 Kỹ thuật 2PL tập trung 40
3.2.1.4 Kỹ thuật 2PL phân tán 41
3.2.2 Phát hiện và ngăn chặn tắc nghẽn 42
3.2.2.1 Ngăn chặn tắc nghẽn 44
3.2.2.2 Phát hiện tắc nghẽn 46
47
3.2.3.1 Thuật toán TO cơ bản 49
3.2.3.2 Thuật toán TO bảo thủ 50
3.2.3.3 Thuật toán TO đa bản 52
3.2.3.4 Duy trì TO: 53
Trang 63.2.3.5 Quản lý nhãn thời gian: 53
1.3.Mô phỏng nhiều giao dịch đồng thời trên hệ thống ATM đa ngân hàng 55
3.3.1 Giới thiệu chương trình 55
3.3.2 Mô tả bài toán 55
3.3.4 Thiết kế cơ sở dữ liệu 58
3.3.5 Đề xuất ý tưởng thuật toán điều khiển tương tranh 58
3.3.6 Nội dung thuật toán 59
3.3.7 Giao diện và các chức năng của chương trình 60
3.3.8 Quy trình kiểm thử chương trình 63
KẾT LUẬN 66
1.Đánh giá kết quả 66
2 Phạm vi ứng dụng 66
3 Hướng phát triển 66
TÀI LIỆU THAM KHẢO 68
Trang 7DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
2PL Two phases locking
ACK Acknowledgment
ATM Automated teller machine
BTO Basic timestamp ordering
Trang 8DANH MỤC CÁC BẢNG
1.1 Cơ sở dữ liệu của một công ty máy tính 7
2.3 Bảng biểu diễn tiến trình không tuần tự 25 2.4 Bảng biểu diễn tiến trình khả tuần tự 27 3.1 Bảng mô tả hai giao dịch rút và chuyển tiền 38
Trang 9DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ
2.1 Quá trình xử lý truy vấn trong hệ thống phân tán 12
3.8 Đồ thị điều khiển tương tranh theo nhãn thời gian 49
Trang 10MỞ ĐẦU
1 Lý do chọn đề tài
Trong thực tiễn hiện nay, nhu cầu dùng chung một hệ cơ sở dữ liệu là rất lớn Vấn đề đặt ra là làm thế nào để có thể quản lý tốt các luồng dữ liệu và việc sử dụng chung dữ liệu, chương trình ứng dụng Đặc biệt là làm thế nào để đáp ứng nhu cầu người dùng một cách tốt nhất, chính xác nhất
Lý thuyết điều khiển tương tranh (hay đồng thời) được đưa ra trong việc quản lý các giao dịch trên cơ sở dữ liệu phân tán nhằm giải quyết các tính chất biệt lập và nhất quán [5] trên một hệ cơ sở dữ liệu phân tán
Từ những lý do cơ bản trên, được sự hướng dẫn và gợi ý của TS Nguyễn
Mậu Hân, tôi đã chọn đề tài nghiên cứu của luận văn tốt nghiệp cao học là “Tìm hiểu một số thuật toán điều khiển tương tranh trong cơ sở dữ liệu phân tán”
3 Đối tượng và phạm vi nghiên cứu
Các thuật toán điều khiển tương tranh sử dụng khoá, hiện tượng Deadlock, dựa vào nhãn thời gian [4] và phương pháp lạc quan là các đối tượng nghiên cứu chính của đề tài nhằm đánh giá sự cần thiết của chúng trong quản lý giao dịch
Phạm vi nghiên cứu của đề tài là tìm hiểu về giao dịch đồng thời, các thuật toán được áp dụng trên cơ sở dữ liệu phân tán nhằm tối ưu hoá thực hiện của các giao dịch trong môi trường phân tán [2] Xây dựng chương trình mô phỏng để xem xét việc thực thi các giao dịch đồng thời, chương trình mô phỏng không phải là ứng dụng
4 Phương pháp nghiên cứu
Thu thập và nghiên cứu các tài liệu liên quan đến lý thuyết về điều khiển tương tranh trong cơ sở dữ liệu phân tán
Trang 11Tìm hiểu một số thuật toán điều khiển tương tranh đã được áp dụng trên
cơ sở dữ liệu phân tán
Khảo sát và tiến hành mô phỏng một số thuật toán để minh họa các giao dịch đồng thời
5 Ý nghĩa khoa học và thực tiễn
Trình bày các kiến thức về lý thuyết giao dịch và các kiến thức liên quan, bài toán quản lý giao dịch và các kỹ thuật điều khiển tương tranh đã được ứng dụng
Xây dựng chương trình mô phỏng việc thực thi các giao dịch đồng thời để từ đó thấy được sự cần thiết trong việc nghiên cứu đề tài này để ứng dụng trong thực tiễn
6 Cấu trúc luận văn
Nội dung luận văn gồm 3 chương, cụ thể như sau:
Chương 1: Tổng quan về cơ sở dữ liệu phân tán
Giới thiệu tổng quan về cơ sở dữ liệu phân tán, các nguyên tắc phân mảnh dữ liệu, các chiến lược phân tán dữ liệu và việc cấp phát tài nguyên trong hệ cơ sở dữ liệu phân tán
Chương 2: Quản trị cơ sở dữ liệu phân tán
Tập trung nghiên cứu về xử lý truy vấn phân tán, quản lý các giao dịch phân tán, lịch biểu và tính khả tuần tự trong thực thi các giao dịch phân tán
Chương 3: Mô hình tương tranh trong cơ sở dữ liệu phân tán
Nghiên cứu về điều khiển tương tranh trong cơ sở dữ liệu phân tán, các kỹ thuật, thuật toán điều khiển tương tranh
Xây dựng chương trình mô phỏng thuật toán điều khiển tương tranh trên hệ thống giao dịch vụ đa ngân hàng
Trang 12CHƯƠNG 1 TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU PHÂN TÁN
Cơ sở dữ liệu phân tán là tập hợp các cơ sở dữ liệu (CSDL) được liên kết logic và làm việc một cách trong suốt với người sử dụng Trong suốt với người sử dụng hàm nghĩa người sử dụng có thể truy cập tất cả cơ sở dữ liệu như chúng thuộc
về một cơ sở dữ liệu duy nhất Có sự độc lập ví trí, người sử dụng không biết nơi lưu trữ dữ liệu, có thể di chuyển dữ liệu dữ liệu từ vị trí vật lý này đến vị trí khác
mà không ảnh hưởng đến người dùng khác
Lý do phát triển cơ sở dữ liệu phân tán là:
• Các tổ chức thường có nhiều chi nhánh ở nhiều nơi khác nhau
• Cho phép mỗi vị trí lưu giữ cơ sở dữ liệu riêng nhằm hỗ trợ truy cập hiệu quả
Tuy nhiên, còn tồn tại một số điểm bất lợi:
• Phí tổn gây ra bởi các tác vụ điều khiển và phối hợp có thể làm giảm đáng kể hiệu năng
• Khi dữ liệu được sao lưu ở nhiều vị trí khác nhau sẽ dẫn đến việc gia tăng các tài nguyên cần sử dụng nhằm bảo đảm cập nhật đồng thời và nhất quán Việc sao lưu cần thêm không gian lưu trữ
• Vấn đề an toàn trở nên phức tạp
• Khó khăn trong việc thay đổi: hiện nay chưa có một công cụ hoặc phương pháp nào tối ưu để trợ giúp người sử dụng có thể chuyển đổi dữ liệu từ tập trung sang phân tán và ngược lại
Để giải quyết các vấn đề trên, khi tiến hành xây dựng một Hệ thống cơ sở dữ liệu phân tán cần tiến hành tốt việc phân mảnh dữ liệu, cấp phát nguồn tài nguyên
Trang 13hợp lý, quản trị các giao dịch và xử lý các truy vấn phân tán, đồng thời xử lý tốt vấn
đề điều khiển tương tranh
1.1 Phân mảnh dữ liệu
1.1.1 Các lý do phân mảnh dữ liệu
Trong việc phân mảnh dữ liệu, điều quan trọng nhất là tạo ra được một đơn
vị phân tán phù hợp Một quan hệ không phải là một đơn vị đáp ứng được yêu cầu
đó vì nhiều lý do
Thứ nhất, khung nhìn của các ứng dụng thường chỉ là một tập con của quan
hệ Vì thế, đơn vị truy xuất không phải là toàn bộ quan hệ đó mà chỉ là các tập con của nó Kết quả là ta xem tập con của quan hệ làm cơ sở để thực hiện phân tán dữ liệu là thích hợp nhất
Thứ hai, nếu các ứng dụng có các khung nhìn được định nghĩa trên một quan
hệ cho trước nằm tại những vị trí khác nhau thì có hai cách lựa chọn làm cơ sở để
phân tán: hoặc là toàn bộ quan hệ hoặc quan hệ không được nhân bản mà được lưu
ở một vị trí có chạy ứng dụng Lựa chọn thứ nhất gây ra một số lượng lớn các truy
xuất không cần thiết đến dữ liệu ở xa Ngược lại, lựa chọn sau thực hiện nhân bản không cần thiết, gây ra nhiều vấn đề khi cập nhật và có thể gây lãng phí không gian lưu trữ
Thứ ba, việc phân rã một quan hệ thành nhiều mảnh, mỗi mảnh được xử lý như một đơn vị, sẽ cho phép nhiều giao dịch thực hiện đồng thời Ngoài ra việc phân mảnh các quan hệ sẽ cho phép thực hiện song song một câu vấn tin bằng cách chia nó ra thành một tập các câu vấn tin con hoạt tác trên các mảnh Vì thế việc phân mảnh sẽ làm tăng mức độ hoạt động đồng thời (song hành) và như vậy sẽ làm tăng lưu lượng hoạt động của hệ thống Kiểu hoạt động đồng thời này mà chúng ta
gọi là đồng thời nội truy vấn (interquery concurrency)
Bên cạnh đó việc phân mảnh cũng tồn tại một số khiếm khuyết Nếu ứng dụng có những yêu cầu ngăn cản việc phân rã thành các mảnh để được sử dụng độc quyền, thì những ứng dụng có các khung nhìn được định nghĩa trên nhiều mảnh sẽ
bị giảm hiệu suất hoạt động Chẳng hạn nó có thể cần phải truy xuất dữ liệu từ hai
Trang 14mảnh rồi nối hoặc hợp chúng lại với chi phí rất cao Tránh được điều này là một vấn
đề cơ bản của kỹ thuật phân mảnh
Vấn đề liên quan đến việc kiểm soát dữ liệu ngữ nghĩa (semantic data control),
đặc biệt là vấn đề kiểm tra tính toàn vẹn Do kết quả của phân mảnh, các thuộc tính tham gia vào một phụ thuộc có thể bị phân rã vào các mảnh khác nhau và được cấp phát cho những vị trí khác nhau [1] Trong trường hợp này, một nhiệm vụ đơn giản như kiểm tra các phụ thuộc cũng phải thực hiện truy tìm dữ liệu ở nhiều vị trí
1.1.2 Các yêu cầu của việc phân mảnh dữ liệu
Cơ sở dữ liệu được phân mảnh đến một mức độ nào sẽ quyết định thời gian thực hiện các truy vấn Một mức độ như thế chỉ được định nghĩa với các ứng dụng
cụ thể trên CSDL Việc phân mảnh một quan hệ tổng thể cũng phải tuân theo một
số các quy tắc nào đó để khi tái thiết lại quan hệ cũ vẫn bảo đảm ngữ nghĩa của nó Một phương pháp thiết kế các phân mảnh đúng đắn phải thỏa mãn ba ràng buộc sau:
Tính đầy đủ (completeness): Nếu một quan hệ R được phân rã thành các
mảnh R1, R2, , Rk thì mỗi mục dữ liệu có trong R phải có trong một hoặc nhiều mảnh Ri
Tính tái thiết được (reconstruction): Nếu một quan hệ R được phân rã thành
các mảnh R1, R2, , Rk thì phải tồn tại một toán tử sao cho: R = Ri , i Toán tử thay đổi tùy theo từng loại phân mảnh, điều quan trọng là làm sao xác định được nó Trong thực tế khi các mảnh là được phân mảnh ngang thì
là phép hợp và khi phân mảnh dọc thì là phép nối
Tính tách biệt (disjointness): Nếu một quan hệ R được phân mảnh ngang
thành các quan hệ R1, R2, , Rk và mục dữ liệu ti nằm trong mảnh Ri thì nó
sẽ không nằm trong một mảnh Rk, k i Tiêu chuẩn này bảo đảm các mảnh ngang phải được tách rời nhau Nếu quan hệ được phân mảnh dọc thì các thuộc tính chung phải được lặp lại trong mỗi mảnh Do đó, trong trường hợp phân mảnh dọc tính tách biệt chỉ được định nghĩa trên các trường không phải
là thuộc tính chung của quan hệ
Ví dụ: Xét cơ sở dữ liệu của một công ty phần mềm được tổ chức như sau:
Trang 15CANBO (MACB, TENCB, CHUCVU): là quan hệ chứa dữ liệu về cán bộ của công ty Bao gồm, tên cán bộ (TENCB), mã số của cán bộ (MACB), chức vụ của cán bộ trong công ty (CHUCVU) và ngày sinh của cán bộ (NGAYSINH)
TIENLUONG (CHUCVU, MUCLUONG): là quan hệ chứa dữ liệu quản lý các mức lương của cán bộ trong công ty Gồm hai trường CHUCVU và MUCLUONG (mức lương tương ứng với chức vụ)
PHANMEM (MAPM, TENPM, KINHPHI): là quan hệ chứa dữ liệu quản lý các phần mềm mà công ty đang xây dựng Gồm ba trường: MAPM (mã số phần mềm), TENPM (tên của phần mềm) và KINHPHI (kinh phí xây dựng phần mềm)
HOSO (MACB, MAPM, NHIEMVU, THOIGIAN): gồm bốn trường MACB (mã số của cán bộ), MAPM (mã số phần mềm mà cán bộ đó làm việc), NHIEMVU (nhiệm vụ của cán bộ đó trong phần mềm) và THOIGIAN (thời gian được phân công trong quá trình xây dựng phần mềm)
Bảng 1.1: Cơ sở dữ liệu của một công ty máy tính
Kỹ sư điện tử Phân tích HT Thiết kế DL
C1 C2 C2 C3 C3 C4 C5 C6 C7 C8
P1 P1 P2 P3 P4 P2 P2 P4 P3 P3
Quản lý Phân tích Phân tích
Kỹ thuật Lập trình Quản lý Quản lý
Kỹ thuật Quản lý Lập trình
Trang 16PHANMEM TIENLUONG
Ví dụ về phân mảnh ngang:
Xét các phép toán đại số quan hệ sau:
PHANMEM 1 = KINHPHI 20000 (PHANMEM)
PHANMEM 2 = KINHPHI > 20000 (PHANMEM)
Bảng 1.2: Phân mảnh ngang Cơ sở dữ liệu
Dễ thấy, các mảnh thỏa mãn tính tái thiết được và tính đầy đủ
PHANMEM 1 PHANMEM ; PHANMEM 2 PHANMEM;
PHANMEM = PHANMEM 1 PHANMEM 2
Ví dụ về phân mảnh dọc:
Xét các phép toán đại số quan hệ sau:
PHANMEM 3 = $1,$3 PHANMEM ; PHANMEM 4 = $1,$4 PHANMEM
Bảng 1.3: Phân mảnh dọc Cơ sở dữ liệu
BẢO TRÌ PHÁT TRIỂN
CSDL CÀI ĐẶT BẢO TRÌ PHÁT TRIỂN
Trang 17Dễ thấy, các mảnh thỏa mãn tính tái thiết được và tính đầy đủ
PHANMEM 3 PHANMEM ; PHANMEM 4 PHANMEM ;
PHANMEM = PHANMEM 3 PHANMEM 4
Ví dụ về phân mảnh hỗn hợp: xét các phép toán đại số quan hệ sau:
PHANMEM 5 = KINHPHI 20000 ( $1,$3 PHANMEM)
PHANMEM 6 = KINHPHI > 20000 ( $1,$3 PHANMEM )
Bảng 1.4: Phân mảnh hổn hợp Cơ sở dữ liệu
PHANMEM 5 PHANMEM 6
1.2 Các chiến lược phân tán dữ liệu
Việc định vị và phân tán dữ liệu ở các nút trong một mạng máy tính sẽ quyết định tính hiệu quả và đúng đắn của hệ thống phân tán Hiện nay người ta sử dụng 4 chiến lược phân tán dữ liệu cơ bản là:
Cơ sở dữ liệu được nhân thành nhiều bản từng phần hoặc đầy đủ và được đặt
ở nhiều vị trí trên mạng Nếu bản sao của CSDL được lưu giữ tại mọi vị trí của hệ thống ta có trường hợp sao lặp đầy đủ Cách này thường làm cực đại việc truy nhập
28000
25000
Trang 18tới dữ liệu ở mọi địa phương và nãy sinh nhiều vấn đề khi cập nhật như: khi có sự thay đổi dữ liệu ở một vị trí thì cần xử lý lại để đồng bộ hóa dữ liệu cho các vị trí khác Hiện nay có nhiều kỹ thuật mới cho phép tạo bản sao không đầy đủ phù hợp với yêu cầu dữ liệu ở mỗi vị trí và một bản đầy đủ được quản lý ở server Sau một khoảng thời gian nhất định các bản sao được làm đồng bộ với bản chính bằng một ứng dụng nào đó Ví dụ ứng dụng Briefcase của Windows là một chương trình đồng
bộ hóa trên cơ sở dữ liệu Access
1.2.4 Phương thức lai
Cơ sở dữ liệu được phân thành nhiều phần quan trọng và không quan trọng Phần ít quan trọng được lưu giữ một nơi và phần quan trọng được lưu trữ ở nhiều nơi khác
1.3 Cấp phát tài nguyên trong hệ phân tán
Cấp phát tài nguyên trong một hệ phân tán là một bài toán được nhiều người quan tâm và nghiên cứu rộng rãi Tuy nhiên, phần lớn các nghiên cứu này không tập trung vào việc thiết kế dữ liệu mà sử dụng cho cách thức đặt các tập tin vào các vị trí của hệ phân tán
Bài toán cấp phát
Giả sử có một tập các mảnh F={F1, F2, ., Fk} và một mạng máy tính bao gồm các vị trí S={S1, S2, ., Sm} trên đó có một tập các ứng dụng Q={Q1, Q2, .,
Qq} đang thực thi Bài toán cấp phát (allocation problem) là tìm một phân phối tối
ưu các mảnh F cho các vị trí S Một phân phối được gọi là tối ưu nếu nó thỏa mãn hai yếu tố sau:
trí Sj, chi phí vấn tin Fi tại vị trí Sj, chi phí cập nhật Fi tại tất cả các vị trí có chứa nó, và chi phí truyền dữ liệu Vì thế bài toán cấp phát sẽ tìm một lược
đồ cấp phát với hàm chi phí là cực tiểu
Hiệu quả: chiến lược cấp phát được thiết kế nhằm cực tiểu hóa thời gian thực
hiện và tăng tối đa lưu lượng hệ thống tại mỗi vị trí
Người ta chứng minh được rằng bài toán cấp phát tổng quát, ký hiệu DAP (database allocation problem) là một bài toán NP-đầy đủ Vì thế hầu hết các nghiên
Trang 19cứu đã được dành cho việc tìm ra được các thuật giải heuristic để có được lời giải tối ưu cho loại bài toán này
Hiện nay chưa có một mô hình heuristic tổng quát nào nhận một tập các mảnh và sinh ra một chiến lược cấp phát gần tối ưu ứng với các ràng buộc cho trước
mà chỉ mới đưa ra một số giả thiết đơn giản hóa và dễ áp dụng cho một số cách đặt vấn đề đơn giản
Trang 20CHƯƠNG 2 QUẢN TRỊ GIAO DỊCH PHÂN TÁN
2.1 Xử lý truy vấn phân tán
Chức năng chính của một bộ xử lý truy vấn là biến đổi một truy vấn của người sử dụng ở mức cao thành một truy vấn tương đương ở mức thấp hơn Phép biến đổi này phải đạt được cả về tính đúng đắn và tính hiệu quả Nghĩa là các truy vấn ở mức thấp phải tương đương với truy vấn ban đầu và cho cùng một kết quả Các cách biến đổi này sẽ dẫn đến việc sử dụng tài nguyên máy tính khác nhau, nên vấn đề đặt ra là lựa chọn phương án nào để sử dụng tài nguyên ít nhất [2]
2.1.1 Mục đích của xử lý truy vấn
Giảm thiểu thời gian xử lý
Giảm vùng nhớ trung gian
Giảm chi phí truyền thông giữa các trạm
Sử dụng ít tài nguyên
2.1.2 Chức năng của xử lý truy vấn
Biến đổi một truy vấn phức tạp thành một truy vấn tương đương đơn giản hơn
Phép biến đổi này phải đạt được cả về tính đúng đắn và hiệu quả
Mỗi cách biến đổi dẫn đến việc sử dụng tài nguyên máy tính khác nhau, nên vấn đề đặt ra là lựa chọn phương án nào dùng tài nguyên ít nhất
2.1.3 Các phương pháp xử lý truy vấn cơ bản
Phương pháp biến đổi đại số:
Đơn giản hóa câu truy vấn nhờ các phép biến đổi đại số tương đương nhằm giảm thiểu thời gian thực hiện các phép toán Phương pháp này không quan tâm đến kích thước và cấu trúc dữ liệu
Phương pháp ước lượng chi phí:
Xác định kích thước dữ liệu, thời gian thực hiện mỗi phép toán trong câu truy vấn Phương pháp này quan tâm đến kích thước dữ liệu và phải tính toán chi phí thời gian thực hiện mỗi phép toán
Trang 212.1.4 So sánh xử lý truy vấn tập trung và phân tán
đồ dưới đây
Hình 2.1: Quá trình xử lý truy vấn trong hệ thống phân tán
Trang 222.2 Quản trị các giao dịch phân tán
Để hiểu một thuật toán điều khiển tương tranh hoạt động như thế nào, trước hết phải hiểu xem thuật toán đó tác động lên toàn bộ cơ sở dữ liệu phân tán như thế nào, có duy trì được trạng thái nhất quán hay không
Một hệ thống có khả năng tự thích ứng với các sự cố hệ thống và có khả năng tự khôi phục để tiếp tục cung cấp dịch vụ
2.2.1 Các khái niệm
2.2.1.1 Quản lý giao dịch (Transaction Management – TM):
Quản lý các giao dịch phân tán là việc giải quyết bài toán duy trì được cơ sở
dữ liệu trong trạng thái nhất quán ngay cả khi có nhiều truy cập đồng thời và khi giao dịch có sự cố
Chức năng của TM là quản lý các giao dịch Mỗi giao dịch được thực thi trong hệ quản trị cơ sở dữ liệu phân tán dưới sự giám sát của một TM, nghĩa là giao dịch chuyển mọi thao tác cơ sở dữ liệu của nó tới TM Mọi tính toán phân tán cần thiết để thực thi một giao dịch đều được quản lý bới TM
Chức năng chính của DM là quản lý lưu trữ trên cơ sở dữ liệu
Trang 232.2.1.2 Giao dịch (Transaction):
Giao dịch là một đơn vị tính toán nhất quán và tin cậy trong các hệ cơ sở dữ liệu phân tán, nó hàm chứa một số các đặt tính cơ bản như tính nguyên tố và tính bền vững, nhằm chỉ ra sự khác biệt giữa một giao dịch và một câu truy vấn
Về mặt trực quan, giao dịch nhận một cơ sở dữ liệu và thực hiện trên nó một hành động làm thay đổi trạng thái, tạo ra một cơ sở dữ liệu mới Nếu cơ sở dữ liệu nhất quán trước khi thực thi giao dịch, có thể đảm bảo rằng cơ sở dữ liệu cũng sẽ nhất quán vào lúc kết thúc thực thi giao dịch dù cho thực thi đồng thời nhiều giao dịch cùng một lúc hay là xảy ra sự cố trong quá trình thực thi
Một giao dịch là một đơn vị thực hiện chương trình truy xuất và có thể cập nhật nhiều mục dữ liệu Một giao dịch thường là kết quả của sự thực hiện một chương trình người dùng và được phân cách bởi các câu lệnh (hoặc các lời gọi hàm)
có dạng Begin transaction và End transaction Nó bao gồm tất cả các hoạt động thực hiện giữa Begin transaction và End transaction
Các lệnh của giao dịch bao gồm:
- Start(): Bắt đầu thực hiện một giao dịch
- Commit(): Kết thúc thành công một giao dịch
- Abort(): Hủy bỏ một giao dịch
2.2.2 Tính chất của giao dịch
a) Tính nguyên tố (Atomicity)
Một giao dịch khi thực hiện thành công với sự phản ánh đúng trong cơ
sở dữ liệu hoặc bị hủy bỏ và không có thay đổi gì trong cơ sở dữ liệu
Một giao dịch kết thúc thành công (gọi lệnh Commit) sau khi hoàn tất những lệnh của nó Nếu người sử dụng được báo là đã kết thúc thành
Trang 24công một giao dịch thì họ sẽ chắc chắn rằng những thay đổi được thực hiện bởi giao dịch sẽ được cập nhật trên cơ sở dữ liệu
Một giao dịch có thể bị hủy bỏ (gọi lệnh Abort) sau khi thực hiện vài lệnh Trong trường hợp này, cơ sở dữ liệu phục hồi lại các thay đổi dữ liệu do các lệnh đó thực hiện Lệnh Abort() được gọi có thể do nguyên nhân phía người dùng hoặc hệ thống phát sinh lỗi Lệnh này cũng được gọi để loại trừ những kết quả chưa hoàn thiện
b) Tính nhất quán (Consistency)
Mỗi giao dịch phải bảo toàn sự nhất quán dữ liệu
Hình thức nhất quán dữ liệu có thể được thực hiện bởi hệ thống thông qua ràng buộc toàn vẹn
Ràng buộc toàn vẹn hoạt động như bộ lọc, xác định rằng một giao dịch được chấp nhận hay không
c) Tính biệt lập (Isolation)
Khi người sử dụng gửi đi các giao dịch, mỗi giao dịch được thực hiện bởi chính nó, không để lộ kết quả của nó cho những giao dịch khác cùng hoạt động trước khi nó kết thúc
Đảm bảo cho mọi kết quả luôn luôn đúng, thậm chí khi có nhiều giao dịch được thực hiện đồng thời trên cùng một mục dữ liệu
Các kết quả từ việc xử lý giao dịch đồng thời cũng giống từ việc xử lý giao dịch nối tiếp
Tuân theo giao thức xử lý đồng thời
d) Tính bền vững (Durability)
Đảm bảo một giao dịch khi kết thúc, kết quả của chúng được duy trì
và không bị xóa khỏi cơ sở dữ liệu Vì thế, hệ quản trị cơ sở dữ liệu đảm bảo rằng kết quả giao dịch luôn tồn tại dù xảy ra sự cố hệ thống, bằng cách: Phục hồi những thay đổi trên đĩa tại thời điểm kết thúc giao dịch
Trang 25Ghi lại những thay đổi vào một file log trên đĩa và tại thời điểm bắt đầu lại, đọc file log này và phục hồi lại những thay đổi trước đó của giao dịch
Trường hợp đĩa bị lỗi, dữ liệu được phục hồi từ dữ liệu sao lưu dự phòng, đĩa mirror,
e) Ví dụ
Giả sử rằng có một CSDL về thông tin ngân hàng
Accounts : chứa thông tin về tài khoản và số dư của khách hàng
Công việc cần thực hiện là chuyển tiền từ tài khoản của một ngân hàng sang một tài khoản của một ngân hàng khác
Ví dụ 1
- Thủ tục sau đây mô phỏng giao dịch chuyển tiền:
Procedure Transfer Begin
Start;
input(fromaccount, toaccount, amount);
/‟ This procedure transfers “amount” from “fromaccount” into
“toaccount.‟ ” temp : = Read(Accounts[fromaccount]);
if temp < amount then
begin output(“insufficient funds”);
Abort;
end else
Trang 26output( “transfer completed”);
- Giả sử AccountID =‟00001‟ có số tiền hiện tại là 1.000.000 đồng
- Nếu đồng thời có hai khách hành muốn chuyển vào tài khoản này, khách thứ nhất muốn chuyển vào 1.000.000 đồng và khách thứ hai là 100.000.000 đồng
Trang 27- Giả sử các giao dịch thực thi của procedure Deposit như sau:
(Nếu X<A) Read1(Accounts[ „00001‟]) trả về 1.000.000 Read2(Accounts[„00001‟]) returns the value 1.000.000 Write2(Accounts[„00001‟], 101.000.000)
Commit2 Write1(Accounts[„00001‟], 2.000.000) Commit1
- Câu hỏi đặt ra là sau khi chuỗi giao dịch này kết thúc thì số tiền hiện có trong tài khoản là bao nhiêu?
- Câu trả lời là 2.000.000
- Nhận xét:
Kết quả này hoàn toàn không chấp nhận được vì công ty có tài khoản „00001‟ phải có số tiền như mong muốn là 102.000.000 đồng
Có vấn đề phát sinh từ việc thực hiện xen kẽ các lệnh từ nhiều giao dịch khác nhau
Để khắc phục những vấn đề này ta cần phải soát chúng một cách chặt chẽ theo phương pháp xử lý đồng hành Đó chính là nội dung cốt lõi của đề tài này
2.2.3 Trạng thái của giao dịch
Trong quá trình thực thi, giao dịch ở một trong các trạng thái sau:
Tích cực (Active): là trạng thái từ lúc khởi đầu giao dịch, trạng thái này được giữ khi giao dịch đang thực hiện
Được bàn giao bộ phận (Partially Committed): là trạng thái khi lệnh cuối cùng của giao dịch được thực hiện
Thất bại (Failed): là trạng thái sau khi phát hiện giao dịch không thể tiếp tục thực hiện được nữa
Bỏ dở (Aborted): là trạng thái sau khi giao dịch đã bị cuộn lại và cơ sở
dữ liệu đã phục hồi lại trạng thái của nó trước khi khởi động giao dịch
Trang 28Được bàn giao (Committed): là trạng thái sau khi hoàn thành thành công giao dịch
Một giao dịch khởi đầu bởi trạng thái tích cực (Active) Giao dịch khi kết thúc lệnh sau cùng, nó chuyển sang trạng thái được bàn giao bộ phận Tại thời điểm này, giao dịch đã hoàn thành việc thực hiện, nhưng nó vẫn có thể bị bỏ dở do đầu ra vẫn có thể tạm trú trong bộ nhớ chính và như thế một sự cố phần cứng sẽ ngăn cản
sự hoàn tất giao dịch Khi đó, cơ sở dữ liệu đã kịp viết lên đĩa đầy đủ thông tin giúp cho việc tái tạo các cập nhật đã được thực hiện Khi hệ thống khởi động lại sau sự
cố, các thông tin sau cùng này được ghi chính thức vào cơ sở dữ liệu và giao dịch chuyển sang trạng thái committed
Một giao dịch được gọi là kết thúc nếu nó hoặc là được bàn giao (Committed) hoặc là bỏ dở (Aborted)
Hình 2.3: Biểu đồ trạng thái của giao dịch
Giả thiết rằng sự cố hệ thống không gây mất dữ liệu trên đĩa, một giao dịch đi vào trạng thái thất bại (Failed) sau khi hệ thống xác định là giao dịch không thể thực hiện được nữa (do lỗi phần cứng hoặc phần mềm) Giao dịch chuyển sang trạng thái
bỏ dở Tại điểm này, hệ thống có hai lựa chọn:
Khởi động lại giao dịch nếu giao dịch bị bỏ dở là do lỗi phần cứng hoặc phần mềm mà không liên quan đến logic bên trong giao dịch Giao dịch được khởi động lại và được xem như một giao dịch mới
Hủy bỏ giao dịch nếu giao dịch bị bỏ dở là do lỗi logic bên trong giao dịch, lỗi này cần được chỉnh sửa bằng cách viết lại chương trình ứng
Tích cực
(Active)
Bàn giao bộ phận
Thất bại
Được Bàn giao
Bỏ dở
Trang 29dụng hoặc do dữ liệu đầu vào xấu hoặc do dữ liệu mong muốn không tìm thấy trong cơ sở dữ liệu
2.2.4 Xử lý giao dịch
Mỗi giao dịch liên kết tất cả các tác vụ đọc/ghi của nó với bộ quản lý giao dịch
Bộ quản lý giao dịch liên kết từng giao dịch đọc/ghi với bộ lập lịch
Bộ lập lịch điều khiển chuỗi giao dịch, theo đó bộ quản trị dữ liệu xử lý các lệnh đọc/ghi và duy trì điều khiển tương tranh
Khi bộ lập lịch nhận một thao tác từ bộ quản lý giao dịch, nó có ba lựa chọn thực hiện:
Ngay lập tức thực hiện lập lịch cho giao dịch đó bằng cách gửi nó đến
Trong kiến trúc này, bộ quản lý giao dịch thực hiện các thao tác cơ sở dữ liệu thay cho ứng dụng
Bộ lập lịch có nhiệm vụ thực hiện các thuật toán điều khiển tương tranh nhằm đồng bộ các thao tác truy cập vào cơ sở dữ liệu
Trong kiến trúc phân tán, các giao dịch có thể truy cập từ nhiều vị trí khác nhau Vì vậy, tại mỗi vị trí sẽ có một bộ quản lý giao dịch cục bộ nhằm đáp ứng:
Duy trì nhật ký (Log) cho việc khôi phục dữ liệu
Tham gia trong việc điều khiển tương tranh các giao dịch thực hiện tại
vị trí đó
Tại mỗi vị trí sẽ có thêm một bộ phối hợp giao dịch nhằm:
Khởi tạo các giao dịch phát sinh tại chỗ
Trang 30Phân phối các giao dịch con (subtransaction) đến các vị trí thích hợp để thực thi
Đối với giao dịch xuất phát tại chỗ mà giao dịch này đã đƣợc hoàn tất hoặc bị hủy bỏ tại tất cả các vị trí, bộ phối hợp giao dịch có nhiệm vụ kết thúc giao dịch đó
2.3 Lịch biểu
2.3.1 Khái niệm lịch biểu
Lịch biểu của một giao dịch là một chuỗi các lệnh đƣợc thực hiện trong hệ thống theo thứ tự thời gian Một lịch biểu đối với một tập các giao dịch phải bao gồm tất cả các lệnh của tất cả các giao dịch này và phải bảo toàn thứ tự mà các lệnh xuất hiện trong mỗi giao dịch cá thể theo thứ tự đó Lịch biểu tạo mối liên hệ ràng buộc giữa các giao dịch với nhau
Trang 31dữ liệu không nhất quán Khi một số giao dịch thực hiện đồng thời và có cạnh tranh một số khoản mục dữ liệu trong cơ sở dữ liệu, tính nhất quán có thể không còn được bảo toàn nữa Do vậy, hệ thống cần điều khiển sự tương tác giữa các giao dịch đồng thời Do một giao dịch là một đơn vị xử lý nguyên tố đảm bảo tính nhất quán dữ liệu, một sự thực hiện tuần tự của các giao dịch sẽ đảm bảo tính nhất quán được bảo toàn Do vậy, chúng ta đòi hỏi một lịch biểu thực hiện được sinh ra bởi việc xử lý đồng thời một tập các giao dịch, có một tác động tương đương với một lịch biểu thực hiện được sinh ra với các giao dịch thực hiện tuần tự theo một thứ tự nào đó Một hệ thống đảm bảo tính chất này được nói là đảm bảo tính khả tuần tự Vậy ta hãy xét đến khái niệm về lịch biểu tuần tự, khả tuần tự và bất tuần tự
* Lịch biểu tuần tự:
Một lịch biểu H được gọi là tuần tự nếu mọi giao dịch T trong H đều có tất
cả các lệnh của T và được thực hiện liên tiếp nhau
Trang 32Hình 2.4: Lịch biểu tuần tự
Ta nhận thấy rằng: các lệnh trong T
1 thực hiện trước, sau đó đến các lệnh trong T
* Lịch biểu bất tuần tự:
Một lịch biểu H được gọi là bất tuần tự nếu với mọi giao dịch T trong H, tất
cả các lệnh của T trong H được thực hiện không liên tiếp nhau
Ví dụ:
Hình 2.5: Lịch biểu bất tuần tự
Ta nhận thấy rằng: các lệnh thứ 1 và 2 trong T
1 được thực hiện trước, sau đó thực hiện tiếp 2 lệnh thứ 1 và thứ 2 trong T
2 Vì lệnh thứ 2 trong T
2 thực hiện sau, nên giá trị trong X bây giờ đã được thay đổi, dẫn đến khi lệnh thứ 3 trong T
1 được
Trang 33thực hiện thì giá trị X không còn đúng nhƣ lệnh 2 trong T
Ví dụ về lịch biểu tuần tự và khả tuần tự:
Giả sử ta có các giao dịch sau:
Bảng 2.1: Bảng mô tả các giao dịch
R(X) W(X) COMMIT
W(X) W(Y) R(Z) COMMIT
R(X) R(Y) R(Z) COMMIT
Trang 34R(x) W(y)
R(y) W(x)
2.4.2 Tiến trình không tuần tự
2.4.3 Hai thao tác xung đột
Hai thao tác đƣợc gọi là xung đột nếu thỏa 3 điều kiện sau:
- Truy xuất cùng 1 mục dữ liệu x
- Chúng thuộc hai giao dịch khác nhau
- Ít nhất một trong hai thao tác là write-item
Trang 35Ví dụ:
Cặp thao tác <Ri(x), Wj(x)> và <Wi(x), Wj(x)> là xung đột
Cặp thao tác <Ri(x), Rj(x)>, <Wi(x), Wj(y)> và <Wi(x), Rj(y)> là không xung đột
2.4.4 Tiến trình tương đương
Hai tiến trình được gọi là tương đương nếu bất kỳ hai thao tác xung đột nào trong cả hai tiến trình có cùng thứ tự
Ví dụ: Tiến trình S khả tuần tự do tương đương với tiến trình tuần tự S‟
Bảng 2.4: Bảng biểu diễn tiến trình khả tuần tự
Read_item(X) X:=X-N Write_item(X) Read_item(Y) Y:=Y+N Write_item(Y)
Read_item(X) X:=X+M Write_item(X)
Trang 362.4.6 Tính khả tuần tự trong cơ sở dữ liệu phân tán
Thực hiện n tiến trình phân tán T1, T2, ….Tn ở m vị trí trong bảng cục bộ S1, S2, …., Sm
S1(site 1): Ri(x) Wi(x) Rj(x) Wj(x)
S2(site 2): Rj(y) Wj(y) Ri(y) Wi(y)
Nếu áp dụng với mỗi nút kỹ thuật điều khiển tương tranh cục bộ Chúng ta
có thể đảm bảo rằng tất cả các bảng cục bộ đều có tính tuần tự Tuy nhiên, tính tuần
tự của bảng cục bộ không đủ đảm bảo rằng thực hiện đúng trong tiến trình phân tán Ti<Tj trong Serial(S1) và Tj<Ti trong Serial(S2)
Trang 37CHƯƠNG 3 ĐIỀU KHIỂN TƯƠNG TRANH TRONG CƠ SỞ DỮ LIỆU PHÂN TÁN
-p
3.1 Cơ sở của điều khiển tương tranh phân tán
Điều khiển tương tranh là điều khiển các giao dịch được thực thi trùng nhau
về mặt thời gian, xảy ra đồng thời
Bài toán về các giao dịch thực hiện đồng thời
Có một CSDL về thông tin ngân hàng
Accounts : chứa thông tin về tài khoản và số dư của khách hàng
Giả sử Account X có số tiền hiện tại là 1.000.000 đồng
Nếu đồng thời có hai khách hành muốn chuyển tiền vào tài khoản này
- Khách thứ nhất muốn chuyển vào 2.000.000 đồng
Trang 38Khi kết thúc các giao dịch giá trị của X là 101.000.000 bởi vì hành động ghi của T2 sẽ ghi đè lên kết quả ghi của T1
Để khắc phục những vấn đề này ta phải xem xét về phương pháp điều khiển tương tranh
Khi một số giao dịch thực hiện đồng thời và có cạnh tranh một số khoản mục
dữ liệu trong cơ sở dữ liệu đòi hỏi một tiến trình thực hiện đƣợc sinh ra bởi việc xử