Tải bản đầy đủ (.ppt) (110 trang)

bài giảng hệ cơ sở dữ liệu phân tán quản lý giao dịch điều khiển tương tranh

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

CHƯƠNG IV: QUẢN LÝ
GIAO DỊCH VÀ ĐIỀU KHIỂN
TƯƠNG TRANH


CHƯƠNG IV. QUẢN LÝ GIAO DỊCH
VÀ ĐIỀU KHIỂN TƯƠNG TRANH

4.1 Những vấn đề về giao dịch
4.2 Các giải thuật điều khiển tương
tranh dựa trên khóa
4.3 Các giải thuật điều khiển tương
tranh dựa trên nhãn thời gian
4.4 Quản trị khóa chết


4.1 Những vấn đề về giao dịch
4.1.1. Định nghĩa
4.1. 2. Các tính chất
4.1.3. Phân loại
4.1.4. Các cơ chế điều khiển tương tranh


Tổng quan
Giao dịch: Tập hợp các hoạt động tạo ra sự chuyển
đổi từ một trạng thái nhất quán sang trạng thái
nhất quán khác của CSDL và trong khi vận hành
CSDL phải đảm bảo tính nhất quán .


Các trạng thái của giao dịch


– Tích cực(Active): trạng thái ban đầu và trong khi vận hành
– Chuyển giao riêng phần(Paritally committed): Sau khi phát
biểu cuối cùng đã được vận hành
– Chuyển giao(Committed): Sau khi chuyển đổi thành công
hoàn toàn
– Thất bại(Failed): Sau khi phát hiện rằng việc vận hành thông
thường không thể xử lý hơn nữa.
– Thoát(Aborted): Sau khi giao dịch đã quay lui và CSDL được
nạp trở lại trạng thái trước khi khởi động giao dịch. Khởi
động lại hay hủy giao dịch.


VD: Nếu có các bảng sau
FLIGHT(FNO, DATE, SRC, DEST, STSOLD, CAP)
CUST(CNAME, ADDR, BAL)
FC(FNO,CNAME, SPECIAL)


