1. Trang chủ
  2. » Giáo án - Bài giảng

Tiểu luận môn lý thuyết các hệ phân tán giao dịch và kiểm soát đồng thời

19 578 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 19
Dung lượng 533,04 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Giao dịch Transactions Mục đích của giao dịch là đảm bảo các đối tượng luôn ở trạng thái nhất quán khi chúng được truy cập bởi nhiều giao dịch hoặc trong trường hợp có lỗi xảy ra Khái ni

Trang 1

CHƯƠNG 16 – GIAO DỊCH VÀ KIỂM SOÁT ĐỒNG THỜI

1 Giao dịch

2 Giao dịch lồng nhau

3 Kiểm soát truy cập đồng thời

4 Khóa

5 Kiểm soát đồng thời tin cậy

6 Nhãn thời gian

1

Giao dịch (Transactions)

Mục đích của giao dịch là đảm bảo các đối tượng luôn ở trạng

thái nhất quán khi chúng được truy cập bởi nhiều giao dịch hoặc trong trường hợp có lỗi xảy ra

Khái niệm về Hoạt động nguyên tử

Việc sử dụng các luồng cho phép nhiều client có thể cùng truy cập vào một đối tượng Vì vậy, các phương thức của đối tượng cần được thiết kế để sử dụng trong bối cảnh đa luồng.

Nếu một luồng gọi 1 phương thức trên 1 đối tượng thì đối tượng

đó sẽ bị khóa Nếu một luồng khác gọi phương thức đó thì nó sẽ

bị khóa cho đến khi khóa được giải phóng.

Các hoạt động mà không bị can thiệp từ các hoạt động đồng thời

đang được thực thi bởi các luồng khác được gọi là hoạt động nguyên tử

Trong một số trường hợp, các client đòi hỏi một chuỗi các yêu

cầu riêng biệt, yêu cầu đặt ra là:

- Chúng không bị can thiệp bởi các hành động đồng thời từ các client khác.

- Hoặc tất cả các hành động phải thực hiện thành công, hoặc không có một hành động nào thành công nếu máy chủ bị lỗi.

Ví dụ:

Thực hiện một giao dịch chuyển tiền giữa 2 tài khoản ngân hàng: Tài khoản A và B tương ứng có $500 và $100;

Cần chuyển $300 từ tài khoản A sang tài khoản B

Trang 2

Sẽ có 2 lệnh cập nhật như sau:

- Trừ số tiền hiện có của tài khoản A đi $300

- Cộng thêm số tiền hiện có của tài khoản B thêm $300

Nếu 2 lệnh diễn ra độc lập (không cùng 1 giao dịch), vì một

lý do nào đó, lệnh thứ 2 bị lỗi, khi đó tài khoản A sẽ còn $200

và tài khoản B vẫn giữ nguyên $100

Điều này là không thể chấp nhận được vì $300 bỗng dưng biến mất.

Nếu thực hiện 2 lệnh trên trong cùng 1 giao dịch, nó sẽ đảm

bảo

- Hoặc cả 2 lệnh đều cập nhật thành công

- Hoặc trong trường hợp có lỗi thì cả 2 lệnh đều bị hủy

Năm 1983, Cụm từ ACID được đưa ra để dễ dàng ghi nhớ các tính chất của giao dịch:

Tính nguyên t ử (Atomicity) Một giao dịch có nhiều thao tác khác biệt thì hoặc là toàn bộ các thao tác hoặc là không một thao tác nào được hoàn thành.

 Tính nhất quán (Consistency) Một giao dịch hoặc là sẽ tạo

ra một trạng thái dữ liệu mới và hợp lệ, hoặc trong trường hợp có lỗi thì toàn bộ dữ liệu sẽ chuyển toàn về trạng thái

trước khi thực hiện giao dịch.

 Tính tách biệt (Isolation) Một giao dịch đang thực hiện và

chưa được xác thực phải bảo đảm tách biệt khỏi các giao

dịch khác.

Tính bền vững (Durability) Dữ liệu được xác thực sẽ được

hệ thống lưu trữ sao cho ngay cả trong trường hợp hỏng hóc hoặc có lỗi hệ thống, dữ liệu vẫn đảm bảo trong trạng thái chính xác.

Ví dụ: Lịch sử của 1 giao dịch

Client mở thành công 1 giao dịch đến Server, và giao dịch này được cấp 1 định danh, định danh này sẽ được sử dụng

Trang 3

Các hoạt động từ Client và Server ban đầu được thực hiện thành công

