Thuật toỏn 2PL phõn tỏn

Một phần của tài liệu Giáo trình cơ sở dữ liệu phân tán TS phạm thế quế, TS hoàng minh (Trang 57)

Thuật toỏn 2PL phõn tỏn cài đặt bộ quản lý khúa trờn mỗi vị trớ. Nếu cơ sở dữ liệu khụng nhõn bản, thuật toỏn 2PL phõn tỏn sẽ suy biến từ thuật toỏn 2PL bản chớnh. Nếu cơ sở dữ liệu cú nhõn bản, giao dịch sẽ cài đặt giao thức điều khiển bản sao ROWA. Trao đổi thụng tin giữa cỏc vị trớ để thực hiện một giao dịch xảy ra giữa bộ quản lý giao dịch tại vị trớ khởi đầu giao dịch - TM điều phối với bộ quản lý khoỏ và cỏc bộ xử lý dữ liệu tại cỏc vị trớ cú tham gia.

1. TM điều phối - vị trớ khởi đầu của giao dịch yờu cầu cỏc vị trớ DM cú tham gia xử lý giao dịch cung cấp khúa và tham gia xử lý dữ liệu.

2. Sau khi cỏc DM đó hoàn tất cỏc thao tỏc giao dịch, TM điều phối yờu cầu giải phúng khúa.

Thuật toỏn quản lý giao dịch 2PL phõn tỏn khỏc biệt với thuật toỏn quản lý giao dịch tập trung 2PL-TM trong hai vấn đề:

1. Trong C2PL-TM: cỏc thụng bỏo gửi đến bộ quản lý khúa của vị trớ trung tõm. Trong C2PL-TM: cỏc thụng bỏo được gửi đến cỏc bộ quản lý khúa của tất cả cỏc vị trớ tham gia trong D2PL- TM.

2. TM điều phối khụng chuyển cỏc thao tỏc đến cỏc bộ xử lý dữ liệu, cỏc thao tỏc này do cỏc bộ quản lý khúa tham gia chuyển đi. Nghĩa là TM điều phối khụng chờ thụng bỏo “yờu cầu khúa đó được trao”.

3. Cỏc bộ xử lý dữ liệu khụng thụng bỏo “kết thỳc thao tỏc” đến TM điều phối mà gửi đến cỏc bộ quản lý khúa yờu cầu giải phúng khúa và thụng bỏo cho TM điều phối.

4.7 CÁC THUẬT TOÁN ĐIỀU KHIỂN ĐỒNG THỜI BẰNG NHÃN THỜI GIAN

4.7.1 Đặt vấn đề

Khỏc với cỏc thuật toỏn dựa vào khúa, cỏc thuật toỏn điều khiển đồng thời bằng nhón thời gian khụng duy trỡ tớnh khả tuần tự bằng phương phỏp độc quyền truy cập, mà chọn một thứ tự và thực hiện cỏc giao dịch theo thứ tựđú, bằng cỏch bộ quản lý giao dịch gỏn cho mỗi giao dịch Ti một nhón thời gian (Timestamp) duy nhất ts(Ti) vào lỳc bắt đầu thực hiện giao dịch.

Mỗi giao dịch được gỏn cho duy nhất một nhón thời gian, nhằm phõn biệt giữa cỏc giao dịch với nhau và sắp xếp cỏc giao dịch theo thứ tự. Hai nhón thời gian do một bộ quản lý giao dịch tạo ra phải tăng đơn điệu. Vỡ vậy, nhón thời gian là những giỏ trịđược lấy từ một miền cú thứ tự toàn phần.

Cú nhiều cỏch gỏn nhón thời gian. Một phương phỏp thường được sử dụng nhất là cho phộp mỗi vị trớ tự gỏn nhón thời gian theo sốđếm cục bộ. Để duy trỡ tớnh thống nhất, gỏn thờm định danh mỗi vị trớ vào giỏ trịđếm. Vỡ vậy, nhón thời gian là một bộ hai giỏ trị cú dạng <giỏ trịđếm cục bộ, định danh vị trớ>. Cỏc hệ thống cú thể truy cập đồng hồ hệ thống riờng của nú thỡ cú thể sử dụng giỏ trị đồng hồ hệ thống thay cho giỏ trịđếm. Việc xếp thứ tự thực hiện cỏc thao tỏc của cỏc giao dịch theo nhón thời gian rất đơn giản. Về hỡnh thức, qui tắc xếp thứ tự nhón thời gian (Timestamp Ordering - TO) cú thể được mụ tả như sau:

