Vì thế, khái niệm giao tác transaction được sử dụng trong CSDL như đơn vị cho 2 sự kiện trên... 2.1 PHÂN BIỆT GIỮA NHẤT QUÁN CƠ SỞ DỮ LIỆU DATABASE CONSISTENCY VÀ NHẤT QUÁN GIAO TÁC TRA
Trang 1Tổng quan giao
tác phân tán.
Cơ sở dữ liệu phân tán - nhóm 3
Trang 31.TỔNG QUAN
Trang 4Trong chương trước, chúng ta đã thảo luận về cách xử lý và tối
ưu hóa các truy vấn Tuy nhiên, các tình huống xảy ra thì ta chưa xét đến.
VD: 2 truy vấn cùng cập nhật một dữ liệu.
Hệ thống phải ngừng hoạt động vì sự cố trong khi thực hiện truy vấn
Trang 5·TRONG CHƯƠNG TRƯỚC, CHÚNG TA ĐÃ
THẢO LUẬN VỀ CÁCH XỬ LÝ VÀ TỐI ƯU HÓA
CÁC TRUY VẤN TUY NHIÊN, CÁC TÌNH
HUỐNG XẢY RA THÌ TA CHƯA XÉT ĐẾN.
=> Do đó , cần có sự tính toán đánh tin cậy và thực thi nhất quán Vì thế, khái niệm giao tác (transaction) được sử dụng trong CSDL như đơn
vị cho 2 sự kiện trên
Trang 62 PHÂN BIỆT CÁC ĐỊNH NGHĨA
Trang 72.1 PHÂN BIỆT GIỮA NHẤT QUÁN CƠ SỞ DỮ LIỆU
(DATABASE CONSISTENCY) VÀ NHẤT QUÁN GIAO TÁC ( TRANSACTION CONSISTENCY)
CSDL có thể tạm thời ko nhất quán trong khi thực hiện giao tác, nhưng phải trở về trạng thái nhất quán sau khi kết thúc quan hệ giao tác.
- Nhất quán cơ sở dữ liệu: Là trạng thái của cơ sở dữ liệu nếu tuân theo tất cả các ràng buộc toàn vẹn (nhất quán) được định nghĩa trên nó.
Trang 8CSDL được nhân bản ở trong một trạng thái nhất quán lẫn nhau (mutually consistent state) nếu all bản sao của mỗi mục dữ liệu ở
trong đó đều có giá trị giống nhau ( one copy equivalence)
- Nhất quán giao tác: là hành động của các giao tác đồng thời
Khi xét đến CSDL có nhân bản sẽ
nảy sinh 1 tính chất phức tạp:
CSDL vẫn nhất quán ngay cả khi
có yêu cầu người dùng đồng thời
truy xuất đến CSDL
Trang 92.2 Độ tin cậy hay khả tin ( reliability) và quản lý giao tác (transaction management)
- Độ tin cậy là khả năng tự thích ứng (resiliency) của một hệ thống đối với các loại sự cố và khả năng tự khôi phục từ sự cố này.
Hệ thống khả tín là: hệ thống tự thích ứng với các sự cố hệ thống
và có thể tiếp tục cung cấp các dịch vụ ngay cả khi có sự cố
Hệ quản trị CSDL khả hồi phục: là có thể chuyển sang trạng tháinhất quán sau khi gặp một sự cố
·Quản lý giao tác (transaction management) là giải quyết các bài toán duy trì đc CSDL ở trong tình trạng nhất quán ngay cả khi có nhiều truy xuất đồng thời và khi có sự cố
Trang 103 GIAO TÁC
Trang 11- ĐƯỢC XEM NHƯ MỘT DÃY CÁC THAO TÁC ĐỌC VÀ GHI TRÊN CSDL CÙNG VỚI CÁC BƯỚC TÍNH TOÁN
CẦN THIẾT.
VD 1: Xét câu truy vấn SQL làm tang ngân sách CAD/CAM lên 10%
UPADATE PROJ
SET BUDGET = BUDGET * 1.1
WHERE PNAME = “CAD/CAM”
Câu truy vấn này có thể đặc tả như một giao tác bằng cách cho nó một cáitên ( vd: BUDGET_ UPDATE) và khai báo:
Begin_transaction BUDGET UPDATE
begin
EXEC SQL UPDATE PROJ
SET BUDGET = BUDGET * 1.1
WHERE PNAME = “CAD/CAM”
end
Các câu lệnh Begin_transaction và end được ấn định cho 1 giao tác
Trang 12VD2: Chúng ta xét 1 hệ thống quản lý vé máy bay sử dụng các định nghĩa quan hệ sau.
CUST: tên khách hang, địa chỉ, số dư
SPECIAL: yêu cầu đặc biệt của khách
Ta đơn giản hóa ứng dụng trên, giao tác thực hiện có thể được cài đặt như sau.:
Begin_transaction Reservation
begin
input (flight_no, date, customer_name)
EXEC SQL UPDATE FLIGHT
SET STSOLD = STSOLD + 1
WHERE FNO = flight_no
AND DATE = date;
EXEC SQL INSERT
INTO FC(FNO,DATE,CNAME,SPECIAL)
VALUES (flight_no, date, customer_name, null);
Output (“reservation completed”)
end
Trang 13·Một giao thức phải kết thúc ngay khi xảy ra sự cố
·Giao tác hoàn tất các tác vụ gọi là giao tác có ủy
thác (commit) Giao tác không hoàn tất các tác vụ là giao tác bị hủy bỏ (abort)
·Ngoài ra, hệ quản trị CSDL có thể hủy bỏ một giao tác, chẳng hạn do bị khóa chết ( deadlock)
·Quá trình rollback là quá trình khi một giác tác bị
hủy bỏ, quá trình thực hiện sẽ ngừng và mọi hành
động đã thực hiện phải được “undo”, đưa CSDL về trc khi thực hiện giao tác
·Vai trò của ủy thác quan trọng ở 2 mặt
3.1 Kết thúc giao tác.
Trang 14o Lệnh ủy thác báo cho hệ quản trị CSDL biết rằng tác dụng của giao dịch đó cần đc phản ánh vào CSDL, làm cho các giaot ác đang truy xuất các mục dữ liệu đó có thể thấy được chúng
o Điểm mà giao tác ủy thác là điểm “không đường về” Kết quả của một giao tác đã ủy thác bây giờ được lưu
cố định vào cơ sở dữ liệu và không thể hồi phục lại được.
Trang 15VD3: Ở ứng dụng dặt chỗ máy bay, điều ta chưa xét là không còn chỗ trống trên chuyến bay Giao tác cần viết lại như sau.
Begin_transaction Reservation
begin
input(flight_no, date, customer_name)
EXEC SQL SELLECT STSOLD, CAP
INTO temp1, temp2
FROM FLIGHT
WHERE FNO = flight_no
AND DATE = date;
If temp1 = temp2 then
EXEC SQL UPDATE FLIGHT
SET STSOLD = STSOLD + 1
WHERE FNO = flight_no
AND DATE = date;
Trang 16··Qua VD3, ta thấy nếu không còn chỗ trống giao tác bị hủy bỏ Việc sắp xếp thứ tự các kết quả để trình bày ra cho người dung tùy theo các lệnh abort và commit
Trang 173.2 Đặc trưng hóa
các giao tác
Trang 18Các giao tác đều đọc và ghi một số dữ liệu và các tập
đọc và ghi của một giao tác không nhất thiết phải tách
biệt.
Tập đọc và tập ghi của một giao tác tạo ra tập cơ sở BS
(base set) nghĩa là BS = RS (read set) WS (write set)
VD5: Xétgiao tác đặt chỗ, định nghĩa các tập được nêu trên:
o RS [Reservation] = {FLITH.STSOLD, FLIGHT.CAP}
o WS [Reservation] = {FLIGHT.SOLD, FC.FNO, FC.DATE,
FC.CNAME, FC.SPECIAL}
o BS [Reservation] = {FLIGHT.STSOLD, FLIGHT.CAP, FC.FNO, FC.DATE, FC.CNAME, FC.SPECIAL}
Trang 19Các CSDL động phải giải quết bài toán ảnh ảo (phantom), như ví dụ sau:
o Giao tác T1, tìm trong bảng FC tên khách hang yêu cầu bữa ăn.
Nó nhận được tập CNAME gồm tên khách hàng.
o Khi T1 thực hiện, T2 chèn các bộ mới vào FC có yêu cầu bữa ăn rồi ủy thác.
o Nếu sau đó T1 đưa ra câu truy vấn tìm kiếm cũ, nó sẽ nhận được tập CNAME khác với tập ban đầu mà nó đã nhận.
=> Các bộ “ảnh ảo” đã xuất hiện trong CSDL.
Trang 203.3 Hình thức hóa khái niệm giao tác
Trang 21Chúng ta biểu thị phép toán Oj của giao tác Tik hi hoạt tác trên CSDL x là Oij(x),Oij thuộc {read, write} Các phép toán được giả thiết là nguyên tử (mỗi phép toán được thực thi như một đơn vị không thể chia
Trang 23Có 2 tình huống huống kết thúc trong ứng dụng đặt chỗ tùy
vào tình trạng còn có chỗ trống hay không Sẽ có mâu thuẫn vì
đn giao tác chỉ tồn tại 1 tình huống kết thúc Tuy nhiên giao tác
là thực thi một chương trình Rõ ràng chỉ một trong hai tình
huống kết thúc xảy ra đồng nghĩa với việc một giao tác hủy bỏ
và một giao tác được ủy thác Ta đặc tả giao tác đầu như sau:
VD6 :
Trang 24Và giao tác sau được đặc tả như sau:
= {R(STSOLD), R(CAP), W(STSOLD), W(FNO), W(DATE), W(CNAME),W(SPECIAL), C}
< = {(O1,O3), (O2,O3), (O1,O4), (O1, O5), (O1, O6),
(O1, O7), (O2, O4), (O2, O5), (O2, O6), (O2, O7),
(O1, C), (O2, C), (O3, C) (O4, C), (O5, C), (O6, C), (O7, C)}
Trong đó O1 = R(STSOLD), O2 = R(CAP), O3 = W(STSOLD), O4 =
W(FNO), O5= W(DATE), O6 = W(CNAME), O7 = W(SPECIAL)
Trang 25·Thông thường chúng ta bỏ ra khỏi định nghĩa giao tác và sử dụng tên của thứ tự bộ phận để chỉ đến các miền lẫn tên của thứ tự bộ phận Chúng cho phép ta đặc tả thứ tự của các phép toán trong một giao tác nhờ một phương thức khác đơn giản bằng các dùng thứ tự tương đối của định nghĩa giao tác VD: Chúng ta có thể định nghĩa giao tác của ví dụ trên như sau: T = {R(x), R(y), W(x), C} thay vì đặc tả dài dòng như trước.
Trang 26Thanks for
listening