Khi 1 hoạt động trên Server bị lỗi, Server sẽ gửi thông báo cho Client

Khi đó Client sẽ Hủy bỏ giao dịch, và giao dịch kết thúc.

Một số Đặc điểm của giao dịch

- Nếu một máy chủ bị lỗi bất thường thì hành động cuối cùng cần được thay thế

- Bất kỳ giao dịch nào chưa được xác thực sẽ bị hủy bỏ

- Giao dịch nào được xác thực trong thời điểm gần nhất sẽ được sử dụng để khôi phục giá trị cho đối tượng

- Để đối phó với một client bị lỗi trong quá trình giao dịch, máy chủ sẽ cung cấp cho mỗi giao dịch, một khoảng thời gian nhất định và loại bỏ giao dịch nếu không hoàn thành trước thời gian đó.

- Nếu một máy chủ bị lỗi trong khi tiến hành giao dịch, client sẽ nhận được một hành động trả về sau khi hết thời gian chờ Nếu máy chủ bị lỗi, giao dịch sẽ không còn giá trị và khách hàng phải thực hiện một giao dịch tiếp theo.

Trang 4

2 Giao dịch lồng nhau

- Giao dịch lồng nhau là giao dịch được bao gồm một số giao dịch khác.

- Giao dịch ngoài cùng trong giao dịch lồng nhau được gọi là giao dịch level Các giao dịch khác nhỏ hơn giao dịch top-level gọi là giao dịch con

- Một giao dịch con có thể bị hủy bỏ một cách độc lập với giao dịch con khác

Ưu điểm của giao dịch lồng nhau:

- Các giao dịch con tại 1 mức có thể chạy đồng thời với các giao dịch con khác tại cùng mức trong cây phân cấp Điều này cho phép thêm vào giao dịch đồng thời Khi các giao dịch chạy trên các server khác nhau, chúng có thể làm việc song song

- Các giao dịch con có thể xác thực hoặc Hủy bỏ độc lập nhau.

So với một giao dịch đơn, tập hợp giao dịch con lồng nhau là mạnh mẽ hơn

V

í D ụ: gửi email cho một nhiều người cùng lúc, nếu email

nào không tồn tại (sai địa chỉ) thì chỉ có mail đó không đến đúng địa chỉ Nghĩa là một giao dịch thất bại không làm cho toàn bộ giao dịch bị khởi động lại.

Các quy tắc trong việc xác thực giao dịch lồng nhau:

• Một giao dịch có thể Xác thực hoặc Hủy bỏ chỉ sau khi giao dịch con của nó đã hoàn thành.

Khi một giao dịch con hoàn thành, thì nó hoặc Xác thực tạm thời hoặc Hủy bỏ tạm thời.

• Khi giao dịch cha mẹ bị hủy bỏ, tất cả các giao dịch con cũng bị hủy bỏ

Ví Dụ, nếu T2 Hủy bỏ thì T21 và T211 cũng Hủy bỏ, ngay cả khi chúng đã Xác thực tạm thời.

• Nếu giao dịch top-level Xác thực, thì tất cả các giao dịch con

mà đã xác thực tạm thời có thể xác thực chính thức, miễn là không giao dịch bên ngoài của nó bị hủy bỏ

Trang 5

Ví Dụ, Nếu T Xác thực cho phép T1, T11 và T12 Xác thực, nhưng T21 và T211 thì không bởi vì cha mẹ chúng là T2 bị Hủy bỏ.

• Trong nhiều trường hợp, giao dịch top-level có thể quyết định Hủy bỏ bởi vì một hoặc nhiều giao dịch con của nó bị Hủy bỏ

V

í D ụ : Chuyển 100$ từ B tới A:

1 Cộng vào A $100

2 Trừ $100 từ B

Điều này có thể cấu trúc như một cặp giao dịch, một cho giao dịch Cộng tiền và một cho giao dịch trừ tiền giữa hai tài khoản

Khi cả 2 giao dịch con được xác thực, giao dịch cha có thể được xác thực Giả sử giao dịch con Trừ tiền B bị Hủy, Giao dịch công tiền được xác thực: gọi lại xác thực của giao dịch con là điều kiện cho cha mẹ xác thực.

Giả sử rằng giao dịch top-level sẽ quyết định Hủy bỏ Việc Hủy bỏ của cha mẹ gây ra các giao dịch con Hủy bỏ do vậy giao dịch Cộng tiền bị Hủy bỏ và tất cả những việc nó đã làm