Qui tắc TO: Cho hai thao tỏc tương tranh Oij và Okl tương ứng cỏc giao dịch Ti và Tk. Oij được thực hiện trước Okl hay gọi Ti là giao dịch già hơn và Tk được gọi là giao dịch trẻ hơn, khi và chỉ khi ts(Ti) < ts(Tk).

Nếu thao tỏc mới thuộc về một giao dịch trẻ hơn so với cỏc thao tỏc tương tranh của cỏc giao dịch đó được xếp lịch, thỡ thao tỏc này được chấp nhận. Ngược lại nú bị hủy bỏ, làm cho toàn bộ giao dịch phải khởi động lại với một nhón thời gian mới.

Một bộ lập lịch theo nhón thời gian hoạt động theo quy tắc TO sẽ bảo đảm tạo ra cỏc lịch biểu khả tuần tự. Việc so sỏnh nhón thời gian của cỏc giao dịch chỉđược thực hiện nếu bộ lập lịch đó nhận được tất cả cỏc thao tỏc cần lập lịch. Để cú thể kiểm tra một thao tỏc đó đi ra khỏi dóy hay khụng, mỗi mục dữ liệu x được gỏn hai nhón thời gian: nhón thời gian đọc [rts(x)], là nhón thời gian lớn nhất trong số nhón thời gian của cỏc giao dịch đó đọc x, và nhón thời gian ghi [wts(x)], là nhón thời gian lớn nhất trong số nhón thời gian của cỏc giao dịch đó ghi x. Như vậy việc so sỏnh nhón thời gian của một thao tỏc với nhón thời gian đọc và nhón thời gian ghi của mục dữ liệu mà nú đang cần truy cập cú thể kiểm tra một giao dịch với nhón thời gian lớn hơn đó truy cập đến mục dữ liệu hay chưa.

Bộ quản lý giao dịch cú nhiệm vụ gỏn nhón thời gian cho giao dịch mới và gỏn nhón thời gian này cho thao tỏc cơ sở dữ liệu mà nú

chuyển đến bộ lập lịch. Theo dừi cỏc nhón thời gian đọc và nhón thời gian ghi và kiểm tra tớnh khả tuần tự.

4.7.2 Thuật toỏn bộ quản lý giao dịch TO cơ bản

Thuật toỏn bộ quản lý giao dịch TO cơ bản (Basic TO Transaction Manager - BTO-TM) điều khiển TM điều phối gỏn nhón thời gian cho mỗi giao dịch, xỏc định vị trớ lưu trữ dữ liệu và gửi cỏc thao tỏc cú liờn quan đến những vị trớ này.

Thuật toỏn TO cơ bản sẽ khụng gõy bế tắc, vỡ cỏc giao dịch khụng phải đợi trong khi chỳng đang giữ cỏc quyền truy cập trờn cỏc mục dữ liệu. Một giao dịch cú một thao tỏc bị bộ lập lịch từ chối phải được khởi động lại bởi bộ quản lý giao dịch với một nhón thời gian mới. Điều này đảm bảo cho giao dịch được thực hiện lần thử sau. Tuy nhiờn cỏi giỏ phải trả cho việc khụng bị khúa gài là phải khởi động giao dịch lại nhiều lần. Khi một giao dịch đó được chấp nhận và được chuyển đến bộ xử lý dữ liệu, bộ lập lịch sẽ thực hiện việc trỡ hoón bằng cỏch chỉ gửi thao tỏc được chấp nhận cho đến khi thao tỏc đầu được xử lý và phản hồi. Điều này đảm bảo bộ xử lý dữ liệu thực hiện cỏc thao tỏc theo đỳng thứ tự mà bộ lập lịch gửi đến, nếu khụng, nhón thời gian đọc và nhón thời gian ghi cho mục dữ liệu được truy cập sẽ khụng chớnh xỏc.

Thuật toỏn BTO-TM

