Phân mảnh dọcĐịnh nghĩa Phân mảnh dọc quan hệ R sinh ra các mảnh R1, R2, ..., Rr , sao cho mỗi mảnh chứa một tập con các thuộc tính của quan hệ R và khoá của nó.. Mục đích Phân chia qua
Trang 1CƠ SỞ DỮ LIỆU PHÂN TÁN
Trang 2Phân mảnh dọc
Định nghĩa Phân mảnh dọc quan hệ R sinh ra các mảnh R1,
R2, ., Rr , sao cho mỗi mảnh chứa một tập con các thuộc tính của quan hệ R và khoá của nó
Mục đích Phân chia quan hệ R thành các mảnh nhỏ hơn là để
cho nhiều ứng dụng có thể thực hiện trên một mảnh tối
ưu, giảm thiểu thời gian thực hiện ứng dụng Nâng cao hiệu năng xử lý đồng thời.
Tối ưu ? Một phân mảnh tối ưu là phân mảnh sinh ra một lược
đồ phân mảnh cho phép giảm tối đa thời gian thực thi
Trang 5Ví dụ ma trận giá trị sử dụng thuộc tính
Quan hệ: PROJ (PNO, PNAME, BUDGET, LOC)
Tập các ứng dụng:
q1: Kinh phí của dự án khi biết mã dự án
SELECT BUDGET FROM PROJ WHERE PNO = Value
q2: Tên và kinh phí của tất các dự án
q3: Tìm tên các dự án khi biết thành phố
SELECT PNAME FROM PROJ WHERE LOC = Value
q4:Tổng kinh phí của các dự án tại mỗi thành phố
SELECT SUM( BUDGET ) FROM PROJ WHERE LOC = Value
Trang 6Ví dụ ma trận giá trị sử dụng thuộc tính
q2: SELECT A2, A3 FROM PROJ
q3: SELECT A2 FROM PROJ WHERE A4 = Value q4: SELECT SUM( A3 ) FROM PROJ WHERE A4 = Value
Ký hiệu: A1= PNO, A2=PNAME, A3=BUDGET, A4=LOC
A =
Trang 7Ma trận lực hút AA(Attribute Affinity Matrix)
Trong đó:
) , ( ( [:
) (
) (
) ,
(
j k i
k A use q A l
q use
k l
k l
j
A aff
Trang 8Ma trận lực hút AA(Attribute Affinity Matrix)
.
An
A n aff(A n ,A1) aff(A n ,A2) aff(A n ,A n )
AA =
Trang 9Ví dụ ma trận lực hút AA
Site1 Site2 Site3
acc1(q1)=15 acc2(q1)=20 acc3(q1)=10
acc1(q2)=5 acc2(q2)=0 acc3(q2)=0acc1(q3)=25 acc2(q3)=25 acc3(q3)=25
acc1(q4)=3 acc2(q4)=0 acc3(q4)=0
Trang 10Ví dụ ma trận lực hút AA
45 )
( )
( )
( )
( )
3
= =
q acc q
acc q
acc q
acc A
A aff
acc1(q2)=5 acc2(q2)=0 acc3(q2)=0
acc1(q3)=25 acc2(q3)=25 acc3(q3)=25
acc1(q4)=3 acc2(q4)=0 acc3(q4)=0
Trang 11Ví dụ ma trận lực hút AA
AA =
Trang 12( )
, (
) ,
( [
2 )
, ,
( A i A k A j bond A i A k bond A k A j bond A i A j
Ak, Ai, Aj ; Ai, Ak, Aj ; Ai, Aj, Ak
của tích 2 phần tử cùng hàng của hai cột Vì ma trận
Trang 14Thuật toán tụ nhóm BEA (Bond Energy Algorithm)
Nhóm các thuộc tính của quan hệ toàn cục bằng cách hoán vị các hàng và các cột của ma trận AA, sao cho số đo hấp dẫn
cont() là lớn nhất Kết quả sẽ là một ma trận tụ hấp dẫn CA
(Cluster Affinity) Thuật toán gồm 3 bước:
Bước 1: Đặt cột 1 và 2 của AA vào cột 1&2 trong CA.
Bước 2: Giả sử có i cột đã được đặt vào CA Lấy lần lượt
một trong (ni) cột còn lại của AA, đặt vào cột thứ (i+1) của
CA, sao cho số đo AM tại vị trí đó là lớn nhất
Bước 3: Sắp thứ tự hàng theo thứ tự cột
Trang 15Thuật toán tụ nhóm BEA (Bond Energy Algorithm)
Trang 18Ví dụ
AA =
CA =
Đặt A3 giữa A1 và
Trang 19End – for
Điều kiện biên, thứ tự (3-4-5): cont(A2,A4,A0)= 23730
loc =4 thứ tự (1-3-2) có cont =10150 lớn nhất
Trang 20AA =
CA =
Đặt A4 bên phải A2
Trang 21CA = CA =
Trang 22Thuật toán phân mảnh dọc
tích 2 phần tử cùng hàng của hai cột Vì ma trận AA đối xứng, có thể thực hiện tương tự theo hàng
trong CA, vì A2 có thể đặt ở bên trái hoặc phải của A1
Nếu Aj là thuộc tính tận trái trong ma trận CA, kiểm tra
Trang 23Thuật toán phân mảnh dọc
TA
Trang 24Thuật toán phân mảnh dọc
AQ(qi) ={Aj| use(qi, Aj) =
Trang 25Thuật toán phân mảnh dọc
Tổng chi phí truy xuất của tất cả các ứng dụng trên tất cả các vị trí
Tổng số các truy cập đến các thuộc tính bởi các ứng dụng chỉ truy cập TA
Tổng số các truy cập đến các thuộc tính bởi các ứng dụng chỉ truy cập BA
Tổng số các truy cập đến các thuộc tính bởi ứng dụng truy cập cả TA và BA
j q acc q ref
Trang 26Thuật toán phân mảnh dọc
Bài toán tối ưu hóa phân mảnh chính là bài toán xác định định một điểm : sao cho :
Trang 27Thuật toán phân mảnh dọc
acc1(q1)=15 acc2(q1)=20 acc3(q1)=10 acc1(q2)=5 acc2(q2)=0 acc3(q2)=0 acc1(q3)=25 acc2(q3)=25 acc3(q3)=25 acc1(q4)=3 acc2(q4)=0 acc3(q4)=0
Trang 28Thuật toán phân mảnh dọc
acc1(q1)=15 acc2(q1)=20 acc3(q1)=10 acc1(q2)=5 acc2(q2)=0 acc3(q2)=0
Trang 29Thuật toán phân mảnh dọc
COQ3 = acc1 (q3) + acc2 (q3) + acc3 (q3) + acc1 (q4) + acc2 (q4) + acc3 (q4) = 78
acc1(q1)=15 acc2(q1)=20 acc3(q1)=10 acc1(q2)=5 acc2(q2)=0 acc3(q2)=0 acc1(q3)=25 acc2(q3)=25 acc3(q3)=25
Trang 30Thuật toán phân mảnh dọc
Vị trí 1: Z = 2025
Vị trí 2: Z = 3311
Vị trí 3: Z = 6084
Như vậy vị trí 2 có chi phí là lớn nhất
Quan hệ PROJ chia thành 2 mảnh:
PROJ1 {A1, A3} = PROJ1 {PNO, BUDGET}
PROJ2 {A1, A2, A4} = PROJ2 {PNO, PNAME, LOC}
Trang 31Thuật toán phân mảnh dọc
PROJ