1. Trang chủ
  2. » Công Nghệ Thông Tin

Điều khiển tương tranh cơ sở dữ liệu phân tán

17 820 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

Tiêu đề Điều khiển tương tranh cơ sở dữ liệu phân tán
Chuyên ngành Cơ sở dữ liệu
Thể loại Bài giảng
Định dạng
Số trang 17
Dung lượng 203,1 KB

Nội dung

Tài liệu này dành cho sinh viên, giáo viên khối ngành công nghệ thông tin tham khảo và có những bài học bổ ích hơn, bổ trợ cho việc tìm kiếm tài liệu, giáo án, giáo trình, bài giảng các môn học khối ngành công nghệ thông tin

Trang 1

Ng Duc Thuan

I Giao tác (transaction)

1 Khái niệm:

Giao tác là một tập hợp các thao tác có thứ tự truy xuất dữ liệu trên CSDL thành một đơn vị

công việc logic (xem là một thao tác nguyên tố ), chuyển CSDL từ trạng thái nhất quán này

sang trạng thái nhất quán khác

Để ghi nhận sự hoàn tất hay không của một giao tác, người ta sử dụng các lệnh sau:

BEGIN TRANSACTION Bắt đầu một giao tác

COMMIT TRANSACTION Kết thúc giao tác thành công

ROLLBACK TRANSACTION Kết thúc giao tác không thành công, những thao tác làm

ảnh hưởng CSDL đã được thực hiện trước đó được undo, CSDL được trả về tình trạng trước khi thực hiện giao tác

END TRANSACTION Chỉ mang ý nghĩa hình thức, thường không sử dụng

Ví dụ: Cho 2 quan hệ

- LOP (Malop, Tenlop, SoSV)

- SV (MaSV, TenSV, Malop)

Quy định: khi thêm một sinh viên vào một lớp thì phải cập nhật lại sỉ số của lớp đó

Ø Giao tác thêm 1 SV vào 1 lớp:

BEGIN TRANSACTION Them_SV

Insert into SV values(v_masv,v_tensv,v_malop)

Update LOP

Set SoSV = SoSV + 1

Where Malop = v_malop

COMMIT TRANSACTION Them_SV

2 Các tính chất của giao tác: ACID

a Tính nguyên tố (Atomic)

- 1 giao tác là 1 đơn vị xử lý không thể chia nhỏ được nữa; hoặc là tất cả các thao tác trong

giao tác được thực hiện (được ghi nhận chắc chắn), hoặc là không có thao tác nào được ghi nhận

kết quả.(Nếu chia nhỏ giao tác thành các thao tác thì sẽ không đảm bảo tính nhất quán của

CSDL.)

b Tính nhất quán (Consistency)

- Giao tác chuyển CSDL từ tình trạng nhất quán này sang tình trạng nhất quán khác

c Tính cô lập (Isolation)

- Các giao tác xử lý đồng thời phải độc lập với những thay đổi được thực hiện bởi các giao tác

chưa hoàn tất khác (những thay đổi này chưa hình thành nên 1 trạng thái nhất quán của CSDL)

d Tính lâu dài, bền vững (Durability)

- Tất cả những thay đổi lên CSDL mà giao tác thực hiện cho đến khi được xác nhận hoàn tất

(commit) thì phải được ghi nhận chắc chắn lên CSDL

Trang 2

Ng Duc Thuan

II Các vấn đề của việc truy xuất đồng thời:

1 Mất dữ liệu cập nhật (lost update)

Ø Ví dụ: Cho quan hệ HANGHOA (MaHH, TenHH, ĐVT, SLTon)

SLTon = 20

Transaction Giá trị T1 (bán hàng) T2 (bán hàng) x1 x2 SLTon

Read (SLTon) à x1 20 20

Read (SLTon) à x2 20 20 20 x1 – 10 à x1 10 20 20

x2 – 3 à x2 10 17 20 Write x1à SLTon 10 17 10

Write x2à SLTon 10 17 17

Ø Lost Update: Thao tác cập nhật của T1 coi như bị mất, không được ghi nhận (do những thay

đổi của các giao tác khác ghi đè lên)

2 Đọc dữ liệu chưa commit (uncommitted data)

Ø Ví dụ: Cho quan hệ HANGHOA (MaHH, TenHH, ĐVT, SLTon)

SLTon = 20

Transaction Giá trị T1 (nhập hàng) T2 (bán hàng) x1 X2 SLTon

Read (SLTon) à x1 20 20

x1 + 100 à x1 120 20

Write x1à SLTon 120 120

Read (SLTon) à x2 120 120 120 x2 – 5 à x2 120 115 120 Write x2à SLTon 120 115 115

