HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG CƠ SỞ DỮ LIỆU PHÂN TÁN THIẾT KẾ CƠ SỞ DỮ LIỆU PHÂN TÁN Phân mảnh dọc Ts. Phan Thị Hà 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 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 chỉ 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 các ứng dụng chạy trên phân mảnh đó 2 Phân mảnh dọc Purpose: Phân mảnh dọc là chúng ta gom những thuộc tính thường được truy xuất chung với nhau vào 1 mảnh. A7 A1 VD: Hình bên Purpose Vd: Xác định các phân mảnh R1, R2, các R2 R1 ứng dụng có thể được thực thi chỉ trên 1 phân mảnh Site 1 Site 2 AdvantageVD: Khi nhiều ứng dụng sử dụng R1và nhiều ứng dụng sử dụng R2 ở các site khác nhau, 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. Phân mảnh dọc là chúng ta gom những thuộc tính thường được truy xuất chung với nhau vào 1 mảnh.
Để tiến hành phân mảnh dọc chúng ta cần 1 số thông tin có liên quan đến ứng dụng (các câu truy vấn) và các quan hệ giữa các thuộc tính, giữa các ứng dụng với các thuộc tính: - Ma trận sử dụng thuộc tính: biểu diễn mối liên hệ giữa các câu truy vấn và các thuộc tính - Ma trận lực hút AA: Đo lực hút giữa 2 thuộc tính (Ai,Aj). -Ma trận lực hút tụ nhóm: đã gom nhóm các thuộc tính lại với nhau (các thuộc tính có số đo lực hút gần bằng nhau thì được xếp kề nhau) Split Approach phân mảnh dọc 1. Ma trận sử dụng thuộc tính (A) 2. Ma trận lực hút thuộc tính (AA) đc xây dựng từ ma trận A, phụ thuộc vào tần số truy cập của mỗi truy vấn qk vào cặp thuộc tính (Ai,Ạj)trên mỗi site và tần số truy cập của qk vào mỗi site 3.
Thuật tụ nhóm (BEA) để nhóm các thuộc tính xuất hiện cúng nhau dựa trên ma trận lực hút thuốc tính. Thuật toán này sản xuất ra ma trận lực hút tụ nhóm. Sử dụng thuật toán Phân mảnh dọc tách các thuộc tính ra thành các nhóm thuộc tính duy nhất Ma trận giá trị sử dụng thuộc tính ❑ R(A1, A2,…, An) quan hệ toàn cục ❑ Q={q1, q2,., qm} tập các ứng dụng ❑ Ma trận giá trị sử dụng thuộc tính định nghĩa như sau: A= (use(qi , Aj ))m*n 1 Nếu qi tham chiếu đến thuộc tính Aj use(qi,Aj) = 0 Ngược lại i=1.n n = và m=Q 6 Ma trận giá trị sử dụng thuộc tính A1 A2 …. qm Use(qm,A1) Use(qm,A2) Use(qm,An) 7 Ví 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 SELECT PNAME, BUDGET FROM PROJ 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 8 Ví dụ ma trận giá trị sử dụng thuộc tính Ký hiệu: A1= PNO, A2=PNAME, A3=BUDGET, A4=LOC q1: SELECT A3 FROM PROJ WHERE A1= Value q2: SELECT A2, A3 FROM PROJ q3: SELECT A2 FROM PROJ WHERE A4 = Value q4: SELECT SUM(A3) FROM PROJ WHERE A4= Value A= 9 Trọng số lực hút (Attribute Affinit Measure) ❑ R (A1, A2,…, An) quan hệ toàn cục ❑ Q={q1, q2,., qm} tập các ứng dụng ❑ Các site: S = {S1, S2,…,St} ❑ Khi đó AA = (aff( Ai , Aj ))n*n Ma trận lực hút ❑ aff( Ai , Aj ): Trọng số lực hút (Ai, Aj) với các ứng dụng trên các Site aff ( Ai , A j ) = ref l ( qk )accl ( qk ) k :[ ( use( qk , Ai ) ( use ( qk , A j ) ] =1 S l Trong đó: ❑ refl(qk) là số lượng truy suất trên (Ai,Aj) cho mỗi lần thực hiện của qk trên vị trí Sl ❑ accl (qk) là tần số truy cập ứng dụng của qk tại vị trí Sl 10 Ma trận lực hút AA(Attribute Affinity Matrix) A1 A2 ….
An aff(An,A1) aff(An,A2) aff(An,An) 11 For each query qk that uses both Ai and Aj Popularity of such Ai-Aj pair at Popularity of all sites using Ai and Relation R Site n Aj together Site m Ai qk qi qi qi Ak Aj Site s qk refs(qk) : Number of accesses to attributes (Ai,Aj) for each execution of qk at qi site s accs (qk) : Application access frequency of qk at site s. Ví dụ ma trận lực hút AA ❑ Giả sử refl (qk) =1 cho tất cả qk và Sl ❑ Giả sử tần số các ứng dụng trên các Site là: Site1 Site2 Site3 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 13 Ví 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)=0 A= acc1(q3)=25 acc2(q3)=25 acc3(q3)=25 acc1(q4)=3 acc2(q4)=0 acc3(q4)=0 aff ( Ai , A j ) = ref l ( qk )accl ( qk ) k :[ ( use( qk , Ai ) ( use ( qk , A j ) ] =1 S l 1 3 aff ( A1 , A3 ) = accl (qk ) = acc1 (q1 ) +acc2 (q1 ) + acc3 (q1 ) = 45 k =1 l =1 AA = 14 Ví dụ ma trận lực hút AA AA = 15 Ma trận lực hút tụ nhóm (CA) Sử dụng thuật tụ nhóm (BEA) để nhóm các thuộc tính xuất hiện cúng nhau dựa vào ma trận lực hút thuộc tính AA. Thuật toán hoán vị các hàng và các cột của ma trận AA, sao cho số đo lực hút chung AM là lớn nhất AM = (affinity of A and A with their neighbors) i j i j ❑ Số đo lực hút AM được tính: ❑ Vì ma trận AA đối xứng, nên khi tính AM ta có thể giảm chức năng mục tiêu của AM để 17 AMnew=AM’+AM’’+ bond(Ai-1,Ai)+bond(Ai ,Ak)+bond(Ak ,Ai)+bond(Ak ,Aj)+bond(Ạj ,Ak)+bond(Ạj ,Aj-1 ) =>Vậy đóng góp cho AM chung khi đặt Ak vào giữa giữa Ai, Aj, AMnew-AMold= 2(bond(Ak,Ai)+bond(Ak,Aj)-bond(Ai,Aj)) =>chọn vị trí để đặt Ak để AM max tương đương với Cont (Ai,Ak,Ạ) max>0 ❑Số đo đóng góp của thuộc tính Ak khi đặt vào Ai và Aj (cont) Ak, Ai, Aj ; Ai, Ak, Aj ; Ai, Aj, Ak Điều kiện biên: Xếp Ak vào vị trí ngoài cùng bên trái: Thêm cột A0 Xếp Ak vào vị trí ngoài cùng bên phải: Thêm cột An Các cột A0 và An có các phần tử = 0 trong ma trận lực hút thuộc tính Thuậ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).
22 Thuật toán ▪ Input: Ma trận AA ▪ Output: Ma trận quan hệ phân cụm CA Bước 1. Khởi tạo: Đặ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 (n-i) 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.
Lặp lại bước 2 cho đến hết Bước 3: Sắp thứ tự hàng theo thứ tự cột vd cont(A1,A4,A2) = 2[bond(A1, A4) + bond(A4,A2)– bond(A1,A2)] bond(A1, A4) = aff(A1,A1)*aff(A1,A4)+ aff(A2,A1)*aff(A2,A4)+ aff(A3,A1)*aff(A3,A4)+ aff(A4,A1)*aff(A4,A4) bond(A1, A4) = 135 bond(A4, A2) = 11865 bond(A1, A2) = 225 cont(A1, A4, A2) =2* 135 + 2* 11865 – 2* 225 = 23550 24 Giả mã Thuật toán tụ nhóm BEA (Bond Energy Algorithm) 25 Ví dụ Chép cột 1 và cột 2 ma trận AA vào ma trận CA (1) CA(*,1)←AA(*,1) (2) CA(*,2)←AA(*,2) CA = AA = 26 Clustered Affinity Matrix Step 2: Determine Location for A3 3 possible positions A1 A2 A3 for A3 A1 A3 A2 A0 A3 A1 A0 A1 A2 A3 A4 A5 A0 A1 A2 A3 A4 A5 A1 45 0 45 0 A1 45 0 A2 0 80 5 75 A2 0 80 A3 45 5 53 3 A3 45 5 A4 0 75 3 78 A4 0 75 Attribute Affinity Matrix (AA) Clustered Affinity Matrix (CA) Ví dụ index=3 While index ≤ n do index ≤4 {thỏa mãn} For i from 1 to index – 1 by 1 do Tính cont(Ai-1,Aindex,Ai) i=1 thứ tự ( 0-3-1): cont(A0,A3,A1) = 8820 i=2 thứ tự (1-3-2): cont(A1,A3,A2) = 10150 End – for Điều kiện biên, thứ tự (2-3-4): cont(A2,A3,A4)= 1780 loc =2 thứ tự (1-3-2) có cont =10150lớn nhất For j from index to Loc by – 1 do {xáo trộn hai ma trận} CA(*, j) := AA(*,j-1); CA(*,loc=2):=AA(*,index=3); 28 Ví dụ CA = AA = Đặt A3 giữa A1 và A2 29 index=4 While index ≤ n do index ≤4 {thỏa mãn} For i from 1 to index – 1 by 1 do Tính cont(Ai-1,Aindex,Ai) i=1 thứ tự (0-4-1): cont(A0,A4,A1) = 270 i=2 thứ tự (1-4-3): cont(A1,A4,A3) = - 7014 i=3 thứ tự (3-4-2): cont(A3,A4,A2) = 23486 End – for Điều kiện biên, thứ tự (2-4-5): cont(A2,A4,A5)= 23730 loc =4 thứ tự (2-4-5) có cont =23730 lớn nhất 30 CA = AA = Đặt A4 bên phải A2 31 CA = CA = 32 Chú ý Thuật toán tụ nhóm ❑ Độ đo cầu nối giữa hai thuộc tính được tính là tổng của 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 bước khởi gán, cột 1 và 2 được đặt vào vị trí 1&2 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 đóng góp khi đặt thuộc tính Ak vào bên trái của Aj , khi đó bond (A0, Ak) = bond(A0, Aj) =0, ❑ Nếu Aj là thuộc tính tận phải đã được đặt trong ma trận CA và đang kiểm tra đóng góp khi đặt thuộc tính Ak vào bên phải của Aj, Khi đó bond (Aj, Ak+1) = bond(Ak, Ak+1) =0.