bị undo.

Trang 6

3 Kiểm soát truy cập đồng thời

The Lost update problem (Vấn đề mất dữ liệu cập nhật):

- Tình trạng này xảy ra khi có nhiều hơn một giao dịch cùng thực hiện cập nhật trên 1 đơn vị dữ liệu Khi đó, kết quả của thao tác cập nhật thực hiện sau sẽ đè lên kết quả của thao tác cập nhật trước đó.

Tài khoản A, B, C có số dư tương ứng là $100, $200, $300

Giao dịch T (A => B) Giao dịch U (C => B)

Xem số dư ở tài

Tăng số dư của B

thêm 10% lấy từ A $200*10 %

= $220 Trừ Tài khoản A số

tiền đã chuyển vào B

– Còn lại

$80 Xem số dư ở tài

Tăng số dư của B

= $242

Trừ Tài khoản C số

tiền đã chuyển vào B – Còn lại

$278

Khi 2 giao dịch thực hiện đồng thời:

Trang 7

Như vậy, tài khoản B được cập nhật 2 lần, có số dư là $220 thay vì giá trị đúng phải là $242

Số dư của tài khoản C là $288 thay vì giá trị đúng là $278

Inconsistent retrievals (Truy vấn không phù hợp):

Đây là tình huống một hoạt động truy vấn và hoạt động cập nhật

xử lý đồng thời, khiến giao dịch truy cập nhiều lần trên cùng 1 dữ liệu cho ra nhiều giá trị khác nhau.

2 tài khoản A,B ban đầu có số dư là $200,

Sau hoạt động trừ $100 từ tài khoản A, Hoạt động tính tổng số dư của 2 tài khoản là $100+$200=$300 =>điều này là không chính xác.

Hoạt động tiếp theo cộng vào tài khoản B $100, khi đó B có $300.

Trang 8

Nghĩa là, giao dịch W thực hiện truy vấn trong khi giao dịch V thực hiện chuyển 1 số tiền từ tài khoản A sang B nhưng chưa hoàn thành.

Serial equivalence (tuần tự) :

Đây là cách khắc phục 2 tình huống Mất dữ liệu cập nhật và Truy vấn không phù hợp Khi 2 hoạt động không bị xung đột

thì cho phép thực hiện đồng thời Còn ngược lại, phải thực hiện tuần tự Xong giao dịch 1 thì giao dịch 2 mới được thực hiện.

4 Khóa

- Giao dịch phải được lên kế hoạch để tác động lên các dữ liệu được chia sẻ một cách tuần tự

- Một cơ chế đơn giản là việc sử dụng khóa

- Máy chủ sẽ khóa bất kỳ đối tượng được sử dụng trong hoạt động giao dịch của client

- Nếu một client khác yêu cầu quyền truy cập vào một đối tượng đã bị khóa thì yêu cầu sẽ bị treo và nó phải chờ đến khi đối tượng được mở khóa

- Một máy chủ thường có chứa một số lượng lớn các đối tượng, và một giao dịch điển hình chỉ truy cập một vài trong số chúng và gần như không xung đột với các giao dịch vãng lai khác

- Phạm vi cho truy cập đồng thời đến các đối tượng sẽ bị hạn chế nghiêm trọng nếu khóa được áp dụng cho tất cả các đối tượng cùng một lúc

- Một cách thích hợp hơn là sử dụng khóa để có thể có nhiều giao dịch đồng thời đọc một đối tượng, hoặc một giao dịch duy nhất ghi một đối tượng

Trang 9

- Khóa đọc –ghi: cho phép nhiều hơn 1 giao dịch có thể giữ khóa trên mục dữ liệu,

có 2 thao tác ( read –lock, write –lock)

- Khóa treo

a Quy tắc xung đột hoạt động:

1 Nếu giao dịch T đang đọc 1 đối tượng thì 1 giao dịch đồng thời U không được ghi lên đối tượng đó đến khi T được xác nhận hoặc hủy bỏ

2 Nếu 1 giao dịch T đang thực hiện ghi một đối tượng thì 1 giao dịch đồng thời U không được đọc hay ghi cho đến khi T được xác nhận và hủy bỏ Hình dưới đây là ví dụ về xung đột hoạt động: cho 1 đối tượng với các khóa đã được thiết lập:

thời khác có thể đọc hoặc ghi

được đọc không được ghi

thể đọc hoặc ghi đối tượng

- Giải quyết vấn đề inconsistent retrieval: Nếu giao dịch đọc đến trước, nó sẽ trì hoãn giao dịch ghi

