So sánh việc kiểm soát toàn vẹn ngữ nghĩa tập trung và phân tán

Một phần của tài liệu luận văn thạc sĩ xây dựng cơ sở dữ liệu phân tán phục vụ thông tin nhanh về nhân sự tại quảng bình (Trang 75)

6. Tổng quan tài liệu nghiên cứu

2.4.3.So sánh việc kiểm soát toàn vẹn ngữ nghĩa tập trung và phân tán

hơn nếu các mảnh được định nghĩa một cách cẩn thận. Vì thế đặc tả ràng buộc toàn vẹn phân tán là một vấn đề quan trọng trong quá trình thiết kế cơ sở dữ liệu phân tán.

2.4.3. So sánh việc kiểm soát toàn vẹn ngữ nghĩa tập trung và phân tán phân tán

Bảng 2.18. So sánh kiểm soát toàn vẹn ngữ nghĩa tập trung và phân tán

Kiểm soát toàn vẹn ngữ nghĩa tập trung

Kiểm soát toàn vẹn ngữ nghĩa phân tán

Không cần xét tới tính tự trị vị trí của

cơ sở dữ liệu Xem xét tính tự trị vị trí của CSDL

Cơ chế cưỡng chế thi hành việc kiểm soát là thực hiện dựa trên các ràng buộc toàn vẹn: Ràng buộc cấu trúc; Ràng buộc hành vi.

Cơ chế cưỡng chế dựa trên các phán đoán: Phán đoán riêng; Phán đoán hướng tập hợp; Phán đoán có các hàm gộp.

THÔNG TIN NHANH VỀ NHÂN SỰ TẠI QUẢNG BÌNH 3.1. MÔ HÌNH CHỨC NĂNG CỦA HỆ THỐNG

3.1.1. Biểu đồ phân cấp chức năng

Hình 3.1. Biểu đồ phân cấp chức năng

Biểu đồ phân cấp chức năng về CSDL theo mô tả trong Hình 3.1 thể hiện quá trình tác động của người dùng lên CSDL với các chức năng cơ bản như: cập nhật CSDL, tìm kiếm, thống kê, …

3.1.2. Biểu đồ luồng dữ liệu

Biểu đồ luồng dữ liệu mức ngữ cảnh

Hình 3.2. Biểu đồ luồng dữ liệu mức ngữ cảnh CSDL nhân sự Cập nhật DL Tì m kiếm Báo cáo TK C N hồ sơ CN d.mục TK th.tin 01 n.sự TK theo cơ quan TK theo ngành BC nhanh theo y.cầu BC định kỳ Quản lý nhân sự SNV, Sở/ngành Thông tin về nhân sự Kết quả tìm kiếm, báo cáo,… CSDL nhân sự

Hình 3.3. Biểu đồ luồng dữ liệu mức đỉnh Các Biểu đồ luồng dữ liệu mức dưới đỉnh:

(1) Cập nhật dữ liệu SNV, Sở/huyện nhân sự (2) Tìm kiếm (3) Báo cáo thống kê D ữ liệu Cập nhật Hồ sơ nhân sự SNV, Sở/huyện Cập nhật quá trình lương Cập nhật K.thưởng- KL L ương Cập nhật Tổ chức bộ máy N hân sự K T- KL Tổ chức bộ máy

Hình 3.4b. Biểu đồ luồng dữ liệu mức dưới đỉnh chức năng tìm kiếm Tìm kiếm 1 công chức SNV, Sở/huyện Tìm kiếm DS cơ quan Tìm kiếm nhân lực theo ngành D ữ liệu

Hình 3.4c. Biểu đồ luồng dữ liệu mức dưới đỉnh chức năng báo cáo

3.2. TỐI ƯU HÓA TRUY VẤN PHÂN TÁN

Truy vấn thu được từ giai đoạn phân rã và định vị dữ liệu có thể được thực hiện một cách đơn giản bằng việc thêm vào các thao tác truyền thông. Việc hoán vị thứ tự các phép toán trong một câu truy vấn có thể cung cấp nhiều chiến lược tương đương khác nhau. Thông thường bộ tối ưu tìm tìm một chiến lược gần tối ưu và tránh các chiến lược “tồi”. Đầu ra của bộ tối ưu là một lịch trình được tối ưu bao gồm truy vấn đại số được xác định trên các mảnh và các phép toán truyền thông hỗ trợ việc thực hiện truy vấn trên các trạm.