begin transaction_Reservation
begin
input(fight_no,date,customer_name);
EXEC SQL SELECT STSOLD, CAP INTO temp1, temp2
FROM FLIGHT where FNO = fight_no and DATE = date;
if temp1 = temp2 then output(“no free seats");
abort
else
EXEC SQL UPDATE FLIGHT SET STSOLD = STSOLD +1
WHERE FNO = fight_no and DATE = date;
EXEC SQL INSERT into FC(FNO,DATE,CNAME,SPECIAL)
VALUES (fight_no, date, customer_name, null);

commit;
output(“reservation completed");
end Reservation.


Hình thức
Cho Oij(x) là một thao tác O j nào đó của giao dịch T i thao tác trên một
đối tượng x, ở đó Oj {Read,Write} và Oj là nguyên tử
 OSi = Uj Oij { tập mọi thao tác của Ti}
 Ni € {commit, abort}
Một giao dịch Ti là thứ tự riêng Ti={T ∑i =OSi U { Ni}
 Với 2 thao tác Oij,Oik U OSi, nếu Oij = {R(x) v W(x)} và Oik =
W(x), thì với hạng mục dữ liệu x bất kỳ, có hoặc O ij  Oij € OSi; Oij Xem xét một giao dịch:
R(x); R(y); x = x + y; W(x); commit ;
Σ= {R(x),R(y),W(x),C}
< = {(R(x),W(x)), (R(y),W(x)), (W(x),C), (R(x),C), (R(y),C)}


4.1 Những vấn đề về giao dịch
4.1.1. Định nghĩa
4.1. 2. Các tính chất
4.1.3. Phân loại
4.1.4. Các cơ chế điều khiển tương tranh


Tính chất giao dịch (ACID )

• Nguyên tử: giao dịch là một đơn vị xử lý , nó hoặc thực
hiện toàn bộ hoặc không toàn bộ
• Nhất quán: 1 vận hành thành công của giao dịch phải
lấy được trạng thái nhất quán đến một trạng thái cơ sở dữ
liệu mới nhất quán (Không vi phạm ràng buộc toàn vẹn).
• Cách ly: giao dịch không tạo sự biến đổi nhìn thấy trên
các giao dịch khác cho tới khi được chuyển giao, tức là
giao dịch là không nhận thức với các vận hành giao dịch
khác tương tranh trong hệ thống.
• Bền vững: Ngay khi 1 giao dịch đã chuyển giao thay đổi
của nó, các thay đổi này không bao giờ mất do sự cố hệ
thống xảy ra sau .


Nguyên tử
– Hoặc tất cả hoặc không có thao tác nào của giao dịch
được thực hiện
- Kết quả riêng phần của một giao dịch bị ngắt phải
được hoàn tác
- Phục hồi giao dịch là hoạt động của việc nạp lại
nguyên tử do lỗi đưa vào, quá tải hệ thống và khóa
chết
- Phục hồi do hỏng đột ngột là hoạt động của việc đảm
bảo tính nguyên tử trong khi hỏng đột ngột hệ thống


Toàn vẹn
– Đơn giản là tính đúng đắn và toàn vẹn của giao dịch chuyển từ trạng thái
nhất quán này sang trạng thái nhất quán khác của dữ liệu
– Các giao dịch là chương trình thực hiện đúng và không vi phạm các ràng

buộc toàn vẹn của CSDL .
– Dữ liệu nhiễu (dirty) là dữ liệu đã được cập nhật nhưng vẫn chưa được
chuyển giao.
– Các mức nhất quán khác nhau của CSDL
∗ Mức 0: Giao dịch T không đè lên các dữ liệu dirty của các giao dịch khác
∗ Mức 1: Mức 0 + T không chuyển giao bất kỳ thao tác viết nào trước khi
kết thúc giao dịch (EOT).
∗ Mức 2: Mức 1 + T không đọc dữ liệu dirty từ các giao dịch khác.
∗ Mức 3: Mức 2 + Các giao dịch khác không đọc bất cứ dữ liệu dirty nào
bởi T trước khi T hoàn tất.


Cách ly
– Tính chất nhằm đảm bảo mỗi giao dịch nhìn một
CSDL luôn nhất quán.
– Nếu 2 giao dịch truy nhâp tương tranh một hạng
mục dữ liệu đang được cập nhật bởi một trong
chúng(VD, thao tác ghi) thì không thể đảm bảo giao
dịch thứ hai sẽ đọc giá trị đúng
– Tính nhất quán của các giao dịch sẽ đạt được nếu
các giao dịch vận hành một cách tuần tự.
– Vì vậy, nếu một vài giao dịch được vận hành tương
tranh, kết quả phải là như nhau nếu chúng được
vận hành nối tiếp nhau (-> nối tiếp hóa)


Ví dụ: Xét 2 giao dịch với ban đầu x = 50.
Nếu thực hiện {T1-->T2} hay {T2--> T1} đều
cho kết quả x=52
T1: Read(x)

x ← x+1
Write(x)
Commit

T2: Read(x)
x ← x+1
Write(x)
Commit


Xét 2 dãy vận hành:
T1: Read(x)
T1: x ← x+1
T1: Write(x)
T1: Commit
T2: Read(x)
T2: x ← x+1
T2: Write(x)
T2: Commit
– Với dẫy vận hành ta đạt được
x = 52 ( cũng như cho {T2,
T1})

T2: Read(x)
T1: Write(x)
T2: x ← x+1
T2: Write(x)
T1: Commit
T2: Commit
– Vận hành tương tranh : T2

đọc các giá trị x trong khi nó
đang thay đổi, kết quả là x = 51
và sai!


Các tình huống xuất hiện nếu không đảm bảo tính cách ly(SQL-92):
- Đọc nhiễu: T1 thay đổi x rồi T2 đọc x trước khi T1 kết thúc; nếu T1 thoát,
T2 đọc giá trị không tồn tại trong csdl
- Đọc mờ(không lặp lại): T1 đọc x, T2 thay đổi hay xóa x và chuyển giao;
T1 cố đọc lại lần nữa nhưng giá trị đã thay đổi hoặc không còn
- Ảo ảnh: T1 tìm kiếm csdl theo vị từ P trong khi T2 đưa vào các bộ mới
thỏa mãn P


Các mức cách ly khác nhau:
- Đọc không chuyển giao: 3 hiện tượng đều có khả năng xuất hiện
- Đọc có chuyển giao: đọc mờ và ảo ảnh xuất hiện
- Đọc lặp lại: Chỉ có thể ảo ảnh
- Nối tiếp hóa tự động: Không xảy ra ảo ảnh


Bền vững
– Ngay khi giao dịch chuyển giao hệ thống phải đảm bảo rằng kết quả của
các thao tác của nó sẽ không bao giờ mất dù sau đó có thể sự cố.
– Phục hồi CSDL được dùng để đạt được nhiệm vụ.


4.1 Những vấn đề về giao dịch
4.1.1. Định nghĩa
4.1. 2. Các tính chất

4.1.3. Phân loại
4.1.4. Các cơ chế điều khiển tương tranh


Phân loại giao dịch
• Có nhiều tiêu chí phân loại
– Quãng thời gian giao dịch
∗ On-line (tồn tại thời gian ngắn)
∗ Batch (tồn tại thời gian dài)
– Tổ chức của lênh đọc và ghi trong giao dịch
∗ Mô hình chung
T1 : {R(x),R(y),W(y),R(z),W(x),R(w),W(z),W(w),C}
∗ Hai bước (đọc tất cả trước khi ghi)
T2 : {R(x),R(y),R(z),R(w),W(x),W(z),W(y),W(w),C}
∗ Nghiêm ngặt (một hạng mục dữ liệu phải được đọc trước khi cập nhật )
T3 : {R(x),R(y),W(y),R(z),W(x),W(z),R(w),W(w),C}
∗ Mô hình hoạt động : mỗi cặp (read,write) phải vận hành nguyên tử
T4 : {[R(x),W(x)], [R(y),W(y)], [R(z),W(z)], [R(w),W(w)],C}


Phân loại giao dịch(…)
– Cấu trúc giao dịch
∗ Giao dịch phẳng(Flat): chuỗi các thao tác cơ bản
giữa dấu hiệu begin và end
∗ Giao dịch lồng(Nested) : Các thao tác của giao dịch
bản thân cũng là giao dịch
* Luồng làm việc(Workflows): Tập hợp các nhiệm vụ
được tổ chức để đạt được một quá trình vận hành đã
cho. Workflows phát sinh các giao dịch và thể hiện
được rõ hơn các quá trình vận hành phức tạp.

* Phạm vi ứng dụng
 phân tán/ không phân tán,
 thuần nhất / không thuần nhất


Phân loại giao dịch
Ví dụ: luồng làm việc
• T1: Yêu cầu khách hàng
• T3: Đăng ký khách sạn
• T5: Thanh toán hóa đơn

• T2: Đặt chỗ máy bay
• T4: Đặt chỗ ô tô


Định hướng cho xử lý giao dịch
• Cấu trúc giao dịch( mô hình giao dịch) : Phẳng (đơn giản), lồng
• Tính nhất quán của csdl nội tai : Các giải thuật điều khiển dữ
liệu( đảm bảo tính nhất quán)
• Các giao thức tin cậy
– Nguyên tử và bền vững
– Các giao thức phục hồi cục bộ
– Các giao thức chuyển giao tổng thể

• Các giải thuật điều khiển tương tranh
– Đồng bộ việc vận hành các giao dịch tương tranh thế nào( tiêu chuẩn đúng
đắn)
– Nhất quán trong giao dịch, cách ly

• Các giao thức điều khiển nhân bản : Điều khiển tính nhất quán tương

hỗ các dữ liệu nhân bản thế nào


KẾT LUẬN
• Giao dịch là tập hợp các hoạt động chuyển hệ thống từ
trạng thái nhất quán này sang trạng thái nhất quán khác.
• Giao dịch T có thể được xem như thứ tự riêng phần T =
{∑,≺}, ở đây ∑ là tập các thao tác và ≺ thể hiện thứ tự các
thao tác. T có thể được biểu diễn như một đồ thi không chu
trình trực tiếp (DAG)
• Quản trị giao dịch nhằm đạt được 4 tính chất giao dịch:
ACID
• Giao dịch có thể được phân loại theo (i) thời gian (ii) Tổ
chức ghi và đọc và(iii) Cấu trúc
• Xử lý giao dịch liên quan đến các độ tin cậy, tương tranh,
các giao thức nhân bản đảm bảo 4 tính chất giao dịch


4.1 Những vấn đề về giao dịch
4.1.1. Định nghĩa
4.1. 2. Các tính chất
4.1.3. Phân loại
4.1.4. Các cơ chế điều khiển tương tranh