- Giải quyết vấn đề lost update: Mất cập nhật xảy ra khi hai giao dịch đọc một giá trị của một đối tượng và sau đó sử dụng nó để tính toán một giá trị mới Mất cập nhật được ngăn ngừa bằng cách làm cho các giao dịch sau đó trì hoãn lần đọc cho đến khi những giao dịch trước đó hoàn thành Điều này đạt được bởi mỗi giao dịch thiết lập một khóa đọc khi nó đọc một đối tượng và sau đó thăng cấpnó thành một khóa viết khi nó viết cùng một đối tượng - khi một giao dịch tiếp theo yêu cầu một đọc khóa nó sẽ bị trì hoãn cho đến khi nào giao dịch hiện tại hoàn thành

Quy sử dụng Khóa : trong khóa hai pha nghiêm ngặt

1) Khi một hành động truy cập một đối tượng trong một giao dịch:

a) Nếu đối tượng không bị khóa, thì nó sẽ bị khoá và thực thi hành động.

b) Nếu đối tượng có một khóa xung độtvới một giao dịch khác, giao dịch sẽ phải chờ đợi cho đến khi nó được mở khóa

Trang 10

c) Nếu đối tượng có một khóa không xung đột với một giao dịch khác, khóa được chia sẻ và thực thi hành động.

d) Nếu đối tượng đã bị khóa trong cùng một giao dịch, khóa sẽ được nâng cấp nếu cần thiết và thực thi hành động (Trong trường hợp nâng cấp

bị ngăn chặn bởi một khóa xung đột, quy tắc b được sử dụng.)

2) Khi một giao dịch thành công hoặc hủy bỏ, máy chủ sẽ mở khóa tất cả các đối tượng nó bị khóa

Quy tắc sử dụng khóa cho các giao dịch lồng nhau

Sử dụng khóa để các giao dịch con được truy cập một cách tuần tự:

1) Mỗi tập hợp các giao dịch lồng nhau phải ngăn chặn tác độngcủa tập hợp các giao dịch lồng nhau khác

2) Mỗi giao dịch trong một tập hợp các giao dịch lồng nhau phải ngăn chặn tác động của các giao dịch khác trong tập hợp này

một giao dịch con thành công, được kế thừa bởi cha mẹ của nó khi nó hoàn thành

- Lưu ý rằng hình thức này kế thừa được truyền từ con đến mẹ

- Các giao dịch ngoài cùng được kế thừa tất cả các khóa đã được mua lại bởi các giao dịch con thành công

- Điều này đảm bảo rằng các khóa có thể được giữ cho đến khi giao dịch ngoài cùng đã cam kết hoặc hủy bỏ, do đó ngăn chặn thành viên của giao dịch lồng nhau khác

- Giao dịch mẹ không được phép chạy đồng thời với các giao dịch con của mình Nếu một giao dịch mẹ có khóa trên một đối tượng, nó vẫn giữ được khóa trong thời gian giao dịch mà con của nó được thực hiện Điều này có nghĩa rằng các giao dịch con tạm thời mua lại các khóa từ cha mẹ của nó

- Các giao dịch con cùng cấp được phép chạy đồng thời, nên khi chúng truy cập vào cùng một đối tượng, chương trình khóa phải theo tuần tự truy cập của chúng

4.1 Deadlocks

- Việc sử dụng Khóa có thể dẫn tới Deadlocks

- Là trạng thái mà trong đó mỗi hoạt động của một nhóm giao dịch đang chờ đợi để một số hoạt động khác phát hành khóa Một đồ thị wait - for có thể được sử dụng

để đại diện cho mối quan hệ giữa các giao dịch Một nút tương ứng với 1 giao dịch hoạt động

Trang 11

a.deposit(100); write lock A: Gửi tiền vào A, cấp Khóa cho A

b.withdraw(100) : Rút tiền từ B

dịch U được mở

khóa A trong giao dịch T được mở

Phòng chống Deadlocks

- Một cách đơn giản nhưng không phải là cách tốt nhất, đó là khóa tất cả các đối tượng sử dụng bởi một giao dịch khi nó bắt đầu

- Tuy nhiên, Phương pháp này sẽ làm hạn chế quyền truy cập vào tài nguyên sử

dụng chung Ngoài ra, điều đó đôi khi không thể dự đoán vào lúc bắt đầu giao dịch mà các đối tượng sẽ được sử dụng Điều này thường là trường hợp trong các ứng dụng tương tác, cho người sử dụng sẽ phải nói trước một cách chính xác những đối tượng mà họ đang lên kế hoạch sử dụng

