Điều khiển tranh chấp dựa vào khóa trong Hệ cơ sở dữ liệu tập trung Nguyên tắt chờ wait: Một giao tác muốn truy cập dữ liệu, thì phải khóa dữ liệu đó chiếm dụng lock.. Điều khiển t
Trang 1GVHD: PGS.TS Đồng Thị Bích Thủy Nhóm 4:
Nguyễn Tấn Cầm
Võ Duy Phúc Phạm Trần Trọng Minh Vương Shi Yến
QUẢN LÝ GIAO TÁC PHÂN TÁN
(THE MANAGEMENT OF DISTRIBUTED TRANSACTIONS)
BÁO CÁO MÔN CƠ SỞ DỮ LIỆU PHÂN TÁN
1
Trang 2Nội dung trình bày
Điều khiển truy xuất đồng thời trong giao tác phân tán (Concurrency Control For Distributed Transactions)
Kiến trúc giao tác phân tán (Architectural
Aspects Of Distributed Transactions)
2
Trang 3Nội dung trình bày
Điều khiển truy xuất đồng thời trong giao tác phân tán (Concurrency Control For Distributed Transactions)
Kiến trúc giao tác phân tán (Architectural
Aspects Of Distributed Transactions)
3
Trang 444
Trang 5Điều khiển tranh chấp dựa vào khóa trong
Hệ cơ sở dữ liệu tập trung
Nguyên tắt chờ (wait):
Một giao tác muốn truy cập dữ liệu, thì phải khóa
dữ liệu đó (chiếm dụng) (lock).
Muốn khóa dữ liệu mà bị khóa bởi một giao tác khác thì phải chờ cho đến khi giao tác đó giải phóng khóa (unlock)
55
Trang 6Điều khiển tranh chấp dựa vào khóa trong
Hệ cơ sở dữ liệu tập trung (tt)
Các loại khóa (lock mode)
Shared Dùng chung mode: chỉ dùng để đọc dữ liệu.
Exclusive Dành riêng mode: dùng để ghi dữ liệu.
Well-formed: luôn khóa dữ liệu theo chế độ
shared mode trước khi đọc; luôn khóa dữ liệu trong chế độ exclusive trước khi ghi.
Kỹ thuật khóa chỉ đúng với giả định tất cả các giao tác đều là well-formed.
66
Trang 7Điều khiển tranh chấp dựa vào khóa trong
Hệ cơ sở dữ liệu tập trung (tt)
Nguyên tắt tương tác giữa các mode lock
Một giao tác có thể lock dữ liệu theo chế độ
shared mode nếu nó không bị lock bởi tất cả các giao tác khác, hoặc nó bị lock theo chế độ shared mode bởi một giao tác khác.
Một giao tác có thể lock dữ liệu theo chế độ
Exclusive mode khi nó không bị lock bởi bất kỳ giao tác khác.
77
Trang 8Điều khiển tranh chấp dựa vào khóa trong
Hệ cơ sở dữ liệu tập trung (tt)
Hai giao tác được gọi là đụng độ (conflict) nếu chúng ta muốn khóa trên cùng một dữ liệu với hai chế độ (mode) khóa không tương thích.
Ví dụ: shared-exclusive (read-write) : conflict
Ví dụ: exclusive-exclusive (write-write) : conflict
88
Trang 9Điều khiển tranh chấp dựa vào khóa trong
Hệ cơ sở dữ liệu tập trung (tt)
Cấp độ khóa
Record level:
Cấp độ dòng
Hỗ trợ nhiều truy xuất đồng thời vào một file
Đụng độ xảy ra khi hai giao tác truy cập cùng một record
File level:
Cấp độ file
Phạm vi ảnh hưởng của khóa là trên cả file
Đụng độ xảy ra khi hai giao tác truy cập cùng một file
Khóa trên dòng cung cấp nhiều truy cập đồng thời hơn là khóa trên file Hầu hết các hệ quản trị cơ sở dữ liệu đều hỗ trợ khóa cấp Record level.
99
Trang 10Điều khiển tranh chấp dựa vào khóa trong
Hệ cơ sở dữ liệu tập trung (tt)
Điều kiện để hai giao tác có thể thực thi được đồng thời:
Các giao tác phải thỏa Well-formed.
Đảm bảo là các cặp tương thích cho locking.
Mỗi giao tác không yêu cầu phát sinh khóa mới, sau khi kết thúc quá trình lock này.
10
Trang 11Điều khiển tranh chấp dựa vào khóa trong
Hệ cơ sở dữ liệu tập trung (tt)
2-phase-locked (2PL)
Growing phase: kỳ nhận khóa
Các giao tác tiến hành khóa, không tháo khóa.
Shrinking phase: Kỳ giải phóng khóa
Các giao tác tiến hành giải phóng khóa, nhưng không thể nhận được khóa nào mới.
Các giao tác phải giữ tất cả các khóa exclusive cho đến khi giao tác hoàn tất (commitment).
Ngăn ngừa các giao tác khác đọc dữ liệu đang dùng
để ghi.
11
Trang 12Điều khiển tranh chấp dựa vào khóa trong
Hệ cơ sở dữ liệu tập trung (tt)
12
Begin: Bắt đầu giao tác.
Lock Point: thời điểm giao tác nhận tất cả các khóa nhưng chưa giải phóng khóa nào End: Kết thúc giao tác
12
Trang 13Điều khiển tranh chấp dựa vào khóa trong
Hệ cơ sở dữ liệu tập trung (tt)
Tuần tự xin và tháo khóa:
(Begin application) Begin transaction Acquire locks before reading or writing Commit
Release locks (End application)
13
Trang 14Điều khiển tranh chấp dựa vào khóa trong
Hệ cơ sở dữ liệu tập trung (tt)
Vấn đề gặp phải: Deadlock
Một hệ thống ở trạng thái deadlock nếu tồn tại một tập hợp các giao dịch sao cho mỗi giao dịch trong tập hợp đang chờ một giao dịch khác trong tập hợp.
Ví dụ: (T0, T1, T2, …, Tn-1, Tn)
T0 chờ mục dữ liệu được giữ bởi T1
T1 chờ mục dữ liệu bị chiếm bởi T2
…
Tn-1 chờ mục dữ liệu được giữ bởi Tn
Tn chờ mục dữ liệu bị chiếm bởi T0
Trang 15Điều khiển tranh chấp dựa vào khóa trong
Hệ cơ sở dữ liệu tập trung (tt)
Phương pháp giải quyết vấn đề Deadlock:
Ngăn ngừa Deadlock
Đảm bảo hệ thống không bao giờ rơi vào tình trạng Deadlock.
Thường dùng cho các hệ thống có xác suất rơi vào deadlock cao.
Phát hiện Deadlock và khôi phục
Cho phép hệ thống đi vào Deadlock, và cố gắng khôi phục.
Dùng cho hệ thống có xác suất rơi vào deadlock thấp.
15
Trang 16Điều khiển tranh chấp dựa vào khóa trong
Hệ cơ sở dữ liệu phân tán
ROOT
DTM AGENT
DTM AGENT
DTM AGENT
Local Transaction Manager (LTM)
Messages Messages
Messages Messages
16
Trang 17Điều khiển tranh chấp dựa vào khóa trong
Hệ cơ sở dữ liệu phân tán (tt)
Nếu các giao tác thỏa well-formed và locked thì giao thức khóa hai pha vẫn còn
2-phase-đúng trong Hệ cơ sở dữ liệu phân tán.
Các vấn đề gặp phải với trình quản lý giao tác phân tán (DTM)
Phân phối nhiều bản sao của cùng một dữ liệu.
17
Trang 18Điều khiển tranh chấp dựa vào khóa trong
Hệ cơ sở dữ liệu phân tán (tt)
Hướng giải quyết (trình bày chi tiết trong chương 9)
Write-locks-all, read-locks-one: Exclusive lock có được ở tất cả các bản sao, trong khi shared lock chỉ có mặt ở một bản sao Khi
đó, có sự đụng độ shared-exclusive ở site mà shared lock được yêu cầu Đụng độ Exclusive-exclusive ở tất cả các site.
Majority locking: Cả shared và exclusive được gắn cho đa số các bản sao dữ liệu (số bản sao được yêu cầu nhiều hơn các bản sao không yêu cầu gắn lock) Như vậy có ít nhất một đụng
độ xảy ra khi có hai giao tác yêu cầu khóa cùng một dữ liệu.
Primary copy locking: Nâng một bản sao nào đó làm bản sao đặc quyền (Primary copy) Tất cả các lock phải được yêu cầu tại bản sao này,vì vậy sẽ phát hiện đụng độ ngay tại khu vực này.
18
Trang 19Điều khiển tranh chấp dựa vào khóa trong
Hệ cơ sở dữ liệu phân tán (tt)
Quản lý Deadlock
Đồ thị chờ đợi (wait-for-graph) WFG
Đồ thị có hướng, một cung Ti -> Tj tồn tại trong WFG nếu Ti
đang đợi giao tác Tj giải phóng khóa trên một thực thể nào đó
Nếu có chu trình thì có Deadlock
Local WFG: Đồ thị chờ đợi tại mỗi vị trí.
Global WFG: Đồ thị chờ đợi toàn cục, gồm tất cả các LWFG
19
j
19
Trang 20Điều khiển tranh chấp dựa vào khóa trong
Hệ cơ sở dữ liệu phân tán (tt)
Trang 21Điều khiển tranh chấp dựa vào khóa trong
Hệ cơ sở dữ liệu phân tán (tt)
Phương pháp xử lý Deadlock
Phát hiện và giải phóng Deadlock
Dùng GWFG để phát hiện Deadlock (chu trình)
Giải phóng Deadlock bằng cách chọn ra một hoặc nhều giao tác “nạn nhân” (bị deadlock), tước quyền rồi hủy bỏ chúng nhằm phá vỡ chu trình trong GWFG
Dựa vào đâu để chọn “nạn nhân:
Lượng công sức đã được đầu tư trong giao tác Công sức này sẽ bị mất nếu giao tác bị hủy bỏ
Chi phí hủy bỏ giao tác Phụ thuộc vào các số lượng cập nhật mà giao tác đã thực hiện
Lượng công sức để kết thúc giao tác Tránh hủy giao tác sắp kết thúc
Số lượng các chu trình chứa giao tác Chọn giao tác nằm trong nhiều chu trình để hủy
21
Trang 22Điều khiển tranh chấp dựa vào khóa trong
Hệ cơ sở dữ liệu phân tán (tt)
Phương pháp xử lý Deadlock
Ngăn chặn Deadlock
Khai báo tất cả các mục dữ liệu sẽ được truy xuất.
Nếu tất cả các mục dữ liệu này đều sẵn sàng thì giao tác được phép thi hành, ngược lại thì không được thi hành.
Tránh Deadlock
WAIT-DIE:
Nếu Ti yêu cầu một khóa trên mục dữ liệu đã được khóa bởi Tj thì Ti được phép chờ nếu và chì nếu Ti già hơn Tj Nếu Ti trẻ hơn Tj thì Ti bị hủy bỏ và được khởi động lại timestamp cũ.
If ts(Ti) < ts(Tj) then Ti chờ else Ti chết.
WOUND-DIE:
Nếu Ti yêu cầu một khóa trên một mục dữ liệu đã được Tj khóa thì Ti được phép chờ nếu và chỉ nếu nó trẻ hơn Tj; bằng không
Tj bị hủy và trao khóa cho Ti.
If ts(Ti) < ts(Tj) then Tj bị hủy và trao khóa else Ti chờ
Phát hiện và giải phóng Deadlock
22
Trang 23Nội dung trình bày
Điều khiển truy xuất đồng thời trong giao tác phân tán (Concurrency Control For Distributed Transactions)
Kiến trúc giao tác phân tán (Architectural
Aspects Of Distributed Transactions)
23
Trang 24Kiến trúc giao tác phân tán
thúc hai giai đoạn)
nhận 2 pha.
24
Trang 25Giới thiệu
Các giao tác phân tán (distributed
transactions) được thực thi bởi nhiều tiến trình
Trang 26Nghi thức xác nhận 2 pha (2PC)
hiện các thao tác của giao dịch tại vị trí nguồn.
trí có tham gia vào việc thực hiện các thao tác của giao dịch.
26
Trang 27Nghi thức xác nhận 2 pha (2PC)
Giai đoạn 1 (phase 1):
Xét một giao tác T được khởi động từ một vị trí nào đó và gọi thực hiện các giao tác ở các site khác hoặc ở chính vị trí khởi động giao tác T
(ta gọi các giao tác này là C)
Tất cả các giao tác con Ti sẽ quyết định đồng ý hay huỷ bỏ Giao tác con C gởi tín hiệu báo chuẩn bị kết thúc cho các Ti và Ti sẽ phản hồi
cho C bằng tín hiệu đồng ý kết thúc hay không
Giai đoạn 2 (phase 2)
Dựa trên các thông tin trả lời của giai đoạn 1, C có thể quyết định chấm dứt T hay không Sau đó C sẽ gởi tín hiệu đồng ý toàn cục( global
commit) hay hủy bỏ toàn cục(global abort) đến các Ti
T sẽ không được kết thúc nếu có một Ti chưa kết thúc
27
Trang 2929
Trang 31Write BEGIN COMMIT log
PREPARE
commit
READY
to commit?
ready
ready
commit
commit
yes
GLO BAL
COM MIT
Msg TYPE
commit
commit
Write END T
log Write END T
log
Trang 32Write BEGIN COMMIT log
PREPARE
READY
to commit?
Trang 33Write BEGIN COMMIT log
PREPARE
abort
READY
to commit?
ready
ready
Abort
Commit ACK
Trang 34Ví dụ:
Begin transaction BookTrip
book plane
book hotel
book rental car
End transaction BookTrip
34
Trang 35Phase 1: Client giao tiếp với điều phối viên
BookTrip Coordinator
BookPlane Participant BookHotel Participant BookRentalCar Participant
Trang 36Phase 1: Client gọi phương thức đến BookPlane
Trang 37Phase 1: Đối tượng thông báo đến các thành viên
Các thành viên có thể biết được thông tin điều phối viên thông qua TID (vi dụ: địa chỉ IP)
Điều phối viên được trỏ đến thành viên
Các thành viên có thể biết được thông tin điều phối viên thông qua TID (vi dụ: địa chỉ IP)
Điều phối viên được trỏ đến thành viên
Thành viên chỉ có thể gọi phương thức
Join nếu như đã ở trạng thái sẵn sàng
Thành viên chỉ có thể gọi phương thức
Join nếu như đã ở trạng thái sẵn sàng
join(TID,ref to participant)
plane.bookFlight(111,”Seat32A”,TID)
37
Trang 38BookTrip Coordinator
BookPlane Participant BookHotel Participant BookRentalCar Participant
Trang 39BookTrip Coordinator
BookPlane Participant BookHotel Participant BookRentalCar Participant
COMMIT toàn cục đến mỗi thành viên
Điều phối viên bắt đầu
phase 2 và gởi kết quả
COMMIT toàn cục đến
to rent a car
39
Trang 40BookTrip Coordinator
BookPlane Participant BookHotel Participant BookRentalCar Participant
Trang 41BookTrip Coordinator
BookPlane Participant BookHotel Participant BookRentalCar Participant
Điều phối viên gởi thông báo GLOBAL_ABORT đến tất cả thành viên
Recoverable objects needed
to rent a car
41
Trang 42BookTrip Coordinator
BookPlane Participant BookHotel Participant BookRentalCar Participant
Trang 43BookTrip Coordinator
BookPlane Participant BookHotel Participant BookRentalCar Participant
Trang 44BookTrip Coordinator
BookPlane Participant BookHotel Participant BookRentalCar Participant
Điều phối viên bắt đầu phase2:
hỏi các thành viên để uỷ thác,
Do không có tín hiệu từ vị trí BookPlane nên
gởi GLOBAL ABORT
Điều phối viên bắt đầu phase2:
hỏi các thành viên để uỷ thác,
Do không có tín hiệu từ vị trí BookPlane nên
gởi GLOBAL ABORT
Recoverable objects needed
to rent a car
Phase2: Server BookPlane bị lỗi sau khi trả về ‘OK’ (2)
44
Trang 45BookTrip Coordinator
BookPlane Participant BookHotel Participant BookRentalCar Participant
Trang 46Phase 1: yêu cầu chuẩn bị và phản hồi
Trang 47Global CommitACK
Global Commit
ACK
47
Trang 48Nghi thức xác nhận 2 pha (2PC)
1. 2PC cho phép 1 thành viên có thể đơn phương hủy bỏ 1 giao dịch cho đến khi nó quyết định gửi biểu quyết commit
2. Khi một thành viên biểu quyết commit hay abort một giao dịch,
nó không thể thay đổi biểu quyết của nó nữa.
3. Khi một thành viên đang trong trạng thái sẵn sàng(READY),
nó có thể chuyển sang commit hoặc abort , phụ thuộc vào thông báo từ điều phối viên.
4. Quyết định kết thúc toàn cục được đưa ra bởi điều phối viên theo đúng qui tắt xác nhận toàn cục.
5. Mỗi tiến trình sẽ thiết lập một bộ đếm thời gian khi nó chuyển vào 1 trạng thái.
48
Trang 49Kiến trúc của giao tác phân tán
thúc hai giai đoạn)
nhận 2 pha.
49
Trang 51Kiến trúc tập trung
51
Trang 52Kiến trúc tập trung
Đặc điểm:
Điều phối viên liên lạc với tất cả các thành viên.
Các thành viên không thể liên lạc được với nhau.
52
Trang 5454
Trang 55Kiến trúc phân cấp
55
Trang 57 Ủy thác giao dịch: gửi thông báo vote- commit(biểu quyết
ủy thác).
Hủy bỏ giao dịch: gửi thông báo vote-abort (biểu quyết hủy bỏ).
57
Trang 59Kiến trúc tuyến tính
59
Trang 60Kiến trúc tuyến tính
Đặc điểm:
Các thành viên có thể trao đổi với nhau.
Có thứ tự giữa các vị trí trong hệ thống dành cho việc giao tiếp.
Nghi thức 2PC được cài đặt bằng cách trong pha đầu tiên truyền tới (từ 1-> N) và trong pha thứ 2 truyền ngược lại từ N về điều phối viên.
60
Trang 61Kiến trúc tuyến tính
Pha 1:
Điều phối viên gởi thông báo repare đến thành viên 2
Nếu thành viên 2 chưa sẵn sàng xác nhận giao dịch
vote-abort đến thành viên 3 và giao dịch bị hủy tại thời điểm này
Ngược lại, nếu thành viên 2 đồng ý commit gởi thông báo vote-commit cho thành viên 3 READY
Quá trình tiếp tục cho đến khi commit đến thành viên N
Kết thuc pha 1
61
Trang 6262
Trang 63Kiến trúc phân quyền
63
Trang 64Kiến trúc phân quyền
Trang 65Kiến trúc phân quyền
Điều phối viên gửi thông báo prepare đến tất cả các thành viên.
Mỗi thành viên sau đó sẽ gửi quyết định của mình đến tất cả các thành viên khác và đến điều phối viên bằng thông báo vote-commit hoặc vote-
abort.
=>Mỗi thành viên đợi các thông báo từ tất cả các thành viên khác rồi đưa ra quyết định theo đúng quy tắc ủy thác toàn cục
65
Trang 66Kiến trúc của giao tác phân tán
thúc hai giai đoạn)
nhận 2 pha.
Aug 20, 2024
66
Trang 67Nhận xét – Số lượng các thông báo
Các kiến trúc trên có số lượng các thông báo phụ thuộc vào số lượng các thành viên N:
Kiến trúc tập trung và phân cấp có 4N thông báo.
Kiến trúc tuyến tính có 2N thông báo.
Kiến trúc phân quyền có N(N+1) thông báo
67
Trang 68Nhận xét – Thời gian chờ
Thời gian chờ phụ thuộc vào thời gian T để truyền thông báo từ vị trí này đến vị trí khác của 1 giao tác
Trang 69Thank You!
69