Vấn đề điều khiển tương tranh là một vấn đề quan trọng trong một hệ quản trị cơ sở dữ liệu phân tán vì: 1 Tại một thời điểm có thể có nhiều người sử dụng cùng truy xuất dữ liệu lưu trong
Trang 11.1.CƠ SỞ DỮ LIỆU PHÂN TÁN 2
1.1.1 Khái niệm 2
1.1.2 Lợi điểm của Hệ cơ sở dữ liệu phân tán 2
1.2.QUẢN TRỊ CƠ SỞ DỮ LIỆU PHÂN TÁN 3
CHƯƠNG II QUẢN TRỊ TƯƠNG TRANH 6
2.1 MÔ HÌNH XỬ LÍ GIAO TÁC 7
2.1.1 Các định nghĩa 7
2.1.2 Mô hình xử lý giao tác tập trung 9
2.1.3 Mô hình xử lý giao tác phân tán 10
2.2 PHÂN TÍCH BÀI TOÁN ĐIỀU KHIỂN TƯƠNG TRANH 11
2.2.1 Tính khả tuần tự 13
2.2.2 Mô hình điều khiển tương tranh 15
2.2.3 Thời gian và nhãn thời gian trong CSDL phân tán 16
2.3 CÁC KỸ THUẬT ĐIỂU KHIỂN TƯƠNG TRANH 17
2.3.1 Các kỹ thuật đồng bộ hóa dựa trên khóa hai pha 17
2.3.2 Quá trình thực hiện 2PL cơ bản 18
2.3.3 Kỹ thuật 2PL sao chép chính 18
2.3.4 Kỹ thuật 2PL biểu quyết 19
2.3.5 Kỹ thuật 2PL tập trung 19
2.3.6 Phát hiện và ngăn chặn tắc nghẽn 20
2.4 CÁC KỸ THUẬT ĐỒNG BỘ HÓA DỰA TRÊN TRẬT TỰ NHÃN THỜI GIAN 24
2.4.1 Sự thực hiện T/O cơ bản 24
2.4.2 Luật ghi Thomas 26
2.4.3 Đa phiên bản T/O 26
2.4.2 Luật ghi Thomas 29
2.4.3 Đa phiên bản T/O 29
2.4.4 Duy trì T/O 31
2.4.5 Quản lý nhãn thời gian 31
2.5 DC-ROLL 32
2.5.1 ROLL (Request Order Linked List ) 33
2.5.2 Kiến trúc chu trình dữ liệu gốc 35
2.5.3 DC-ROLL 36
Trang 2dữ liệu tập trung và phù hợp xu hướng phát triển tự nhiên với cơ cấu không tập trung của các tổ chức, công ty doanh nghiệp
Nói tóm lại, một cơ sở dữ liệu (CSDL) phân tán là một tập hợp dữ liệu,
mà về mặt logic tập hợp này thuộc cùng một hệ thống, nhưng về mặt vật lý dữ liệu đó được trải trên các vị trí khác nhau của một mạng máy tính
Như vậy có hai vấn đề của cơ sở dữ liệu phân tán với tầm quan trọng tương đương nhau:
Việc phân tán : Trong thực tế dữ liệu không đặt trên cùng một vị trí vì vậy đây
là đặc điểm để phân biệt cơ sở dữ liệu phân tán với cơ sở dữ liệu tập trung và cơ sở
dữ liệu đơn lẻ
Liên quan logic : Trong cơ sở dữ liệu phân tán, dữ liệu có một số đặc tính liên
kết chặt chẽ với nhau như tính kết nối, tính liên quan logíc Trong cơ sở dữ liệu tập trung, mỗi vị trí quản lý một cơ sở dữ liệu và người sử dụng phải truy cập đến cơ sở
dữ liệu ở những vị trí khác nhau để lấy thông tin tổng hợp
1.1.2 Lợi điểm của Hệ cơ sở dữ liệu phân tán
Có nhiều nguyên nhân để phát triển cơ sở dữ liệu phân tán nhưng trung lại chỉ gồm những điểm sau đây:
Lợi điểm về tổ chức và tính kinh tế:tổ chức phân tán nhiều chi nhánh và dùng
cơ sở dữ liệu phân tán phù hợp với các tổ chức kiểu này Với vai trò là động lực thúc đẩy kinh tế thương mại phát triển rộng hơn, thì việc phát triển các trung tâm máy tính phân tán ở nhiều vị trí trở thành nhu cầu cần thiết
Trang 3Tận dụng những cơ sở dữ liệu sẵn có: Hình thành cơ sở dữ liệu phân tán từ các
cơ sở dữ liệu tập trung có sẵn ở các vị trí địa phương
Thuận lợi cho nhu cầu phát triển: Xu hướng dùng cơ sở dữ liệu phân tán sẽ cung cấp khả năng phát triển thuận lợi hơn và giảm được xung đột về chức năng giữa các đơn vị đã tồn tại và giảm được xung đột giữa các chương trình ứng dụng khi truy cập đến cơ sở dữ liệu Với hướng tập trung hoá, nhu cầu phát triển trong tương lai sẽ gặp khó khăn
Giảm chi phí truyền thông: Trong cơ sở dữ liệu phân tán chương trình ứng dụng đặt ở địa phương có thể giảm bớt được chi phí truyền thông khi thực hiện bằng cách khai thác cơ sở dữ liệu tại chỗ
Tăng số công việc thực hiện:Hệ cơ sở dữ liệu phân tán có thể tăng số lượng công việc thực hiện qua áp dụng nguyên lý xử lý song song với hệ thống xử lý đa nhiệm Tuy nhiên cơ sở dữ liệu phân tán cũng có tiện lợi trong việc phân tán dữ liệu như tạo ra các chương trình ứng dụng phụ thuộc vào tiêu chuẩn mở rộng vị trí làm cho các nơi xử lý có thể hỗ trợ lẫn nhau Do đó tránh được hiện tượng tắc nghẽn cổ chai trong mạng truyền thông hoặc trong các dịch vụ thông thường của toàn bộ hệ thống
Tính dễ hiểu và sẵn sàng: Hướng phát triển cơ sở dữ liệu phân tán cũng nhằm đạt được tính dễ hiểu và tính sẵn sàng cao hơn Tuy nhiên để đạt được mục tiêu này không phải là dễ làm và đòi hỏi sử dụng kỹ thuật phức tạp Khả năng xử lý tự trị của các điểm làm việc khác nhau không đảm bảo tính dễ sử dụng
Hai nguyên nhân về mặt kỹ thuật đáp ứng cho sự phát triển hệ cơ sở dữ liệu phân tán:
- Công nghệ tạo ra máy tính nhỏ và nền tảng phần cứng có khả năng phục vụ xây dựng hệ thống thông tin phân tán
- Kỹ thuật thiết kế hệ cơ sở dữ liệu phân tán được phát triển vững chắc dựa trên hai kỹ thuật thiết kế chính là Top-down và Bottom-up từ những năm thập kỷ 60
Kỹ thuật thiết kế cơ sở dữ liệu phân tán phức tạp nhưng hệ cơ sở dữ liệu phân tán cũng cần thiết cho xu hướng phát triển kinh tế hiện nay
1.2.QUẢN TRỊ CƠ SỞ DỮ LIỆU PHÂN TÁN
Hệ quản trị cơ sở dữ liệu phân tán cung cấp công cụ như tạo lập và quản lý cơ
sở dữ liệu phân tán Phân tích đặc điểm của hệ thống quản trị cơ sở dữ liệu phân tán như dưới đây để phân biệt hệ thống phát triển theo kiểu thương mại có sẵn và kiểu mẫu phân tán
Hệ thống phát triển theo kiểu thương mại có sẵn được phát triển bởi những
Trang 4người cung cấp hệ cơ sở dữ liệu tập trung Hệ cơ sở dữ liệu tập trung mở rộng bằng cách thêm vào những phần bổ xung qua cách cung cấp thêm đường truyền và điều khiển giữa các hệ quản trị cơ sở dữ liệu tập trung cài đặt ở những điểm khác nhau trên mạng máy tính Những phần mềm cần thiết cho việc xây dựng cơ sở dữ liệu phân tán là:
Phần quản lý cơ sở dữ liệu ( Database Management -DB )
Phần truyền thông dữ liệu (Data Communication - DC)
Từ điển dữ liệu được mở rộng để thể hiện thông tin về phân tán dữ liệu
trong mạng máy tính (Data Dictionary - DD)
Phần cơ sở dữ liệu phân tán (Distributed Database DDB)
Mô hình các thành phần của hệ quản trị cơ sở dữ liệu phát triển theo kiểu thương mại (Truy cập từ xa trực tiếp)
Những dịch vụ hệ quản trị cơ sở dữ liệu cung cấp:
- Cách thức truy cập dữ liệu từ xa: bằng chương trình ứng dụng
- Lựa chọn một cấp độ trong suốt phân tán thích hợp:cho phép mở rộng hệ thống theo nhiều cách khác nhau theo từng hoàn cảnh (phải cân nhắc giữa cấp độ trong suốt phân tán và phân chia công việc thực hiện để công việc quản trị hệ thống đơn giản hơn)
- Quản trị và điều khiển cơ sở dữ liệu bao gồm công cụ quản lý cơ sở dữ liệu, tập hợp thông tin về các thao tác trên cơ sở dữ liệu và cung cấp thông tin tổng thể về file dữ liệu đặt ở các nơi trong hệ thống
Trang 5- Điều khiển tương tranh và điều khiển hồi phục dữ liệu của giao tác phân tán Cách thức truy cập cơ sở dữ liệu từ xa qua chương trình ứng dụng theo hai cách
cơ bản: Truy cập từ xa trực tiếp và gián tiếp
Hình 1.2 Mô hình truy cập từ xa qua phương thức cơ sở của hệ quản trị cơ sở dữ liệu
Theo mô hình trực tiếp trên, chương trình ứng dụng đưa ra yêu cầu truy cập đến cơ sở dữ liệu từ xa, yêu cầu này được hệ quản trị cơ sở dữ liệu tự động tìm nơi đặt dữ liệu và thực hiện yêu cầu tại điểm đó Kết quả được trả lại cho chương trình ứng dụng Đơn vị chuyển đổi giữa hai hệ quả trị cơ sở dữ liệu là phương thức truy cập cơ sở dữ liệu và kết quả nhận được (thông qua việc thực hiện phương thức truy cập này) Mô hình dưới đây mô tả cách thức truy cập phức tạp hơn (truy cập gián tiếp):
Theo mô hình truy cập này, chương trình ứng dụng thực hiện yêu cầu qua chương trình phụ ở điểm khác Chương trình phụ này được người lập trình ứng dụng viết để truy cập từ xa đến cơ sở dữ liệu và trả về kết quả của chương trình ứng dụng yêu cầu
Trang 6CHƯƠNG II QUẢN TRỊ TƯƠNG TRANH
Điều khiển tương tranh là một hoạt động kết hợp các truy xuất đồng thời vào một hệ quản trị cơ sở dữ liệu đa người dùng Điều khiển tương tranh cho phép nhiều người dùng truy xuất vào cơ sở dữ liệu trong khi đó lại làm cho mỗi người sử dụng có cảm tưởng như chỉ có mình họ đang thao tác trên một cơ sở dữ liệu riêng biệt Khó khăn chính là ngăn chặn việc cập nhật cơ sở dữ liệu của một người dùng trong khi cơ sở dữ liệu đang được cập nhật bởi một người khác Vấn đề điều khiển tương tranh là một vấn đề quan trọng trong một hệ quản trị cơ sở dữ liệu phân tán vì:
(1) Tại một thời điểm có thể có nhiều người sử dụng cùng truy xuất dữ liệu lưu trong các trạm khác nhau của một hệ phân tán;
(2) Một cơ chế điều khiển tương tranh tại một máy tính không thể ngay lập tức biết được sự tương tác tại các máy tính khác
Điều khiển tương tranh đã được nghiên cứu trong nhiều năm qua, đối với các
hệ quản trị cơ sở dữ liệu tập trung thì bài toán này đã được giải quyết rất tốt Một lý thuyết toán học đã được phát triển để phân tích vấn đề điều khiển tương tranh và trên
cơ sở đó đã đưa ra một phương pháp chuẩn để giải quyết điều này, đó là phương pháp “khóa hai pha” (two- phase locking) Những nghiên cứu gần đây về điều khiển tương tranh trong cơ sở dữ liệu tập trung chỉ còn tập trung vào việc cải tiến khóa hai pha với mong muốn hệ thống đạt được điều tối ưu nhất trong vấn đề này
Đối với điều khiển tương tranh trong môi trường phân tán thì phức tạp hơn nhiều Hơn 20 thuật toán điều khiển tương tranh đã được đưa ra và chỉ một vài thuật toán trong số đó đang được sử dụng Những thuật toán này thường phức tạp, khó hiểu, khó chứng minh tính đúng đắn (thực tế là có nhiều thuật toán không chính xác) Vì chúng được mô tả bằng nhiều thuật ngữ khác nhau và tạo nên những giả định khác nhau về môi trường hệ quản trị cơ sở dữ liệu phân tán cơ bản, nên rất khó để so sánh các thuật toán với nhau, thậm chí là trên lĩnh vực định lượng Thực tế thì mỗi tác giả đều cho rằng phương pháp của họ là tốt nhất, nhưng có rất ít bằng chứng thuyết phục ý kiến đó
Trong chương này chúng ta sẽ làm quen với một số thuật ngữ chuẩn để mô tả các thuật toán điều khiển tương tranh trong môi trường các hệ quản trị cơ sở dữ liệu phân tán và một mô hình chuẩn cho môi trường này Bài toán điều khiển tương tranh được tách làm hai bài toán con là đồng bộ hóa đọc-ghi và ghi- ghi Mọi thuật toán điều khiển tương tranh phải bao gồm hai thuật toán con để giải quyết hai bài toán con này Bước đầu tiên nhằm mục đích hiểu một thuật toán điều khiển tương tranh tách biệt với thuật toán con trong mỗi bài toán con Thực ra, các thuật toán con đều được các thuật toán điều khiển tương tranh trong hệ quản trị cơ sở dữ liệu phân
Trang 72.1 MÔ HÌNH XỬ LÍ GIAO TÁC
Để 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
2.1.1 Các định nghĩa
Thông thường mỗi trạm trong một hệ phân tán là một máy tính chạy một hoặc hai module phần mềm: quản lý giao tác (TM-Transaction Management) hoặc quản lý
dữ liệu (DT-Data Management) Các TM quản lý mối tương tác giữa người dùng và
hệ quản trị cơ sở dữ liệu phân tán (DDBMS) trong khi DM quản lý cơ sở dữ liệu hiện tại Để dễ dàng trình bày các định nghĩa liên quan đến TM và DM chúng ta giả sử rằng, mạng là một hệ thống giao tiếp giữa các máy tính, có độ tin cậy tuyệt đối, nghĩa là: nếu trạm A gửi thông điệp tới trạm B thì trạm B được đảm bảo là nhận được thông điệp đó mà không hề có lỗi, đồng thời việc phân phối các thông điệp tới các trạm theo thứ tự mà chúng được gửi đi
Dưới góc độ người sử dụng, một cơ sở dữ liệu bao gồm một tập các mục dữ liệu logic kí hiệu là X, Y, Z Trạng thái của một cơ sở dữ liệu logic là một chỉ định các giá trị đến các mục dữ liệu logic trong cơ sở dữ liệu Mỗi mục dữ liệu logic được lưu tại bất cứ DM nào trong hệ thống hoặc dư thừa tại một vài DM Một bản sao được lưu trữ của một mục dữ liệu logic được gọi là “mục dữ liệu lưu trữ”, các bản sao của X kí hiệu là x1,…, xm và kí hiệu x đề chỉ đến một mục dữ liệu lưu trữ bất kỳ Trạng thái của cơ sở dữ liệu lưu trữ là một chỉ định các giá trị tới các mục dữ liệu lưu trữ trong một cơ sở dữ liệu
Người dùng tương tác với DDBMS thông qua các giao tác đang thực thi Các giao tác này là các truy vấn trực tuyến biểu diễn bằng ngôn ngữ truy vấn độc lập hoặc các chương trình ứng dụng được viết bởi một ngôn ngữ lập trình đa năng Tập đọc logic (logical Readset) và tập ghi logic (logical writeset) của một giao tác
là một tập các mục dữ liệu logic mà các giao tác đọc, ghi sử dụng Tương tự, tập đọc lưu trữ (stored readset), tập ghi lưu trữ (stored writeset) là tập các mục dữ liệu lưu trữ mà giao tác đọc, ghi sử dụng
Độ chính xác của các thuật toán điều khiển tương tranh được định nghĩa liên quan tới việc người sử dụng muốn biết rõ sự thực thi của các giao tác Có hai tiêu chuẩn liên quan đến vấn đề này:
(1) Người dùng mong muốn rằng mỗi giao tác được báo cho hệ thống biết là
nó sẽ được thực hiện;
(2) Người dùng mong rằng việc tính toán được thực hiện bởi mỗi giao tác là như nhau cho dù nó thực thi một mình trong một hệ thống chuyên dụng hay song song với các giáo tác khác trong một hệ thống đa chương trình Đây chính là vấn đề
cơ bản trong điều khiển tương tranh
Trang 8Một DDBMS gồm bốn thành phần (hình 2.1): các giao tác, TM, DM và dữ liệu Các giao tác kết nối với các TM, TM kết nối với DM và DM quản lý dữ liệu (các TM không kết nối với các TM khác, các DM cũng không kết nối với nhau) Chức năng của TM là quản lý các giao tác Mỗi giao tác được thực thi trong DDBMS dưới sự giám sát của một TM, nghĩa là giao tác 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 tác đều được quản lý bới TM
Hình 2.1: Kiến trúc hệ thống DDBMS
Bốn loại thao tác được định nghĩa tại giao diện giao tác-TM là:
READ(X): trả lại giá trị của X trong trạng thái cơ sở dữ liệu logic hiện hành
WRITE(X-new value): tạo một trạng thái cơ sở dữ liệu logic mới trong đó
Trang 9cầu từ các giao tác, TM phát lệnh tới DM có chứa mục dữ liệu lưu trữ cần thiết để đọc hoặc ghi vào mục dữ liệu liên quan
2.1.2 Mô hình xử lý giao tác tập trung
Một hệ quản trị cơ sở dữ liệu tập trung bao gồm một mô đun quản lý giao tác (TM-Transaction Manager) và một mô đun quản lý dữ liệu (DM- Data manager) xử
lý ở một nơi khác Một giao tác T truy cập hệ quản trị cơ sở dữ liệu bằng cách phát
ra các thao tác BEGIN, READ, WRITE và END, các thao tác này được xử lý như sau
BEGIN: Module quản lý giao tác TM khởi tạo một không gian làm việc cá nhân cho giao tác T, không gian này có chức năng như một bộ nhớ đệm tạm thời lưu trữ các giá trị đọc và ghi vào cơ sở dữ liệu
READ(X): TM tìm một bản sao của X trong không gian làm việc của T Nếu bản sao này tồn tại, giá trị của nó sẽ trả lại cho T Ngược lại, TM phát ra một tín hiệu đọc(X) tới cơ sở dữ liệu để lấy bản sao của X từ cơ sở dữ liệu, sau đó gán giá trị vừa lấy cho T và đưa nó vào không gian làm việc của T
WRITE(X, new value): TM kiểm tra lại không gian làm việc riêng của bản sao X Nếu tồn tại, giá trị X được cập nhật cho giá trị mới Ngược lại, một bản sao của X với giá trị mới được tạo ra trong không gian làm việc Giá trị mới của X không được lưu trong cơ sở dữ liệu tại thời điểm này
END: TM phát ra lệnh dm-write(X) cho mỗi mục dữ liệu logic X được cập nhật bởi T Mỗi lệnh dm-write(X) yêu cầu module quản lý dữ liệu cập nhật giá trị của X trong cơ sở dữ liệu đã được lưu bằng giá trị của X trong không gian làm việc của T Khi tất cả các lệnh dm-write đã được thực hiện, giao tác T sẽ kết thúc quá trình xử lý và không gian làm việc riêng của nó được xóa đi
Hệ quản trị cơ sở dữ liệu có thể khởi tạo lại T trước mỗi quá trình xử lý lệnh dm-write Tác dụng của việc khởi tạo lại T là xóa không gian làm việc riêng của nó
và thực hiện lại giao tác T từ đầu Rất nhiều thuật toán điều khiển tương tranh sử dụng thao tác khởi động lại như một cách để làm đúng các hoạt động của giao tác Tuy nhiên, khi một lệnh dm-write đơn được xử lý, T có thể không được khởi động lại Mỗi lệnh dm-write cài đặt một cách cố định việc cập nhật vào cơ sở dữ liệu và chúng ta không được phép tác động đến từng phần của các giao tác
Một hệ quản trị cơ sở dữ liệu phân tán có thể tránh những kết quả từng phần như thế bằng cách sử dụng một thuộc tính nguyên tố, thuộc tính này yêu cầu các thuộc tính khác của lệnh dm-write của giao tác có được thực thi hay không Thao tác chuẩn của thuộc tính nguyên tố này là một thủ tục gọi là cam kết hai pha Giả sử T đang cập nhật hai mục dữ liệu X và Y Khi T phát lệnh END thì giai đoạn đầu tiên của cam kết hai pha sẽ bắt đầu, trong khi đó DM đưa ra yêu cầu ghi đối với X và Y Những lệnh này yêu cầu DM sao chép dữ liệu X và Y từ không gian làm vệc riêng
Trang 10của T vào nơi lưu trữ an toàn Nếu hệ quản trị cơ sở dữ liệu bị treo ở giai đoạn đầu tiên, thì sẽ không có thiệt hại nào ở kho dữ liệu, kể từ khi không có một cập nhật nào của T được ghi nhận vào kho lưu trữ của cơ sở dữ liệu Trong suốt giai đoạn thứ hai, TM phát ra lệnh dm-write đối với X và Y, yêu cầu DM sao chép giá trị của
X và Y vào kho dữ liệu Nếu hệ quản trị cơ sở dữ liệu bị treo trong suốt giai đoạn thứ hai, cơ sở dữ liệu có thể chứa thông tin không đúng, nhưng giá trị của X và Y được lưu trong kho lưu trữ an toàn, mâu thuẩn này có thể được khắc phục bằng cách khôi phục lại hệ thống: thủ tục khôi phục lại đọc giá trị của X và Y từ nơi lưu trữ an toàn
và khôi phục lại cam kết
Chú ý rằng đây là mô hình toán học của quá trình xử lý giao tác, một ước lượng chức năng thực của các hệ quản trị cơ sở dữ liệu Trong khi các chi tiết hoạt động của nguyên tố cam kết là quan trọng trong việc thiết kế một hệ quản trị cơ
sở dữ liệu, nhưng chúng không phải là chi tiết trọng tâm để hiểu về điều khiển tương tranh Để giải thích các thuật toán điều khiển tương tranh, chúng ta cần một mô hình xử lý giao tác với nguyên tố cam kết nhìn thấy được, nhưng không bao quát
2.1.3 Mô hình xử lý giao tác phân tán
Mô hình xử lý giao tác trong môi trường phân tán khác với trong môi trường tập trung ở hai điểm: điều khiển các không gian làm việc riêng và xử lý cam kết hai pha
- Trong các hệ quản trị cơ sở dữ liệu tập trung, chúng ta giả thiết rằng:
- Không gian làm việc riêng là một phần của TM;
- Dữ liệu di chuyển một cách tự do giữa giao tác và không gian làm việc của nó, cũng như giữa không gian làm việc của giao tác và DM
Những giả thiết trên không còn thích hợp trong hệ quản trị cơ sở dữ liệu phân tán vì các TM và DM thực hiện ở những địa điểm khác nhau và chi phí di chuyển dữ liệu giữa TM và DM là khá lớn Để giảm chi phí này, nhiều hệ quản trị cơ sở dữ liệu phân tán sử dụng các thủ tục truy vấn tối ưu hoặc tổ chức bộ nhớ đệm cho không gian làm việc cá nhân của giao tác nhằm điều chỉnh luồng dữ liệu giữa các địa điểm Chẳng hạn, trong SDD-1 không gian làm việc cá nhân của giao tác T được phân bố tại mọi địa điểm mà T truy xuất dữ liệu
Giả sử T đang cập nhật các mục dữ liệu x, y, z được lưu trữ tương ứng tại DMx, DMy, DMz và giả sử TM của T bị thất bại sau khi phát ra lệnh dm- write(x) nhưng trước khi phát ra lênh dm-write đối với y và z Lúc này, chắc chắn cơ sở dữ liệu không còn chính xác Đối với hệ quản trị cơ sở dữ liệu tập trung hiện tượng dị thường này không có gì nguy hại vì không có một giao tác nào có thể truy xuất vào cơ sở dữ liệu cho đến khi TM khôi phục lại Tuy nhiên, trong các
hệ quản trị cơ sở dữ liệu phân tán, các TM khác vẫn có thể thực hiện lệnh và truy xuất vào cơ sở dữ liệu không chính xác
Trang 11Để tránh hiện tượng này, các lệnh tiền ghi dữ liệu phải được thay đổi một ít Thêm vào đó, các mục dữ liệu đặc tả phải được sao chép vào một vùng nhớ an toàn, đồng thời các lệnh tiền ghi dữ liệu cũng phải chỉ rõ những DM nào có liên quan đến
sự dịch chuyển Sau đó, nếu TM còn bị thất bại trong suốt giai đoạn thứ hai của quá trình dịch chuyển hai giai đoạn, các DM của các lệnh dm-write không được phát ra có thể nhận ra trạng thái và kết quả của các DM có liên quan đến việc dịch chuyển Nếu bất kỳ một DM nào nhận một lệnh dm-write, các DM còn lại sẽ hành động như thể chúng cũng nhận được lệnh
Như trong các hệ quản trị cơ sở dữ liệu tập trung, một giao tác T truy xuất hệ thống bằng cách phát ra lệnh BEGIN, READ, WRITE và END Trong hệ quản trị cơ sở dữ liệu phân tán, những quá trình đó diễn ra như sau:
BEGIN: TM tạo một không gian làm việc riêng cho T Chúng ta không biết được vị trí và tổ chức của không gian làm việc
này
READ(X): TM kiểm tra không gian làm việc riêng của T xem có tồn tại bản copy của X không Nếu có, giá trị sao chép đó được gán cho T Ngược lại, TM chọn một số giá trị sao chép của X đã được lưu lại, gọi là xi và phát ra lệnh dm- read(x) tới DM mà x được lưu lại DM trả lời bằng cách tạo ra giá trị đã lưu lại của x từ cơ
sở dữ liệu, đưa nó vào không gian làm việc riêng Sau đó TM trả lại giá trị này cho
END: Quá trình dịch chuyển hai giai đoạn bắt đầu Với mỗi cập nhật X bởi T,
và với mỗi bản sao được lưu lại x của X, TM phát ra lệnh tiền ghi dữ liệu prewrite(xi) tới DM có chứa xi DM trả lời bằng cách copy giá trị của X từ không gian làm việc riêng của T vào vùng nhớ trong an toàn của DM Sau khi tất cả các lệnh prewrite được xử lý, TM phát lệnh dm-write đối với mọi bản sao chép của mọi mục dữ liệu logic được cập nhật bởi T Một DM trả lời lệnh dm-write(xi) bằng cách copy giá trị của x từ vùng nhớ an toàn vào không gian nhớ của cơ sở dữ liệu Sau khi tất cả các lệnh dm-write đều được thực hiện, quá trình xử lý T kết thúc
2.2 PHÂN TÍCH BÀI TOÁN ĐIỀU KHIỂN TƯƠNG TRANH
Trước khi phân tích bài toán điều khiển tương tranh, ta xét một số ví dụ về “dị thường” để thấy được tầm quan trọng của việc điều khiển tương tranh
Ví dụ về các dị thường trong điều khiển tương tranh
Mục đích của điều khiển tương tranh là ngăn chặn nhiễu từ những người dùng đang truy xuất vào cơ sở dữ liệu Chúng ta sẽ tìm hiểu vấn đề này thông qua hai
Trang 12ví dụ về các máy rút tiền tự động ATM (automated teller machine) Tương ứng với các yêu cầu của khách hàng, ATM lấy dữ liệu từ một cơ sở dữ liệu, tính toán và lưu kết quả trở lại vào cơ sở dữ liệu
Dị thường 1: Mất cập nhật
Giả sử tại một thời điểm có hai khách hàng đang cố gắng gửi tiền vào cùng một tài khoản Trong trường hợp không có điều khiển tương tranh, hai hành động này có thể gặp rắc rối (hình 5.2) Hai máy ATM xử lý thao tác của hai khách hàng có thể đọc số dư tài khoản tại cùng một thời điểm, tính số dư mới một cách song song rồi lưu số dư mới vào lại cơ sở dữ liệu mạng hoạt động không chính xác: mặc dù cả hai khách hàng đều đã gửi tiền, cơ sở dữ liệu chỉ phản hồi một hành động, hành động gửi tiền của khách hàng còn lại bị mất bởi hệ thống
Hình 2.2: Dị thường mất cập nhật
Dị thường 2: Các kết quả trả về không thống thất
Giả sử có hai khách hàng thực hiện các giao tác sau:
Khách hàng1: Chuyển 1,000,000 $ từ tài khoản tiết kiệm của Acme Corporation sang tài khoản kiểm tra của nó
Khách hàng 2: In tổng số dư trong tài khoản tiết kiệm và kiểm tra của Acme Corporation
Trong trường hợp không có điều khiển tương tranh, hai giao tác này sẽ có rắc rối (hình 5.3) Giao tác đầu tiên có thể đọc số dư tài khoản tiết kiệm, trừ 1,000,000$ và lưu kết quả trả về vào cơ sở dữ liệu Rồi giao tác thứ hai đọc số dư tài khoản tiết kiệm và tài khoản kiểm tra, in tổng số Sau đó, giao tác thứ nhất hoàn thành việc chuyển tiền bằng cách đọc số dư tài khoản kiểm tra, cộng thêm 1,000,000$ và lưu kết quả cuối cùng vào cơ sở dữ liệu Không giống như trường hợp
dị thường 1, các giá trị lưu trong cơ sở dữ liệu bởi thao tác này là chính xác Tuy nhiên, thực thi không đúng vì số dư được in ra bởi khách hàng 2 là
Trang 13Hình 2.3: Dị thường kết quả trả về không thống nhất
Hai ví dụ này không phải là mọi tình huống có thể xảy ra khi nhiều người dùng cùng truy xuất cơ sở dữ liệu Tuy nhiên, chúng là những ví dụ điển hình của các vấn đề điều khiển tương tranh nảy sinh trong các hệ quản trị cơ sở dữ liệu phân tán
2.2.1 Tính khả tuần tự
Kí hiệu E để chỉ đến sự thực thi của các giao tác T1, …, Tn E là một chuỗi thao tác nếu không có các giao tác thực hiện đồng thời Nghĩa là, mỗi giao tác được thực hiện một cách hoàn chỉnh trước khi giao tác tiếp theo bắt đầu Giả sử mọi thao tác đều được định nghĩa đúng, kết thúc một cách hợp lý và bảo vệ tính toàn vẹn dữ liệu Một thực thi gọi là có tính khả tuần tự nếu nó tương đương với một chuỗi thao tác, nghĩa là nếu nó tạo ra cùng một kết quả và có cùng tác động lên cơ sở
dữ liệu như các chuối thao tác Một trong những yêu cầu của điều khiển tương tranh trong cơ sở dữ liệu phân tán là phải đảm bảo rằng tất cả các thực thi đều có tính khả tuần tự
Chỉ các thao tác truy xuất vào cơ sở dữ liệu đã được lưu lại là read và write, do đó nó có khả năng tạo nên một thực thi mẫu cho các giao tác bằng cách thực hiện các lệnh dm-read và dm-write tại các DM khác nhau của hệ quản trị cơ sở
dm-dữ liệu phân tán Theo tinh thần này, chúng ta tạo ra một mô hình thực thi mẫu
Trang 14chuẩn của các giao tác bằng một tập các log, mỗi log biểu thị trật tự mà tại đó read và dm-write xảy ra trên một DM (hình 5.4) Một thực thi là một chuỗi nếu tồn tại một trật tự tuyệt đối các giao tác mà nếu T trước Tj trong thứ tự tuyệt đối đó thì mọi thao tác của Ti xảy ra trước mọi thao tác của Tj trong mọi log mà cả hai xuất hiện (hình 2.4) Bằng trực giác, điều này cho thấy các giao tác thực thi một cách tuần
dm-tự có cùng thứ tại tại mọi DM
Một thực thi có thể của T1, T2, T3 được biểu diễn bởi các log sau (ri[x] là thao tác dm-read(x) phát ra bởi Ti , wi[x] là một dm-write(x) do Ti phát ra)
Log của DM A: r1[x1]w1[y1]r2[y1]w3[x3]
Log của DM B: w1[y2]w2[z2]
Log của DM C: w2[z3]r3[z3]
Hình 2.4: Một mô hình thực thi mẫu chuẩn bằng các log
Hai thao tác xung đột nhau nếu chúng thực thi trên cùng một mục dữ liệu và đều thực hiện lệnh dm-write Trong trường hợp các thao tác là xung đột nhau thì thứ
tự mà các thao tác thực hiện có ý nghĩa quan trọng Để minh họa cho khái niệm xung đột, chúng ta xét một mục dữ liệu x và các giao tác T, Tj Nếu T phát ra lệnh dm-write(x) và Tj phát lệnh dm-write(x), giá trị đọc bởi giao tác T sẽ phụ thuộc vào lệnh dm-read xảy ra trước hay sau lệnh dm-write Tương tự, nếu cả hai giao tác đều phát lệnh dm-write(x), giá trị cuối cùng của x phụ thuộc vào lệnh dm-write nào xảy ra cuối cùng Những tình huống xung đột như vậy xảy ra tương ứng được gọi là xung đột đọc-ghi(rw) và xung đột ghi-ghi(ww)
Thực thi được mô hình hóa trong hình 2.4 theo từng chuỗi Mỗi log là một chuỗi, nghĩa là không có sự chen ngang của các thao tác từ các giao tác khác Tại
DM A, T1 rồi đến T2 đến T3; tại DM C: T2 trước T3 Do đó, T1, T2, T3 là một thứ tự toàn phần thoả mãn định nghĩa của chuỗi
Các thực thi sau không tạo thành chuỗi
DM A: r1[x1]r2[y1]w3[x1]w1[y1]
DM B: w2[z2]w1[y2]
DM C: w2[z3]r3[z3]
Trang 15Các thực thi sau không theo từng chuỗi Mặc dù mỗi log là chuỗi, không
có một trật tự toàn phần nào thích hợp với mọi log
Từ đó ta có thể mô tả các thực thi có tính tuần tự như sau
Mệnh đề 2.1
Cho T = {T1,…,Tm} là một tập các giao tác, E là một thực thi của những giao tác này và được tạo mẫu bởi log {L1, ,Lm} E có tính khả tuần tự nếu tồn tại một trật tự tuyệt đối của T sao cho mỗi cặp thao tác xung đột Oi và Oj từ các giao tác phân biệt T và Tj, Oi diễn ra trước Oj trong mỗi log L1…Lm nếu và chỉ nếu Ti diễn
ra trước Tj theo trật tự tuyệt đối
2.2.2 Mô hình điều khiển tương tranh
Trong mệnh đề 2.1, xung đột rw và ww được xem như nhau theo khái niệm xung đột thông thường Tuy nhiên, chúng ta có thể phân tích khái niệm tính khả tuần
tự bằng cách phân biệt hai loại xung đột này Cho E là một thực thi được tạo mẫu bởi một tập các log Ta định nghĩa các quan hệ nhị phân trên các giao tác
trong E, kí hiệu Æ với các chỉ số dưới khác nhau Với mỗi cặp giao tác Ti và Tj:
(1) Ti -> rwTj nếu trong một số log của E, Ti đọc một số mục dữ liệu vào Tj rồi mới ghi
(2) Ti -> wrTj nếu trong một số log của E, Ti ghi một số mục dữ liệu rồi Tj mới đọc
(3) Ti -> wwTj nếu trong một số log của E, Ti ghi một số mục dữ liệu rồi Tj mới ghi
Trang 16là khả tuần tự nếu tồn tại một thứ tự tuyệt đối của các giao tác mà phù hợp với -> Điều kiện sau cùng này được đảm bảo nếu và chỉ nếu -> không là quan hệ vòng tròn (một quan hệ -> không là quan hệ vòng tròn nếu không tồn tại một chuỗi T1-
2.2.3 Thời gian và nhãn thời gian trong CSDL phân tán
Trong hệ thống tập trung việc xác định thứ tự của sự kiện A xảy ra trước sự kiện B hoặc ngược lai thì đơn giản, từ đó chúng ta có thể dễ dàng sử dụng đồng hồ
để xác định thời gian mỗi sự kiện xuất hiện Tuy nhiên trong hệ thống phân tán để xác định một sự kiện A ở một vị trí nào đó xảy ra trước hoặc sau sự kiện B ở tại vị trí nào đó lại phức tạp hơn, do đó người ta yêu cầu đồng hồ ở tất cả các điểm phải tuyệt đối đồng bộ
Một số điều khiển tương tranh phân tán và khoá chết trong các DDBMS cần những thuật toán để ngăn cản việc xác định sắp đặt của sự kiện Xác định sắp đặt của
sự kiện là quá trình gán mỗi sự kiện A xảy ra trong hệ thống phân tán với nhãn thời gian TS(A) với những thuộc tính sau:
1 TS(A) nhận duy nhất A (tách sự kiện và tách nhãn thời gian)
2 Với hai sự kiện A và B, nếu A xuất hiện trước B thì TS(A)<TS(B)
Giả sử rằng chúng ta biết ý nghĩa của việc "sự kiện A xuất hiện trước sự kiện B tại địa điểm i", chúng ta cũng biết ý nghĩa của thời gian đặt tại vị trí đó Mối quan hệ xuất hiện trước, biểu thị →, có thể được khái quát hoá trong môi trường phân tán bằng các luật sau:
1 Nếu A và B là hai sự kiện tại cùng 1 địa điểm và A xuất hiện trước b thì A→B
2 Nếu sự kiện A có một thông báo được gửi đi và sự kiện B nhận được một thông báo thì A→B
3 Nếu A→B và B→C thì A→C
Mối quan hệ → là một quan hệ thứ tự Chúng ta gọi hai sự kiện A và B không đồng thời xảy ra nếu không A→B cũng không B→A
Xét ví dụ ở hình 2.6, sự kiện A và D, B và E, B và F, C và E và C và F chúng không đồng thời Mối quan hệ chính xác của hai sự kiện không đồng thời không xác định và không liên quan
Trang 17Site 1 Site 2
Message M1
Message M2
Local Local Time time
Hình 2.6: Mối quan hệ "xuất hiện trước" tại hai điểm trong hệ thống
2.3 CÁC KỸ THUẬT ĐIỂU KHIỂN TƯƠNG TRANH
2.3.1 Các kỹ thuật đồng bộ hóa dựa trên khóa hai pha
Khóa hai pha (2PL-Two-Phases Locking) được sử dụng để đồng bộ hóa việc đọc và ghi bằng cách phát hiện và ngăn chặn một cách dứt khoát các xung đột giữa các thao tác hiện hành Trước khi đọc mục dữ liệu x, một giao tác phải sở hữu một khóa đọc (readlock) trên x Trước khi ghi lên x, nó phải sở hữu một khóa ghi (writelock) trên x Quyền sở hữu các khóa bị chi phối bởi hai quy tắc:
(1): Các giao tác khác nhau không thể đồng thời sở hữu các khóa xung đột
(2): Khi một giao tác từ chối quyền sở hữu một khóa, nó không bao giờ có được khóa nào khác
Định nghĩa khóa xung đột (conflicting lock) phụ thuộc vào loại đồng bộ hóa đang thực hiện: đối với đồng bộ hóa rw, hai khóa xung đột nhau nếu: (a) cả hai khoá đều thuộc về một mục dữ liệu và (b) khi một khóa là khóa đọc và khóa kia là khóa ghi; đối với đồng bộ hóa ww, hai khóa xung đột nhau khi: (a) cả hai khoá đều thuộc
về một mục dữ liệu và (b) cả hai đều là khóa ghi
Quy tắc thứ hai về quyền sở hữu khóa xuất phát từ nguyên nhân mọi giao tác đều có khóa theo kiểu hai pha Trong suốt quá trình phát triển pha, giao tác thu được các khóa mà không cần phải giải phóng bất kỳ một khóa nào Bằng cách giải phóng khóa, giao tác chuyển sang pha co lại (shrinking phase) Trong suốt pha này, giao tác giải phóng các khóa và quy tắc 2 ngăn chặn việc thu thận thêm khóa mới Khi một giao tác kết thúc (hoặc bị hỏng), mọi khóa còn lại tự động được giải phóng
Trong các DDBMS các giao tác được yêu cầu sở hữu mọi khóa trước khi thực hiện và một số hệ thống cũng yêu cầu các giao tác giữ lại mọi khóa cho đến khi kết thúc
Trang 18Khóa hai pha là một kỹ thuật đồng bộ chính xác, nghĩa là 2PL thu được một quan hệ không vòng tròn -> rw( -> ww) khi dùng sự đồng bộ rw (ww) Thứ tự chuỗi tuần tự thu được từ 2PL được xác định bởi trật tự các giao tác sở hữu khóa Khi một giao tác sở hữu mọi khóa mà nó từng sở hữu, gọi là thời điểm khóa của giao tác Cho E là một thực thi sử dụng 2PL để đồng bộ hóa rw (ww)
Quan hệ ->rw (->ww) sinh ra bởi E được đồng nhất với quan hệ sinh ra bởi một chuỗi thực thi E’ mà trong đó mọi giao tác đều thực hiện thời điểm khóa của nó
Do đó, các điểm khóa của E xác định thứ tự tuần tự của E
2.3.2 Quá trình thực hiện 2PL cơ bản
Quá trình thực hiện của 2PL thực chất là một quá trình lập lịch 2 PL, một
mô đun phần mềm sẽ nhận các khóa yêu cầu và khóa giải phóng đồng thời xử lý chúng theo chỉ định của 2PL
Cách thực hiện 2PL cơ bản trong một cơ sở dữ liệu phân tán là phân bố lịch trình theo cơ sở dữ liệu, thay lịch trình đối với mục dữ liệu x tại DM mà x được lưu lại Trong sự thực hiện này, các khóa đọc sẽ được các lệnh dm-read và dm- write yêu cầu, cũng có thể được các lệnh tiền ghi dữ liệu yêu cầu Nếu khóa được yêu cầu không được cấp, thao tác được đưa vào hàng đợi, dẫn tới tình trạng nghẽn (deadlock) Các khóa ghi được giải phóng hoàn toàn bởi lệnh dm-write Tuy nhiên,
để giải phóng các khóa đọc, một thao tác giải phóng khóa đặc biệt được yêu cầu Những quá trình giải phóng khóa này được thực hiện song song với lệnh dm-write, khi tín hiệu dm-write bắt đầu pha co lại Khi một khóa được giải phóng, các thao tác trong hàng đợi của mục dữ liệu được xử lý theo thứ tự vào trước ra trước (FIFO)
Chú ý rằng quá trình thực hiện này tự động xử lý dữ liệu thừa một cách chính xác Giả sử mục dữ liệu logic X có các bản copy x1, …,xm Nếu 2PL cơ bản được dùng trong đồng bộ rw, một giao tác có thể đọc bất cứ một bản copy nào và chỉ cần thu được một khóa đọc trên bản copy của X mà nó đọc thực sự Tuy nhiên, nếu một giao tác được cập nhật thì nó phải cập nhật mọi bản copy của X và do đó phải thu khóa ghi của tất cả các bản copy (dù 2PL cơ bản dùng có được cho đồng bộ
rw hay ww hay không)
2.3.3 Kỹ thuật 2PL sao chép chính
2PL sao chép chính (Primary Copy 2PL) là một kỹ thuật 2PL hướng sự chú
ý vào dữ liệu dư thừa Một bản sao của mỗi mục dữ liệu logic xác định một bản sao chính; trước khi truy xuất bất cứ bản sao nào của mục dữ liệu logic, khóa thích hợp phải được thu trên bản sao chính
Đối với mỗi khóa đọc, kỹ thuật này đồi hỏi nhiều sự giao tiếp hơn 2PL Giả
sử x1 là bản sao chính của mục dữ liệu logic X, giao tác T mong đọc những bản sao khác, xi của X Để đọc xi T phải kết nối với hai DM, DM mà x1 được lưu và DM