Declare-var: T: TransactionId, Op: Operation, x: DataItem, msg: Message, O: Dbop, pm: Dpmsg,

res: Data Val, S: SiteSet. begin

repeat

WAIT(msg) case of msg

Dbop: begin Op ← O.opn x ← O.data T ← O.tid case of Op Begin_Transaction: begin S ← ∅ gỏn một nhón thời gian cho T [ts(T)] end Read: begin S ← S ∪ {trạm lưu x và cú chi phớ truy cập đến x là nhỏ nhất} gửi O và ts(T) cho bộ lập lịch tại S end Write: begin S ← S ∪ {Si ⏐x được lưu tại Si} gửi O và ts(T) cho bộ bộ lập lịch tại S end Abort or Commit: begin gửi O đến cỏc bộ lập lịch trong S end end-case

Scmsg: {thao tỏc đó bị bộ lập lịch hủy bỏ} begin msg ← “Hủy bỏ T” gửi msg đến cỏc bộ lập lịch trong S khởi động lại T end Dpmsg: begin Op ← pm.opn res ← pm.result T ← pm.tid case of Op Read: begin

trả res về cho ứng dụng người dựng (nghĩa là giao dịch)

end Write: begin

thụng tin cho ứng dụng biết về việc hoàn tất thao tỏc ghi

end Commit: begin

thụng tin cho ứng dụng biết về việc hoàn thành giao dịch

Abort: begin

thụng tin cho ứng dụng biết về việc hủy bỏ giao dịch T end end-case end end-case until forever end. {BOT-TM}

Thuật toỏn bộ xếp lịch BTO-SC

Declare-var: msg: Message, dop: Dbop, Op: Operation, x: DataItem, T: TransactionId, SOP: OpSet, begin repeat WAIT(msg) case of msg Dbop: begin Op ← dop.opn x ← dop.data T ← dop.tid lưu cỏc rts(x) và wts(x) khởi đầu case of Op Read: begin if ts(T) > rts(x) then

begin gửi dop đến bộ xử lý dữ liệu rts(x) ← ts(T) end else begin msg ← “Bỏ T đi” gửi msg cho TM điều phối end end-if

end {của trường hợp Read} Write: begin if ts(T) > rts(x) and ts(T) > wts(x) then begin gửi dop đến bộ xử lý dữ liệu rts(x) ← ts(T) wts(x) ← ts(T) end else begin msg ← “Bỏ T đi” gửi msg cho TM điều phối end end-if

end {của trường hợp Write} Commit:

begin

gửi dop đến bộ xử lý dữ liệu end {của trường hợp Commit} Abort:

begin

for tất cả x đều đó được T truy cập do

đặt lại rst(x) và wts(x) về cỏc giỏ trị khởi đầu của chỳng end-for gửi dop đến bộ xử lý dữ liệu end end-case end end-case until forever end. {BTO-SC}

4.7.3 Thuật toỏn TO bảo toàn

Thuật toỏn TO cơ bản khụng yờu cầu cỏc giao dịch phải đợi mà thay vào đú sẽ khởi động lại chỳng. Đõy là một ưu điểm của thuật toỏn, trỏnh được bế tắc nhưng phải khởi động lại giao dịch nhiều lần, làm ảnh hưởng đến hiệu năng của thuật toỏn. Thuật toỏn TO bảo toàn cố gắng hạ thấp chi phớ hệ thống bằng cỏch làm giảm số lần khởi động lại một giao dịch.

Biết rằng bộ lập lịch TO sẽ khởi động lại giao dịch nếu một giao dịch tương tranh trẻ hơn đó được lập lịch hoặc đó được thực hiện. Giao dịch được khởi động lại sẽ tăng lờn, nếu như một vị trớ khụng hoạt động tương đối so với cỏc vị trớ khỏc và khụng đưa ra cỏc giao dịch trong một thời hạn đó định. Sốđếm của giao dịch là một giỏ trị

nhỏ hơn rất nhiều so với cỏc sốđếm tại những vị trớ khỏc. Nếu TM tại vị trớ nhận giao dịch, cỏc thao tỏc được gửi đến cỏc bộ lập lịch nằm tại những vị trớ khỏc chắc chắn bị từ chối, buộc giao dịch phải khởi động lại. Hơn nữa, chớnh giao dịch đú sẽ tỏi khởi động nhiều lần cho đến khi giỏ trị của sốđếm tại vị trớ ban đầu đạt được ngang mức với cỏc số đếm của những vị trớ khỏc.