Ø Transaction T1 sửa đổi dòng X nhưng chưa commit, Transaction T2 đọc dòng X

Transaction T1 rollback những gì đã thay đổi trên dòng X => dữ liệu mà Transaction T2 đang

đọc chưa hề tồn tại

3 Thao tác đọc không thể lặp lại (unrepeatable data)

Ví dụ: Xét 2 giao tác sau:

T1 T2

Read(A) Read(A)

A=A+10 Print(A)

Write(A) Read(A)

Print(A)

Trang 3

Ng Duc Thuan

Giả sử A=20 và 2 giao tác này thực hiện đồng thời theo thứ tự sau:

Transaction Giá trị T1 T2 x1 x2 A

Read (A) à x1 20 20

Begin Transaction

Read (A) à x2 20 20 20

x1+10 à x1 30 20 20

Print (x2) 30 20 20

Write x1 à A 30 20 30

Read (A) à x2 30 30 30

Commit T1

Ø Khi giao tác T2 đọc nhiều lần trên cùng một dòng dữ liệu, giữa 2 lần đọc thì có một thao

tác làm thay đổi giá trị dòng đó ở giao tác T1 => trong giao tác T2 mỗi lần đọc dòng đó

sẽ cho ra những kết quả khác nhau

4 Vấn đề “bóng ma” (phantom)

Ví dụ: T1 thực hiện việc chuyển tiền từ tài khoản A sang tài khoản B Khi T1 mới chỉ thực

hiện thao tác trừ số tiền ở tài khoản A (chưa cộng số tiền vào tài khoản B) thì T2 muốn xem

tổng số tiền ở hai tài khoản => Tổng số tiền không chính xác

Transaction T1 T2

Begin Transaction

Read (A) A=A-50 Write (A)

Begin Transaction

Read(A) Read (B) Print (A+B)

Commit T2

Read (B) B=B+50 Write (B)

Commit T1

Ø Như vậy, một tiêu chuẩn để lập lịch các giao tác là việc thực hiện đồng thời các giao tác cho

kết quả giống như khi thực hiện tuần tự các giao tác

III Đơn vị dữ liệu:

1 Định nghĩa:

- Đơn vị dữ liệu (item) là đơn vị nhỏ nhất mà hệ quản trị CSDL có thể đọc/ghi một lần, là đơn

vị để giải quyết tranh chấp

- Đơn vị dữ liệu có thể là database, table, field, record,…

Trang 4

Ng Duc Thuan

+ Nếu định nghĩa đơn vị dữ liệu lớn thì số giao tác thực hiện giảm nhưng sẽ không có thuận lợi

trong việc giải quyết tranh chấp Ví dụ nếu đơn vị dữ liệu là bảng -> nhiều người cùng truy xuất

trên bảng thì giao tác sau phải chờ giao tác trước nhả bảng ra

+ Nếu định nghĩa đơn vị dữ liệu nhỏ thì nhiều giao tác được thực hiện đồng thời Ví dụ đơn vị dữ

liệu là bộ thì việc truy xuất của người sử dụng trên các bộ khác nhau có thể chấp nhận được

- Các thao tác trên đơn vị dữ liệu A:Đọc, Ghi

2 Một số tính chất khi thao tác trên đơn vị dữ liệu:

a Hai thao tác tương thích:

- Hai thao tác Oi và Oj (OiỴ Ti, Oj Ỵ Tj) gọi là tương thích nếu và chỉ nếu kết quả của việc

thực hiện đồng thời của Oi và Oj giống như kết quả của việc thực hiện tuần tự Oi rồi đến Oj hoặc

Oj rồi đến Oi

Ø Ví dụ:

T1 T2 Read A à a1 Read A à a2 a1 + 1 à a1 a2 * 2 à a2

11

O

Print a1 Print a2

21

O

Read A à a1 Read A à a2 a1 + 5 à a1 a2 * 2 à a2

12

O

Write a1 à A Write a2 à A

22

O

Read A à a1 Read A à a2 a1 + 2 à a1 a2 +7 à a2

13

O

Write a1 à A Write a2 à A

23

O

O14 Read B à b1

b1 + 1 à b1 Write b1 à B

- Thao tác O11 và O21là tương thích

- Thao tác O12 và O22không tương thích

- Thao tác O13 và O23 không tương thích

- Thao tác O14tương thích với các thao tác còn lại

Như vậy, có thể rút ra kết luận: hai thao tác trên hai đơn vị dữ liệu là tương thích với nhau; 2

thao tác đọc trên cùng một đơn vị dữ liệu là tương thích

b Hai thao tác khả hoán vị:

