6. Tổng quan tài liệu nghiên cứu
2.3. XỬ LÝ TRUY VẤN TRONG CƠ SỞ DỮ LIỆU PHÂN TÁN
2.3.1. Khái niệm truy vấn
Truy vấn là một biểu thức được biểu diễn bằng một ngôn ngữ thích hợp và dùng để xác định một phần dữ liệu được chứa trong cơ sở dữ liệu.
Một truy vấn có thể được dùng để xác định ngữ nghĩa của một ứng dụng, hoặc có thể được dùng để xác định công việc cần được thực hiện bởi một ứng dụng nhằm truy xuất cơ sở dữ liệu.
Truy vấn phân tán là một chuỗi các thao tác dữ liệu được thực hiện trên các mảnh quan hệ phân rã.
2.3.2. Các tầng của quá trình xử lý truy vấn phân tán
Câu truy vấn phải được phân rã thành một chuỗi các phép toán quan hệ được gọi là truy vấn đại số. Dữ liệu cần truy vấn phải được cục bộ hoá để các
bao gồm các thao tác trao đổi thông tin giữa các vị trí và được tối ưu hoá. Đầu vào là một câu truy vấn trên dữ liệu phân tán được xác định dưới
dạng các phép tính quan hệ. Câu truy vấn phân tán được đặt trên các quan hệ toàn cục. Bốn tầng lược đồ ánh xạ truy vấn phân tán thành một chuỗi các thao tác cục bộ được tối ưu hoá, hoạt động trên cơ sở dữ liệu cục bộ. Chức năng các tầng bao gồm: phân rã truy vấn, cục bộ hoá dữ liệu, tối ưu hoá truy vấn toàn cục và tối ưu hoá truy vấn cục bộ.
Chức năng của ba tầng đầu tiên được thực hiện tại một vị trí tập trung và sử dụng các thông tin toàn cục còn chức năng của tầng thứ tư được thực hiện ở vị trí cục bộ.
đại số quan hệ tuơng đương và hiệu quả. Phân rã truy vấn chưa đề cập đến sự phân tán dữ liệu, thực hiện qua 4 bước:
- Chuẩn hóa câu truy vấn
Biến đổi một câu truy vấn sang một dạng chuẩn để xử lý tiếp:
- Dạng chuẩn giao : ( P11 v P12 v…v P1n ) ^…^ (Pm1 v Pm2 v…v Pmn )
- Dạng chuẩn hợp : ( P11 ^ P12 ^…^ P1n) v … v (Pm1 ^ Pm2 ^…^ Pmn )
Trong đó, Pij là một biến lý luận (có giá trị là true hoặc false) hoặc là một vị từ đơn giản có dạng: a R b với a, b là các biểu thức số học và R là một trong những phép toán so sánh (=; < > ; < ; <= ; > ; >= ). Sử dụng các phép biến đổi tương đương của các phép toán lý luận.
- Phân tích
Cho phép loại bỏ câu truy vấn đã được chuẩn hoá nhưng sai kiểu hoặc không đúng ngữ nghĩa.
- Sai về kiểu dữ liệu: các thuộc tính của nó hoặc các tên quan hệ không được định nghĩa trong lược đồ toàn cục, hoặc nếu các phép toán được áp dụng cho các thuộc tính bị sai về kiểu dữ liệu.
- Sai về ngữ nghĩa: có chứa các thành phần không tham gia vào quá trình tạo ra kết quả của truy vấn.
- Loại bỏ dư thừa
C
ó thể loại bỏ các vị từ dư thừa và các thao tác dư thừa bằng cách giản ước các lượng từ hoá bằng các quy tắc luỹ đẳng.
- Viết lại câu truy vấn
b. Cục bộ hóa dữ liệu (tối ưu hóa truy vấn trên lược đồ phân mảnh)
Đầu vào là một truy vấn đại số trên quan hệ phân tán. Chức năng chủ yếu của tầng này là cục bộ hoá dữ liệu truy vấn sử dụng các thông tin dữ liệu phân tán. Nó xác định mảnh quan hệ nào sẽ được sử dụng trong truy vấn và chuyển đổi câu truy vấn phân tán thành một truy vấn trên mảnh cụ thể.
Để tạo một truy vấn trên mảnh được thực hiện bởi hai bước:
-Truy vấn phân tán được ánh xạ sang một truy vấn trên mảnh bằng việc thay thế mỗi quan hệ phân tán bằng chương trình xây dựng lại có chứa các phép toán đại số quan hệ thao tác trên mảnh.
- Truy vấn trên mảnh được đơn giản hoá và xây dựng lại để tạo ra một truy vấn khác tốt hơn. Quá trình đơn giản hoá và xây dựng lại có thể được thực hiện dựa theo cùng một quy tắc được sử dụng trong tầng phân rã.
- Rút gọn cho phân mảnh ngang nguyên thuỷ
Việc rút gọn các truy vấn trên các quan hệ đã được phân mảnh ngang bao gồm việc xác định câu truy vấn sau khi đã cấu trúc lại cây con. Điều này sẽ sinh ra một số quan hệ rỗng, và sẽ loại bỏ chúng. Phân mảnh ngang có thể được khai thác để làm đơn giản cả phép chọn và phép nối.
a) Rút gọn với phép chọn: cho một quan hệ R được phân mảnh ngang thành R1, R2,..., Rn với Rj =ϖpj(R).
Luật 1: σpj(Rj) = ∅ nếu σx∀R : ∈(pi(x) ¬ pj(x)).
Trong đó, pi, pj là tân từ chọn, x là bộ dữ liệu, p(x) là tân từ p chiếm giữ x
b) Rút gọn với phép nối : Các phép nối trên quan hệ đã được phân mảnh ngang có thể đơn giản khi chúng được phân mảnh theo thuộc tính nối. Việc rút gọn được thực hiện dựa trên tính phân phối giữa phép nối và phép hợp và
phân mảnh, có thể xác định được các phép nối vô ích của các mảnh khi các điều kiện nối mâu thuẫn nhau. Khi đó, dùng luật 2 dưới đây để loại bỏ các phép nối vô ích.
Luật 2: Ri Rj =∅ nếu ϖx∀Ri, ∈y∀Rj : ∈ (pi(x)¬pj(y)).
Trong đó Ri, Rj được xác định theo các tân từ pi, pj trên cùng thuộc tính. Việc xác định các phép nối vô ích được thực hiện bằng cách chỉ xem xét các tân từ mảnh. Truy vấn rút gọn không phải luôn tốt hơn hoặc đơn giản hơn truy vấn ban đầu. Thuận lợi của truy vấn rút gọn là những phép nối có thể thực hiện song song.
- Rút gọn cho phân mảnh dọc
Phân mảnh dọc phân tán một quan hệ dựa trên các thuộc tính chiếu. Vì vậy phép kết nối là phép toán tái xây dựng các phân mảnh dọc, cục bộ hoá cho quan hệ phân mảnh dọc bao gồm các kết nối của các mảnh trên các thuộc tính chung.
Các truy vấn trên phân mảnh dọc có thể rút gọn bằng cách xác định những quan hệ trung gian vô ích và loại bỏ các cây con chứa chúng. Các phép chiếu trên một phân mảnh dọc không có thuộc tính chung với các thuộc tính chiếu (ngoại trừ khóa) là vô ích, mặc dù các quan hệ là khác rỗng.
Luật 3: πD,K(Ri) là vô ích nếu D∧A’=∅.
Trong đó, quan hệ R xác định trên A={A1, ..., An}; R = πA’(R), A’∩A ,
K là khoá của quan hệ, K⊆ A, D là tập các thuộc tính chiếu, D⊂A.
- Rút gọn theo phân mảnh gián tiếp
Phân mảnh ngang gián tiếp là một cách tách hai quan hệ để việc xử lý nối của các phép chọn và phép nối.
các bộ của R được đặt tuỳ theo những bộ của S, thì sự phân mảnh gián tiếp chỉ nên sử dụng mối quan hệ một- nhiều từ S⊂R (một bộ của S có thể phù hợp với
n bộ của R, nhưng một bộ của R chỉ phù hợp với một bộ của S).
Truy vấn trên các phân mảnh gián tiếp cũng có thể rút gọn được, nếu các tân từ phân mảnh mâu thuẫn nhau thì phép nối sẽ đưa ra quan hệ rỗng. Chương trình định vị một quan hệ đã được phân mảnh ngang gián tiếp là hợp của các mảnh.
- Rút gọn theo phân mảnh hỗn hợp
Các truy vấn trên các mảnh hỗn hợp có thể được rút gọn bằng cách kết hợp các luật sử dụng trong phân mảnh ngang nguyên thủy, phân mảnh dọc, phân mảnh ngang gián tiếp, tương ứng như sau:
- Loại bỏ các quan hệ rỗng sinh bởi sự mâu thuẫn giữa các phép chọn trên các phân mảnh ngang.
- Loại bỏ các quan hệ vô ích sinh bởi các phép chiếu trên các phân mảnh dọc.
- Phân phối các phép nối với các phép hợp để tách và loại bỏ các phép nối vô ích.
c. Tối ưu hoá truy vấn toàn cục
Tối ưu hóa truy vấn toàn cục tìm ra một thứ tự thực hiện các phép toán trong biểu thức truy vấn sao cho ít tốn thời gian nhất. Khâu tốn kém thời gian trong cơ sở dữ liệu phân tán là khâu truyền dữ liệu do tốc độ và băng thông giới hạn. Trong trường hợp nhân bản thì còn phải tính xem nhân bản nào được sử dụng nhằm giảm chi phí truyền thông.
Vấn đề quan trọng của tối ưu hoá truy vấn là thứ tự thực hiện các phép nối phân tán. Nhờ tính giao hoán của các phép nối, có thể làm giảm chi phí
giữa các vị trí và tăng tính xử lý cục bộ tại các vị trí.
R ®A = B S = S A = B (R ωA = B <BS)
d. Tối ưu hoá truy vấn cục bộ
Thực hiện các truy vấn con được phân tán tại mỗi vị trí, gọi là truy vấn cục bộ có chứa các mảnh, sau đó được tối ưu hoá trên lược đồ cục bộ tại mỗi vị trí. Tối ưu hoá truy vấn cục bộ sử dụng các thuật toán tối ưu hoá truy vấn của cơ sở dữ liệu tập trung.
2.4. KIỂM SOÁT TÍNH TOÀN VẸN NGỮ NGHĨA
Vấn đề quan trọng và khó khăn cho một hệ cơ sở dữ liệu là bảo đảm được tính gắn bó CSDL. Một trạng thái CSDL được gọi là gắn bó nếu nó thỏa một tập các ràng buộc, được gọi là ràng buộc toàn vẹn ngữ nghĩa.
Kiểm soát toàn vẹn ngữ nghĩa bảo đảm được tính gắn bó của CSDL bằng cách loại bỏ hoặc hoá giải các quá trình cập nhật làm cho CSDL không gắn bó. Cơ sở dữ liệu đã cập nhật nghĩa là đã thỏa tập các ràng buộc toàn vẹn.
Có hai loại ràng buộc toàn vẹn: ràng buộc cấu trúc và ràng buộc hành vi. Ràng buộc cấu trúc mô tả những đặc tính ngữ nghĩa cơ bản của mô hình (ràng buộc về khóa duy nhất trong mô hình quan hệ, hoặc các liên kết một-nhiều giữa các đối tượng trong mô hình mạng). Ràng buộc hành vi mô tả mối liên kết giữa các đối tượng, như khái niệm phụ thuộc hàm trong mô hình quan hệ.
2.4.1. Kiểm soát toàn vẹn ngữ nghĩa tập trung
Một tiểu hệ thống kiểm soát toàn vẹn ngữ nghĩa có hai thành phần chính: một ngôn ngữ cho phép diễn tả và thao tác các phán đoán toàn vẹn, và một định chế chịu trách nhiệm thực hiện các hành động cụ thể nhằm ép buộc tính toàn vẹn khi có cập nhật.
vẹn, khi tạo quan hệ hoặc khi quan hệ đã có dữ liệu, có chung một cú pháp. Ngôn ngữ này cho phép mô tả, ghi nhận hoặc loại bỏ ràng buộc toàn vẹn. Trong các hệ cơ sở dữ liệu quan hệ, ràng buộc toàn vẹn được định nghĩa như là các phán đoán. Một phán đoán là một biểu thức đặc biệt được mô tả bằng phép tính quan hệ bộ, trong đó mỗi biến được lượng từ hóa với mọi ( ) hoặc tồn tại ( ). Vì vậy, một phán đoán có thể được xem như là một lượng từ hóa câu truy vấn, mang giá trị đúng hoặc sai cho mỗi bộ trong tích Đề các của các quan hệ được xác định bởi các biến bộ. Có ba loại ràng buộc toàn vẹn: ràng buộc tiền định, ràng buộc tiền dịch hoặc ràng buộc tổng quát.
- Ràng buộc tiền định
Định nghĩa dựa trên các từ khóa đơn giản để diễn tả chính xác các ràng buộc trong mô hình quan hệ, chẳng hạn như ràng buộc giá trị của thuộc tính không nhận giá trị null, hoặc khóa duy nhất, khóa ngoại hoặc phụ thuộc hàm.
- Ràng buộc tiền dịch
Mô tả các điều kiện mà các bộ trong một quan hệ phải được thỏa bởi một kiểu cập nhật đã cho. Kiểu cập nhật có thể là INSERT, DELETE hoặc MODIFY cho phép giới hạn kiểm soát ràng buộc. Để xác định các bộ cần cập nhật trong định nghĩa ràng buộc, người ta đưa ra hai biến NEW và OLD, tương ứng biến thiên trên các bộ mới (được chèn vào) và các bộ cũ (được xóa bỏ).
Cú pháp ràng buộc tiền dịch được biểu diễn bởi câu lệnh sau:
CHECK ON <quan hệ> WHEN <kiểu cập nhật> (<lượng từ hóa trên quan hệ>)
- Ràng buộc tổng quát
thể liên quan đến nhiều quan hệ. Có thể sử dụng ít nhất ba ràng buộc tiền dịch để diễn tả một ràng buộc tổng quát trên ba quan hệ. Một ràng buộc tổng quát có thể được diễn tả với cú pháp như sau:
CHECK ON danh sách <tên biến> :<tên quan hệ>, (<lượng từ hóa>)
b. Cưỡng chế thực thi ràng buộc
Cưỡng chế thực thi ràng buộc toàn vẹn là thực hiện việc loại bỏ những chương trình cập nhật vi phạm một số ràng buộc nào đó. Một ràng buộc bị vi phạm do các hành động cập nhật hoặc do các phán đoán ràng buộc bị sai. Có hai phương pháp cơ bản cho phép loại bỏ các trình cập nhật phát sinh mâu thuẫn.
- Phương pháp phát hiện mâu thuẫn (không gắn bó)
Một thao tác cập nhật u được thi hành sẽ biến đổi CSDL từ trạng thái D
sang trạng thái Du. Thuật toán cưỡng chế phải khẳng định rằng mọi ràng buộc liên quan vẫn đúng trong Du bằng cách áp dụng các ràng buộc này để kiểm tra. Nếu trạng thái Du không gắn bó, hệ quản trị CSDL sẽ chuyển sang một trạng thái Du’ khác bằng cách hiệu chỉnh lại Du hoặc phải khôi phục lại trạng thái D. Vì những kiểm tra này được áp dụng sau khi trạng thái của CSDL đã thay đổi nên được gọi là kiểm tra sau. Phương pháp này sẽ không hiệu quả nếu hệ thống phản hồi lại rất nhiều thao tác khi ràng buộc bị vi phạm.
- Phương pháp ngăn chặn mâu thuẫn
Một thao tác chỉ được thực hiện nếu nó chuyển CSDL sang một trạng thái gắn bó khác. Các bộ cần cập nhật đã có sẵn (trong trường hợp chèn) hoặc phải truy nhập trong CSDL (trường hợp xóa hoặc hiệu chỉnh). Thuật toán cưỡng chế xác nhận rằng tất cả các ràng buộc có liên đới đều đúng sau khi cập nhật các bộ. Nói chung, nó được thực hiện bằng cách áp dụng các kiểm
Phương pháp ngăn chặn này hiệu quả hơn phương pháp phát hiện vì không bao giờ phải hồi lại các thao tác cập nhật do ràng buộc bị vi phạm.
2.4.2. Kiểm soát toàn vẹn ngữ nghĩa phân tán
Các thuật toán đảm bảo tính toàn vẹn ngữ nghĩa của các CSDL phân tán được mở rộng từ các phương pháp đơn giản trong phần kiểm soát toàn vẹn ngữ nghĩa tập trung. Giả thiết các thuật toán có tính đến yếu tố tự trị vị trí, nghĩa là mỗi vị trí có thể xử lý các câu truy vấn cục bộ và thực hiện việc kiểm soát dữ liệu như một hệ quản trị CSDL tập trung. Giả thiết này làm đơn giản việc mô tả phương pháp. Hai vấn đề chính của thiết kế một tiểu hệ thống kiểm soát toàn vẹn trong một hệ quả trị CSDL phân tán là định nghĩa và lưu trữ các phán đoán và vấn đề ép buộc thi hành các phán đoán này.
a. Định nghĩa các phán đoán toàn vẹn phân tán
Giả sử một phán đoán toàn vẹn được diễn tả bằng phép tính quan hệ bộ. Mỗi phán đoán được coi là một lượng từ hóa truy vấn, trong đó nó nhận giá trị đúng hoặc sai với mỗi bộ trong tích Đề các của các quan hệ được xác định bằng các biến bộ. Các phán đoán có thể liên quan đến dữ liệu lưu trên nhiều vị trí khác nhau. Vì vậy chọn vị trí lưu trữ phán đoán sao cho giảm thiểu chi phí kiểm tra toàn vẹn.
Một chiến lược phán đoán toàn vẹn chia ra ba lớp:
a) Phán đoán riêng: là các phán đoán đơn biến đơn quan hệ. Chỉ đề cập đến các bộ được cập nhật, độc lập với phần còn lại của CSDL.
b) Phán đoán hướng tập hợp: bao gồm các ràng buộc đa biến đơn quan hệ như phụ thuộc hàm (mã số nhân viên xác định tên nhân viên) và đa biến đa quan hệ như các ràng buộc khóa ngoại.
lưu các quan hệ trong phán đoán. Quan hệ có thể bị phân mảnh, một vị từ phân mảnh là một trường hợp đặc biệt của phán đoán thuộc lớp 1. Các mảnh