Cần phải làm cho cỏc số đếm tại cỏc vị trớ luụn đồng bộ. Việc đồng bộ húa toàn bộ, đũi hỏi phải trao đổi cỏc thụng bỏo khụng cần thiết khi cú một số đếm thay đổi. Vỡ vậy chi phớ trao đổi cao. Khắc phục nhược điểm này bằng cỏch cỏc bộ quản lý giao dịch từ xa cú thể gửi cỏc thao tỏc đến cỏc bộ quản lý giao dịch trờn những vị trớ khỏc, khụng phải gửi đến bộ lập lịch. Cỏc bộ quản lý giao dịch bờn nhận sẽ so sỏnh giỏ trị số đếm của nú với giỏ trị của thao tỏc đến. Nếu giỏ trị sốđếm của cỏc bộ quản lý nhỏ hơn giỏ trịđến, tựđộng tăng thờm một. Điều này đảm bảo khụng cú số đếm nào trong hệ thống chạy quỏ nhanh hoặc bị tụt lại phớa sau quỏ nhiều. Sử dụng đồng hồ hệ thống thay cho sốđếm thỡ việc đồng bộ húa xấp xỉ này cú thể cú được một cỏch tựđộng, với điều kiện cỏc đồng hồ cú tốc độ chạy gần như nhau.

Thuật toỏn TO cơ bản cố gắng cho thực hiện thao tỏc ngay sau khi nú được chấp nhận. Ngược lại, thuật toỏn bảo toàn sẽ hoón cỏc thao tỏc lại cho đến khi nú bảo đảm rằng khụng cú thao tỏc nào cú nhón thời gian nhỏ hơn đến bộ lập lịch đú. Nếu bảo đảm được điều kiện này, bộ lập lịch sẽ khụng bao giờ từ chối thao tỏc. Tuy nhiờn, việc trỡ hoón đú cũng gõy nờn khả năng bế tắc.

Kỹ thuật cơ bản trong thuật toỏn TO bảo toàn dựa trờn ý tưởng sau đõy: Cỏc thao tỏc của mỗi giao dịch được đệm cho đến khi cú được một thứ tự thực hiện để khụng xảy ra cỏc loại trừ và chỳng được thực hiện theo thứ tựđú.

Giả sử mỗi bộ lập lịch duy trỡ một hàng đợi cho mỗi bộ quản lý giao dịch trong hệ thống. Bộ lập lịch tại vị trớ i lưu tất cả cỏc thao tỏc mà nú nhận được từ bộ quản lý giao dịch tại vị trớ j vào hàng đợi Qij.

Bộ lập lịch i cú một hàng đợi như thế cho mỗi j. Khi nhận được một thao tỏc từ một bộ quản lý giao dịch, thao tỏc đú được đặt vào hàng đợi thớch hợp của nú theo thứ tự nhón thời gian tăng dần. Bộ lập lịch tại mỗi vị trớ thực hiện cỏc thao tỏc trong hàng đợi theo thứ tự nhón thời gian tăng.

Cỏch tiếp cận này làm giảm đi số lần khởi động lại giao dịch, nhưng khụng đảm bảo loại bỏ hoàn toàn. Xột tỡnh huống tại vị trớ i, hàng đợi cho vị trớ j (Qij) đang trống. Bộ lập lịch tại i sẽ chọn một thao tỏc, giả sử là R(x) cú nhón thời gian nhỏ nhất và chuyển nú cho bộ xử lý dữ liệu. Tuy nhiờn, vị trớ j cú thểđó gửi cho i một thao tỏc, giả sử là W(x) cú nhón thời gian nhỏ hơn nhưng hiện cũn đang di chuyển trong mạng. Khi đến được i, nú bị từ chối vỡ vi phạm quy tắc TO: nú muốn truy cập một mục dữ liệu hiện đang được truy cập ở chế độ khụng tương thớch bởi một thao tỏc khỏc cú nhón thời gian lớn hơn.