- Hai thao tác O i, O j (OiỴ Ti, Oj Ỵ Tj) là khả hoán vị nếu kết quả của việc thực hiện O i, O j

hay O j,O i là như nhau

Ø Ví dụ: Xét ví dụ trên

- Thao tác O11 và O21là khả hoán vị

- Thao tác O12 và O22không khả hoán vị

- Thao tác O13 và O23là khả hoán vị vì cuối cùng giá trị A ß A +9

Trang 5

Ng Duc Thuan

- Thao tác O14khả hoán vị với các thao tác còn lại

v Nhận xét:

Ø Các thao tác truy xuất các đơn vị dữ liệu khác nhau thì tương thích và khả hoán vị

Ø Các thao tác truy xuất trên cùng đơn vị dữ liệu:

- Nếu có liên quan đến phép cộng hay trừ thì khả hoán vị

- Read – Read ==> Khả hoán vị

- Read – Write ==> Không có tính khả hoán vị

- Write – Read ==> Không có tính khả hoán vị

- Write – Write ==> Không có tính khả hoán vị

IV Lịch tuần tự – Lịch khả tuần tự:

1 Lịch tuần tự (serial schedule):

- Một lịch S được lập từ n giao tác T1, T2,…, Tn xử lí đồng thời được gọi là lịch tuần tự nếu các

thao tác của từng giao tác được thực hiện liên tiếp nhau

2 Lịch khả tuần tự (serializable schedule):

- Một lịch S được lập từ n giao tác T1, T2,…, Tn xử lí đồng thời được gọi là lịch khả tuần tự nếu

nó cho cùng kết quả với một lịch tuần tự được lập từ n giao tác trên

Ø Ví dụ: 2 giao tác T1 và T2 có các thao tác sau:

T1 T2 Read A à a1 Read A à a2 a1 + 1 à a1 a2 * 2 à a2 Write a1 à A Write a2 à A Read B à b1 Read B à b2 b1 + 1 à b1 b2 * 2 à b2 Write b1 à B Write b2 à B

Lịch 1 (A=1, B=2) Lịch 2 (A=1, B=2) T1 T2 T1 T2

Read A à a1 Read A à a2

a1 + 1 à a1 a2 * 2 à a2

Write a1 à A (2) Read A à a1

Read A à a2 a1 + 1 à a1 a2 * 2 à a2 Write a2 à A (2) Write a2 à A (4) Read B à b2 Read B à b1 b2 * 2 à b2

b1 + 1 à b1 Write a1 à A (2)

Write b1 à B (3) Read B à b1

Read B à b2 b1 + 1 à b1 b2 * 2 à b2 Write b1 à B (3) Write b2 à B (6) Write b2 à B (4)

Ø Theo lịch 1, kết quả nhận được hoàn toàn tương tự như khi thực hiện tuần tự T1<T2

+ Lịch 1 có tính khả tuần tự; lịch 2 không có tính khả tuần tự

Trang 6

Ng Duc Thuan

- Tính khả tuần tự của các giao tác là điều kiện đủ để tránh đụng độ trong việc truy xuất đồng

thời (nếu khả tuần tự thì không đụng độ, nhưng nếu không khả tuần tự thì chưa chắc có đụng

độ)

- Bộ lập lịch (Scheduler): là một bộ phận của DBMS chịu trách nhiệm lập lịch khả tuần tự từ n

giao tác xử lí đồng thời, sẽ tiến hành lập lịch các thao tác (thao tác sẽ được thực hiện trước, thao

tác nào sẽ được thực hiện sau)

3 Thuật toán kiểm tra tính khả tuần tự của một lịch S:

Input: Lịch S bất kỳ được hình thành từ n giao tác T1, T2,…, Tn

Output: Xác định xem S có khả tuần tự hay không bằng cách xây dựng một đồ thị có hướng

G:

- Mỗi giao tác Ti là một node

- Nếu có 1 giao tác Ti phát ra yêu cầu Read(X) và sau đó có một giao tác Tj (j ¹ i) phát ra

yêu cầu Write (X) thì hình thành cung đi từ Ti đến Tj

- Nếu có 1 giao tác Ti phát ra yêu cầu Write(X) và sau đó có một giao tác Tj (j ¹ i) phát ra

yêu cầu Write (X) / Read (X) thì hình thành cung đi từ Ti đến Tj

- Nếu đồ thị G có chu trình thì S không khả tuần tự

Ví dụ: Xét tính khả tuần tự của lịch thao tác sau:

T1 T2 T3 T4

(1) Read A

(2) Read A (3) Write B

(4) Write A (5) Read B

(6) Read B (7) Read A