- Deadlocks cũng có thể được ngăn ngừa bằng cách yêu cầu khóa trên các đối tượng

trong một trật tự được xác định trước, nhưng điều này có thể dẫn đến khóa sớm và làm giảm sự đồng thời

- Các thuật toán WAIT-DIE và WOUND- DIE được thiết kế dựa trên gán nhãn thời

gian cho giao dịch

- Là thuật toán không tước quyền

thì nó không bao giờ tước

- Là thuật toán tước quyền được khẳng định theo quy tắc sau:

chỉ được phép chờ khi và chỉ

Trang 12

- Quy tắc như sau: Nếu Ti yêu cầu

khóa trên mục dữ liệu đã được

khởi động lại với nhãn thời gian

- Nâng cấp khóa Deadlocks thường được gây ra bởi hai giao dịch xung đột đầu tiên

tham gia khóa đọc và sau đó cố gắng thúc đẩy nó để có khóa ghi Một giao dịch với một khóa nâng cấp trên một mục dữ liệu được phép đọc, nhưng khóa này xung đột với ổ khóa nâng cấp được thiết lập bởi các giao dịch khác trên mục dữ liệu tương tự Đây là loại khóa không thể thiết lập ngầm bằng việc sử dụng một hoạt động đọc, nhưng phải được theo yêu cầu của khách hàng

Phát hiện Deadlocks

wait-for Sau khi phát hiện một bế tắc, một giao dịch phải bị hủy bỏ để phá vỡ chu trình

- Giao dịch T đợi chờ giao dịch

U, V

- Giao dịch V đợi chờ giao dịch

W

Để phá bỏ Deadlock: sau khi phát hiện 1

Deadlock, phải phá bỏ 1 giao dịch để phá vỡ chu trình

- Bây giờ xem xét 1 kịch bản: trong 3

Trang 13

 tạo ra chu trình và các giao

dịch xảy ra đồng thời

trên 1 đối tượng C và giao dịch W chứa 1 khóa ghi trên đối tượng B, mà giao dịch V chờ đợi để có được 1 khóa

- Các giao dịch T và W sau đó yêu cầu ghi ổ khóa trên đối tượng C và tình huống bế tắc phát sinh trong đó T đợi

U và V, V đợi chờ W, và chờ đợi W cho T, U, V như hình bên trái

 Điều này cho thấy mặc dù mỗi giao dịch

có thể đợi chờ cỉ có 1 đối tượng tại 1 thời gian, nó có thể tham gia vào nhiều chu trình

Ví dụ giao dịch V tham gia vào 2 chu trình: V

WT và VWT

Trong ví dụ này, giả sử vòng giao dịch V bị phá bỏ  điều này phát hành khóa V về C và

2 chu trình liên quan V bị phá vỡ

Timeouts

- Khóa timeout là một phương pháp để giải quyết bế tắc thường được sử dụng

- Mỗi khóa được cho một khoảng thời gian nhất định Sau thời gian này, một khóa

có thể bị tổn thương Tuy nhiên, nếu bất kỳ giao dịch nào khác đang phải chờ đợi

để truy cập đối tượng này, thì khóa bị tổn thương đó sẽ bị hỏng (có nghĩa là, đối tượng sẽ được mở khóa) và giao dịch đang chờ đợi được tiếp tục Các giao dịch

mà khóa đã bị phá vỡ thường bị hủy bỏ

Ngày đăng: 03/10/2017, 13:27

HÌNH ẢNH LIÊN QUAN

- Ví dụ trong hình 16.30 mô tả quy tắc ghi và nhãn thời gian: - Tiểu luận môn lý thuyết các hệ phân tán giao dịch và kiểm soát đồng thời
d ụ trong hình 16.30 mô tả quy tắc ghi và nhãn thời gian: (Trang 17)
- Hình trên minh họa quy tắc đọc bao gồm 4 trường hợp có gắn nhãn từ (a) (d), mỗi trường hợp minh họa cho 1 đối tượng đọc bởi giao dịch T3 - Tiểu luận môn lý thuyết các hệ phân tán giao dịch và kiểm soát đồng thời
Hình tr ên minh họa quy tắc đọc bao gồm 4 trường hợp có gắn nhãn từ (a) (d), mỗi trường hợp minh họa cho 1 đối tượng đọc bởi giao dịch T3 (Trang 18)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w