4.7.4 Thuật toỏn TO đa phiờn bản

Thuật toỏn TO đa phiờn bản nhằm loại bỏ hoàn toàn khụng khởi động lại giao dịch trong mụi trường cơ sở dữ liệu tập trung. Trong thuật toỏn TO đa phiờn bản, cỏc phộp cập nhật khụng sửa đổi cơ sở dữ liệu, mỗi thao tỏc ghi tạo ra một phiờn bản mới của mục dữ liệu. Mỗi phiờn bản được đỏnh dấu bằng nhón thời gian của giao dịch tạo ra nú. Vỡ thế, thuật toỏn đa phiờn bản phải mất nhiều khụng gian nhớ để lưu về thời gian. Khi xử lý giao dịch ở một trạng thỏi của cơ sở dữ liệu được thực hiện tuần tự theo thứ tự nhón thời gian.

Sự tồn tại của cỏc phiờn bản hoàn toàn trong suốt đối với người sử dụng. Người sử dụng đưa ra yờu cầu bằng cỏch tham chiếu mục dữ liệu mà khụng chỉ ra phiờn bản cụ thể nào. Bộ quản lý giao dịch sẽ gỏn một nhón thời gian cho mỗi giao dịch, nú cũng được dựng để theo dừi nhón thời gian của mỗi phiờn bản. Cỏc thao tỏc được bộ lập lịch xử lý như sau:

1. Thao tỏc Ri(x) được dịch thành một thao tỏc đọc trờn một phiờn bản của x, thực hiện bằng cỏch tỡm một phiờn bản của x, giả sử là xv sao cho ts(xv) là nhón thời gian lớn nhất trong số cỏc nhón thời gian nhỏ hơn ts(Ti). Ri(xv) được gửi đến bộ xử lý dữ liệu.

2. Thao tỏc Wi(x) được dịch thành Wi(xv) để ts(xv) = ts(Ti) và được gửi đến bộ xử lý dữ liệu khi và chỉ khi khụng cú giao dịch nào khỏc cú nhón thời gian lớn hơn ts(Ti) đó đọc giỏ trị của một phiờn bản của x, giả sử là xr với ts(xr) > ts(xs). Núi cỏch khỏc nếu bộ lập lịch đó xử lý một thao tỏc Rj(xr) sao cho ts(Ti) < ts(xr) < ts(Tj) thỡ thao tỏc Wi(x) bị loại bỏ.

Cỏc quy tắc trờn sẽ bảo đảm cho một bộ lập lịch xử lý cỏc yờu cầu đọc và ghi của cỏc giao dịch tạo ra được cỏc lịch biểu khả tuần tự. Cỏc phiờn bản của cơ sở dữ liệu cú thể được xúa bỏ để tiết kiệm khụng gian bộ nhớ, nếu hệ quản trị cơ sở dữ liệu khụng cũn nhận một giao dịch nào cú yờu cầu truy cập đến cỏc phiờn bản đó xúa.

4.8 CÁC THUẬT TOÁN ĐIỀU KHIỂN ĐỒNG THỜI LẠC QUAN Cỏc thuật toỏn điều khiển đồng thời bằng khúa chốt và bằng nhón thời gian giả sử rằng tương tranh giữa cỏc giao dịch thường xảy ra và khụng cho phộp một giao dịch truy cập một mục dữ liệu nếu một giao dịch tương tranh đang truy cập mục dữ liệu đú. Vỡ vậy, việc thực hiện một thao tỏc của giao dịch phải tuõn thủ cỏc quỏ trỡnh theo thứ tự: kiểm tra, đọc, tớnh toỏn và ghi. Thuật toỏn khụng xột đến cỏc giao dịch cập nhật vỡ chỳng gõy ra cỏc vấn đề về nhất quỏn. Cỏc hành động chỉ đọc khụng cú tớnh toỏn và ghi. Giả thiết ghi cú cả hành động Commit. Ngược lại, cỏc giao dịch lạc quan (Optimistic) làm chậm quỏ trỡnh

Một phần của tài liệu Giáo trình cơ sở dữ liệu phân tán TS phạm thế quế, TS hoàng minh (Trang 57)

Tải bản đầy đủ (PDF)

(162 trang)