(8) Write B

(9) Write A Đồ thị có chu trình T1® T4® T1 nên không khả tuần tự

Trang 7

Ng Duc Thuan

V Kỹ thuật sắp xếp các giao tác bằng nhãn thời gian:

Ø Chỉ sắp xếp thứ tự các giao tác (thời gian bắt đầu), không nhằm sắp xếp trình tự thực hiện các

thao tác trong mỗi giao tác

1 Khái niệm nhãn thời gian (timestamp)

- Là 1 con số được phát sinh bởi bộ lập lịch, được gán cho mỗi giao tác để chỉ định thời điểm

bắt đầu thực hiện giao tác Nhãn thời gian có tính chất duy nhất và tăng dần

(

j

i i Tj T

j

i T t t

T < Û < )

- Nhãn thời gian của đơn vị dữ liệu: Nhãn thời gian của đơn vị dữ liệu chính là nhãn thời gian

của giao tác cuối cùng có truy cập đến đơn vị dữ liệu đó thành công hoặc là nhãn thời gian cao

nhất trong số các giao tác có truy cập thành công đến đơn vị dữ liệu đó

Ø Ví dụ: T1< T2<T3

T1 T2 T3 t A

Read A t A =t T1

Read A t A =t T2

Read A t A =t T3

2 Thuật toán sắp xếp toàn phần

Procedure Read (T i, A)

Begin

If t A £t Ti ithen

- Thực hiện thao tác đọc g

- t A:=t Ti

Else

Rollback T i và bắt đầu lại với nhãn thời gian mới

End Proc

Procedure Write (T i, A)

Begin

If t A £t Ti ithen

- Thực hiện thao tác ghi g

- t A:=t T i i

Else

Rollback T i và bắt đầu lại với nhãn thời gian mới

End Proc

Ø Ghi chú:

- t A: nhãn thời gian của đơn vị dữ liệu A

- t T i i: nhãn thời gian của giao tác T i

- Ban đầu t A =0 khi chưa có giao tác nào truy cập

Ø Ví dụ 1: t T1 =100,t T2 =120,t A =0

Trang 8

Ng Duc Thuan

T1 T2 t A

Read A t A=100

Read A t A=120

A = A+1

A = A+1 Write A t A=120 Write A t A>t T1 nên T1 phải rollback và

bắt đầu lại với timestamp mới

Ø Ví dụ 2: t T1 =100,t T2 =120,t A =0, Trong trường hợp này, rõ ràng không xảy ra đụng độ,

T1 không cần phải rollback và bắt đầu lại với timestamp mới Tuy nhiên, thuật toán sắp

xếp toàn phần không phân biệt tính chất của thao tác dữ liệu là read hay write nên T1

vẫn bị rollback và phải bắt đầu lại

T1 T2 t A

Read A t A=100

Read A t A=120 Read A t A=120 Read A t A>t T1 nên T1 phải rollback và

bắt đầu lại với timestamp mới

Ø Ví dụ 3:

T1 T2 T3 t A t B t C

1

T

t =200 t T2=150 t T3=175 0 0 0

Read A 150

Read C 175 Read B 200

Write B 200

Write A 200

Write C T2 rollback

Write A T3 rollback

v Như vậy:Thuật toán sắp xếp toàn phần: không quan tâm đến tính chất của thao tác dữ liệu

(Read/Write) nên chỉ có 1 nhãn thời gian duy nhất cho 1 đơn vị dữ liệu Nếu quan tâm đến tính

chất của thao tác dữ liệu thì cần 2 nhãn thời gian cho 1 đơn vị dữ liệu tương ứng với thao tác đọc

và ghi trên đơn vị dữ liệu đó

3 Thuật toán sắp xếp từng phần

- Mỗi đơn vị dữ liệu A có 2 nhãn thời gian RTS và WTS Ban đầu, RTS (A)= WTS(A) = 0

- RTS(A) chính là nhãn thời gian của giao tác có timestamp lớn nhất truy cập (read) thành

công lên A

- WTS(A) chính là nhãn thời gian của giao tác có timestamp lớn nhất truy cập (write) thành

công lên A

Trang 9

Ng Duc Thuan

Procedure Read (T i, A)

Begin

If WTS (A) <= tTi then

- Thực hiện thao tác đọc g

- RTS(A) :=Max(RTS(A),t Ti)

Else

Rollback T i và bắt đầu lại với nhãn thời gian mới

End Proc

Procedure Write (T i , g )

Begin

If (RTS(A) <= tTi) and ( WTS(A) <= tTi) then

- Thực hiện thao tác ghi g

- WTS(A) := tTi Else