Để chọn lựa được một chiến lược tối ưu nói chung, bộ tối ưu phải xác định chi phí thực hiện câu truy vấn.

Mô hình chi phí gồm các hàm chi phí để dự đoán chi phí của các toán tử, số liệu thống kê, dữ liệu cơ sở và các công thức để ước lượng kích thước các kết quả trung gian.

cầu chỉ đạo, điều hành SNV, Sở/huyện Báo cáo định kỳ theo quy định D ữ liệu

hoặc theo tổng chi phí hoặc theo thời gian trả lời.

Tổng chi phí là tổng của tất cả các thành phần chi phí, bao gồm chi phí truyền thông, chi phí I/O và chi phí CPU. Để đơn giản, ta bỏ qua chi phí xử lý địa phương (I/O, CPU), coi chi phí truyền thông là trọng yếu.

Thời gian trả lời truy vấn là thời gian được tính từ khi bắt đầu xử lý đến khi hoàn thành truy vấn.

Công thức tổng quát xác định tổng chi phí là:

Total_time = TCPU* #insts + TI/O* #I/Os + TMSG* #msgs + TTR* #bytes

(3.1) Trong đó, (adsbygoogle = window.adsbygoogle || []).push({});

#insts: tổng tất cả các lệnh CPU ở các trạm

#I/OS: số lần xuất/nhập đĩa

#msgs: số thông báo

#bytes: tổng kích thước của tất cả các thông báo Thời gian

xử lý cục bộ

TCP U

Thời gian của một chỉ thị CPU

TI/O Thời gian cho một thao tác xuất nhập đĩa Thời gian

truyền

TMS G

Thời gian cố định cần để khởi hoạt và nhận một thông báo

TTR Thời gian cần để truyền một đơn vị dữ liệu từ vị trí A đến vị trí B

Thời gian truyền #bytes dữ liệu từ vị trí này đến vị trí khác được giả thiết là hàm tuyến tính theo #bytes:

CT(#bytes) = TMSG + TTR * #bytes (3.2) Khi thời gian đáp ứng truy vấn là hàm mục tiêu của thể tối ưu hóa, cần

Response_time = TCPU * seq_#insts + TI/O * seq_#I/Os + TMSG * seq_#msgs + TTR * seq_#bytes

(3.3) Trong đó, seq_#x, với x có thể là các chỉ thị (insts), các xuất nhập I/O, các thông báo (msgs) hoặc bytes, là số lượng x tối đa phải được thực hiện một cách tuần tự khi thực hiện truy vấn. Mọi xử lý và truyền dữ liệu thực hiện song song đều được bỏ qua.

3.2.2. Số liệu thống kê cơ sở dữ liệu

Yếu tố chính ảnh hưởng đến hiệu quả hoạt động của một chiến lược thực thi là kích thước các quan hệ trung gian được tạo ra. Việc ước lượng kích thước các quan hệ trung gian dựa trên các thông tin thống kê về các quan hệ cơ sở và các công thức để dự đoán lực lượng của các kết quả. Đối với một quan hệ R được định nghĩa trên tập thuộc tính A= {A1, A2, …, An} và được phân mảnh là R1, R2, …, Rn, dữ liệu được thống kê điển hình như sau:

(1). Đối với mỗi thuộc tính Ai, chiều dài được ký hiệu là

length(Ai), và đối với mỗi thuộc tính Aicủa mỗi mảnh Rj, số lượng các giá trị phân biệt của Ai, là lực lượng khi chiếu mảnh Rj trên Ai, được ký hiệu là card(πAi(Rj)).

(2). Ứng với miền của mỗi thuộc tính Ai trên một tập giá trị sắp thứ tự được, giá trị lớn nhất và nhỏ nhất được ký hiệu là max(Ai),

min(Ai).

(3). Ứng với miền của mỗi thuộc tính Ai, lực lượng của miền được ký hiệu là card(dom[Ai]). Giá trị này cho biết số lượng các giá trị duy nhất trong dom[Ai].

SFJ(R, S) = card(R pS) (3.4)

card(R) * card(S)

Hệ số SFJ nhỏ thì phép nối có tính chọn tốt, ngược lại có tính chọn tồi. Các thống kê này có lợi để đánh giá kích thước của quan hệ trung gian. Kích thước một quan hệ trung gian R được xác định bởi :

size(R) = card(R)*length(R) (3.5) Trong đó:

+ length(R) là độ dài (số byte) của mỗi bộ trong R, được tính theo độ dài các thuộc tính của nó,

+ card(R) là số các bộ của R được tính theo công thức ở phần tiếp theo.

3.2.3. Lực lượng của các kết quả trung gian (adsbygoogle = window.adsbygoogle || []).push({});

Các toán hạng quan hệ được ký hiệu bởi R S. Hệ số chọn của một phép toán SFOP, (OP biểu thị phép toán) là tỷ lệ giữa các bộ của một toán hạng quan hệ tham gia vào kết quả của phép toán.

Phép chọn

card(σF(R)) = SFS(F ) card(R) (3.6) Trong đó SFS(F) phụ thuộc vào công thức chọn và có thể tính như sau, với p(Ai), p(Aj) là các tân từ tương ứng với các thuộc tính Ai, Aj.

SFS (A = value) = 1(3.7)

Card(ϖA(R))

SFS (A > value) = max(A) -value (3.8) max(A) - min(A)

SFS (A < value) = value -min(A) (3.9) max(A) - min(A)

SFS( p(Ai) p(Aj )) = SFS( p(Ai)) SFS(p(Aj)) (3.10)

Phép chiếu

Nếu phép chiếu của R trên một thuộc tính đơn A thì lực lượng được tính đơn giản là số các bộ khi phép chiếu được thực hiện.

Nếu một trong các thuộc tính chiếu là khoá của R, thì :

card(πA(R)) = card(R) card(RπS) = card(R) * card(S) (3.13)

Phép nối

Nếu R ´ABS với AϖR, BS, trong đó A là khoá của R, B là khoá ngoài của S, thì lực lượng của kết quả xấp xỉ là: card(RÎ AB S) = card(R)

Với các phép nối khác, lực lượng của kết quả là :

SFSJ(R ω A S) Card(<A(S)) (3.15)

card(dom[A])

Công thức này chỉ phụ thuộc vào thuộc tính A của S, nên thường được gọi là hệ số chọn thuộc tính A của S, ký hiệu SFSJ(S.A) và là hệ số chọn của

S.A trên bất cứ thuộc tính nối khác. Vì thế, lực lượng của phép nối được tính như sau :

card(R A S) = SFSJ (S.A) card(R) (3.16)

Phép hợp

Cận trên của card(R<S) bằng card(R) + card(S), Cận dưới của card(RS) bằng max{card(R),card(S)}

Phép trừ

Cận trên của card(R-S)card(R), cận dưới là 0.

3.3. THUẬT TOÁN TỐI ƯU HÓA TRUY VẤN PHÂN TÁN SYSTEM R*

Thuật toán System R* mở rộng kỹ thuật phát triển của thuật toán tối ưu hóa truy vấn tập trung System R, sử dụng phương pháp tiếp cận biên dịch, thực hiện tìm kiếm vét cạn tất cả các chiến lược có thể có nhằm chọn ra chiến lược có chi phí nhỏ nhất. Biên dịch truy vấn là một tác vụ phân tán trong R*, được điều phối bởi một vị trí chính là nơi câu truy vấn được khởi động. Thể tối ưu hóa của vị trí chính đưa ra tất cả mọi quyết định có liên quan đến các vị trí, như chọn các vị trí thực hiện, các mảnh và phương pháp truyền dữ liệu. Các vị trí trợ lý, là vị trí có quan hệ cần cho câu truy vấn, sẽ chịu trách nhiệm về các quyết định cục bộ còn lại và tạo ra các hoạch định truy xuất cục bộ cho câu truy vấn.

xuất cho mỗi mảnh. Các quyết định này dựa trên số liệu thống kê và các công thức được dùng để đánh giá kích thước các kết quả trung gian và thông tin về đường truy xuất. Ngoài ra, thể tối ưu hóa còn phải chọn các vị trí của kết quả nối và phương pháp truyền dữ liệu giữa các vị trí. Trong System R* có hai phương pháp được hỗ trợ khi cần truyền qua lại giữa các vị trí.

1. Chuyển toàn bộ. Toàn bộ quan hệ được chuyển đến vị trí nối và được lưu vào một quan hệ tạm trước khi được nối. Nếu thuật toán nối thuộc loại nối trộn, quan hệ này không cần phải lưu và vị trí nối có thể xử lý các bộ đi vào lần lượt theo một dòng khi chúng đến đó.

2. Gửi khi cần. Quan hệ ngoại cảnh được quét tuần tự, đối với mỗi bộ, giá trị nối được gửi đến vị trí của quan hệ nội sự, ở đó nó chọn các bộ nội sự khớp được với giá trị đó rồi gửi các bộ được chọn đến vị trí của quan hệ ngoại cảnh. Phương pháp này tương đương với nối nửa của quan hệ nội sự với mỗi bộ ngoại cảnh.

Cho trước nối của một quan hệ ngoại cảnh R với một quan hệ nội sự S (adsbygoogle = window.adsbygoogle || []).push({});

trên thuộc tính A, có bốn chiến lược nối.

LT: thời gian xử lý cục bộ

CT: thời gian truyền

s: số lượng trung bình các bộ của S khớp với một bộ của R

giả sử bỏ qua chi phí tạo ra kết quả

s = card(S

ÈωAR)

(3.17)

card(R)

Chiến lược 1. Chuyển toàn bộ quan hệ ngoại cảnh đến vị trí của quan hệ nội sự. Trong trường hợp này, các bộ của quan hệ ngoại cảnh có thể được nối với S khi chúng đến đó.

+ LT(truy xuất s bộ từ S) * card(R) (3.18)

Chiến lược 2. Chuyển toàn bộ quan hệ nội sự đến vị trí của quan hệ ngoại cảnh. Trong trường hợp này, các bộ nội sự không thể được nối khi chúng đến và chúng cần được lưu trong một quan hệ tạm thời T.

Total cost = LT(truy xuất card(S) bộ từ S) + CT(size(S))

+ LT(lưu card(S) bộ trong T) + LT(truy xuất card(R) bộ từ R)

+ LT(truy xuất s bộ từ T) * card(R) (3.19)

Chiến lược 3. Gửi các bộ của quan hệ nội sự khi cần cho mỗi bộ của quan hệ ngoại cảnh. Trường hợp này, đối với bộ của R, giá trị thuộc tính nối được gửi đến vị trí của R để được nối khi chúng đến.

Total cost = LT(truy xuất card(R) bộ từ R) + CT(length(A)) * card(R)

+ LT(lưu card(S) bộ trong T) + LT(truy xuất s bộ từ S) * card(R)

+ CT(s * length(S)) * card(R) (3.20)

Chiến lược 4. Di chuyển cả hai quan hệ đến một vị trí thứ ba và tính nối ở đó. Trường hợp này, quan hệ nội sự được di chuyển trước đến vị trí thứ ba và lưu trong một quan hệ tạm T. Sau đó, quan hệ ngoại cảnh được chuyển đến đó và các bộ của nó được nối với T khi chúng đến.

Total cost = LT(truy xuất card(S) bộ từ S) + CT(size(S))

+ LT(lưu card(S) bộ trong T) + LT(truy xuất card(R) bộ từ R)

3.4. ĐIỀU KHIỂN ĐỒNG THỜI PHÂN TÁN

Điều khiển đồng thời giải quyết các tính chất biệt lập và gắn bó của giao dịch khi tiến hành cập nhật thông tin từ cụm Server xã lên cụm Server huyện và cụm Server sở, ban ngành tương đương. Cơ chế điều khiển đồng thời phân tán của một hệ quản trị cơ sở dữ liệu phân tán bảo đảm tính gắn bó của một cơ sở dữ liệu sẽ được duy trì trong môi trường phân tán. Mức độ đồng thời là tham số quan trọng nhất trong các hệ phân tán. Do vậy, cơ chế điều khiển đồng thời cố tìm ra một phương án thích hợp, vừa duy trì được tính gắn bó của cơ sở dữ liệu, vừa duy trì được mức độ đồng thời cao.

nhóm lớn: các phương pháp điều khiển đồng thời lạc quan và các phương pháp điều khiển đồng thời bi quan. Các thuật toán bi quan đồng bộ hóa việc thực hiện đồng thời của các giao dịch trước khi thực hiện chúng, trong khi đó các thuật toán lạc quan để việc đồng bộ hóa các giao dịch cho đến khi chúng kết thúc.

3.4.2. Điều khiển đồng thời bằng khóa chốt

Ý tưởng chính của việc điều khiển đồng thời bằng khóa chốt là bảo đảm dữ liệu dùng chung cho các thao tác tương tranh chỉ được truy xuất mỗi lần một giao dịch. Điều này được thực hiện bằng cách liên kết một khóa chốt (lock) với mỗi đơn vị khóa. Khóa này được giao dịch đặt ra trước khi nó truy xuất và được điều chỉnh lại vào lúc nó hết sử dụng. Một đơn vị khóa không thể truy xuất được nếu đã bị khóa bởi một giao dịch khác. Vì vậy yêu cầu khóa của một giao dịch chỉ được trao nếu khóa đi kèm hiện không bị một giao dịch khác giữ.

Việc đồng bộ hóa các thao tác tương tranh của các giao dịch tương tranh có hai loại khóa chốt được kèm với mỗi đơn vị khóa: khóa đọc (rl) và khóa ghi (wl). Một giao dịch Ti đang muốn đọc một mục dữ liệu được chứa trong đơn vị khóa x sẽ nhận được một khóa đọc trên x[rli(x)] và cũng tương tự với các thao tác ghi. Hai thể thức khóa là tương thích nếu hai giao dịch truy xuất đến cùng một mục dữ liệu có thể nhận được khóa trên mục dữ liệu đó cùng một lúc. Các khóa đọc là tương thích với nhau, còn các khóa đọc-ghi hoặc ghi-ghi thì không. Vì vậy hai giao dịch vẫn có thể đồng thời đọc cùng một mục.

rlj(x) wlj(x) tương thích không tương thích không tương thích không tương thích

Trong các hệ thống dùng khóa chốt, bộ xếp lịch là bộ quản lý khóa. Bộ quản lý giao dịch sẽ chuyển cho bộ quản lý khóa các thao tác CSDL và các thông tin kèm theo. Sau đó bộ quản lý khóa sẽ kiểm tra xem đơn vị khóa có chứa mục dữ liệu đó đã bị khóa hay chưa. Nếu đã khóa, và thể thức khóa đó không tương thích với thể thức của giao dịch đang yêu cầu, thao tác sẽ bị hoãn. Ngược lại, khóa sẽ được đặt với thể thức mong muốn và thao tác này được chuyển cho bộ xử lý dữ liệu để truy xuất CSDL thực sự. Sau đó bộ quản lý giao dịch được thông tin về các kết quả thực hiện. Việc kết thúc giao dịch sẽ giải phóng các khóa của nó và làm khởi hoạt một giao dịch khác đang đợi truy xuất mục dữ liệu này. (adsbygoogle = window.adsbygoogle || []).push({});

Quy tắc khóa hai pha: một giao dịch không được giải phóng khóa cho đến khi nó đảm bảo không yêu cầu thêm khóa nữa. Phương pháp khóa chốt hai pha (2PL) thực hiện các giao dịch qua 2 pha: pha tăng trưởng, nhận các khóa và truy xuất các mục dữ liệu; pha thu hồi, giải phóng các khóa. Điểm khóa là thời điểm giao dịch đã nhận được tất cả các khóa nhưng chưa bắt đầu giải phóng bất kỳ khóa nào.

dữ liệu, vì thế khóa được giải phóng. Nếu giao dịch bị hủy bỏ sau khi giải phóng một khóa, có thể làm hủy bỏ dây chuyền cả các giao dịch đã truy xuất các mục đã mở khóa.

Một phần của tài liệu luận văn thạc sĩ xây dựng cơ sở dữ liệu phân tán phục vụ thông tin nhanh về nhân sự tại quảng bình (Trang 75)