Rollback T i và bắt đầu lại với nhãn thời gian mới

End Proc

Ø Ví dụ:

T1 (t T1=100) T2 (t T2=100) t A t B

Read A t A = 100

Read A t A = 120

A = A+1

A = A+1

Write A t A = 120 Write A T1 rollback

v Nhận xét: Trong thuật toán sắp xếp từng phần, số lượng giao tác bị rollback ít hơn trong

thuật toán sắp xếp toàn phần (do nếu 2 giao tác chỉ thực hiện thao tác “Đọc” thì không gây

ra đụng độ)

T1 T2 Nhận xét

(1) Read A

(2) Read A (3) Read A

Thuật toán sắp xếp toàn phần: T1 bị rollback ở (3) Thuật toán sắp xếp từng phần: không có rollback

T1 T2 Nhận xét

(1) Read A

(2) Write A (3) Read A

Thuật toán sắp xếp toàn phần: T1 bị rollback ở (3) Thuật toán sắp xếp từng phần: T1 bị rollback ở (3)

Trang 10

Ng Duc Thuan

VI Điều khiển tương tranh bằng cơ chế khóa (lock):

1 Khái niệm khóa:

- Để thấy được nhu cầu phải sử dụng khóa khi các giao tác thực hiện song song, ta xét ví dụ

sau:

Xét 2 giao tác T1 và T2 Mỗi giao tác truy xuất 1 đơn vị dữ liệu A được giả sử là mang giá trị

số nguyên, rồi cộng thêm 1 vào A Hai giao tác này là các thực hiện của chương trình P dưới

đây:

P: Read (A)

A= A+1

Write (A)

Giá trị của A tồn tại trong CSDL, P đọc A vào vùng làm việc của nó, cộng 1 vào giá trị này

tại đó rồi ghi kết quả vào trong CSDL Trong hình sau, chúng ta thấy 2 giao tác đang thực hiện

theo kiểu xen kẽ, và chúng ta ghi nhận giá trị của A trong CSDL tại mỗi bước:

T 1 Read (A) A=A+1 Write (A)

T 2 Read (A) A=A+1 Write (A)

A trong vùng làm

việc T 1

5 5 6 6 6 6

A trong vùng làm

việc T 2

5 5 6 6

Chúng ta nhận ra rằng mặc dù hai giao tác đều đã cộng thêm 1 vào A, giá trị của A chỉ tăng

1 Vấn đề sẽ nghiêm trọng nếu A biểu thị số ghế đã bán của một chuyến bay

- Phương pháp thông dụng nhất để điều khiển việc truy xuất các đơn vị dữ liệu là sử dụng

khóa (lock) Bộ quản lý khóa (Lock manager) là thành phần của DBMS chịu trách nhiệm theo

dõi xem một đơn vị dữ liệu hiện có giao tác T nào đang đọc hay ghi vào các phần của A hay

không Nếu có thì bộ quản lý khóa sẽ ngăn cản không cho các giao tác khác truy xuất A trong

trường hợp truy xuất (đọc hay ghi) có thể gây ra xung đột

- Như vậy: Lock là 1 đặc quyền truy xuất (access priveleg) lên các đơn vị dữ liệu của các giao

tác mà bộ quản lý khóa có thể trao cho một giao tác hay thu hồi lại Khi 1 giao tác đã khoá

(lock) trên 1 đơn vị dữ liệu nào đó thì các giao tác khác không được phép truy cập đến đơn vị dữ

liệu đó cho đến khi nó nhả khóa (unlock)

- Khi 1 giao tác T thực hiện được việc lock đơn vị dữ liệu A, ta nói, T đang giữ lock A

- Thông thường, tại mỗi thời điểm, chỉ có 1 tập con các đơn vị dữ liệu bị khóa, vì vậy bộ quản

lý khóa có thể lưu các khoá hiện hành trong một bảng khóa (lock table) với các mẫu tin có dạng

sau: (A, L, T) (giao tác T có một khóa kiểu L trên đơn vị dữ liệu A)

2 Kỹ thuật khóa đơn giản:

a Giới thiệu:

- Một giao tác khi có yêu cầu truy xuất đến đơn vị dữ liệu thì phải phát ra yêu cầu xin khóa

(lock) trên đơn vị dữ liệu đó, nếu yêu cầu này được chấp thuận thì được quyền thao tác, và như

vậy các giao tác khác sẽ không được phép truy cập đến đơn vị dữ liệu đó cho đến khi giao tác

giữ khóa được unlock

Ø Ví dụ: Xét lại ví dụ trên được viết với các khóa như sau:

Ngày đăng: 23/10/2014, 21:03

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w