Thuật toán phân mảnh dọc

Một phần của tài liệu Gộp nhóm các giá trị lặp của các thuộc tính trong các mảnh của cơ sơ dữ liệu phân tán (Trang 32 - 53)

CHƯƠNG 2: CÁC THUẬT TOÁN PHÂN MẢNH THEO CÁC GIÁ TRỊ LẶP CỦA CÁC THUỘC TÍNH TRONG CƠ SỞ DỮ LIỆU PHÂN TÁN

2.2. Các thuật toán phân mảnh theo các giá trị lặp của các thuộc tính

2.2.1. Thuật toán phân mảnh dọc

Phân mảnh dọc một quan hệ R sinh ra các mảnh V1, V2,…, Vd. Mỗi mảnh con chứa một tập con thuộc tính của R và cả tập khóa Key của R. Có thể coi việc phân mảnh dọc tương ứng với câu lệnh SQL như sau:

SELECT<Tập thuộc tính khóa><Danh sách thuộc tính không khóa của quan hệ>

FROM <Quan hệ>

Còn trong AQL (Algebraic Query Language)

<Tập thuộc tính khoa> <Danh sách thuộc tính không khóa của quan hệ><Quan hệ>

Ví dụ 2.2-1.

Từ bảng 2.1. Các quan hệ sau là các mảnh dọc

MaNV, MaDuAn, ThoiGianLV<PhanNhiem>

MaNV, MaDuAn, ChuVu<PhanNhiem>

Bảng 2.2.1. Mảnh dọc theo ThoiGianLV

Bộ t MaNV MaDuAn ThoiGianLV

t1 NV1 DA1 12

t2 NV2 DA1 24

t3 NV2 DA2 24

t4 NV3 DA3 10

t5 NV3 DA4 48

t6 NV4 DA2 18

t7 NV5 DA2 24

t8 NV6 DA4 48

t9 NV7 DA3 36

t10 NV8 DA3 40

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

Bảng 2.2.2. Mảnh dọc theo ChucVu

Bộ t MaNV MaDuAn ChucVu

t1 NV1 DA1 Giám đốc

t2 NV2 DA1 Phân tích và thiết kế

t3 NV2 DA2 Phân tích và thiết kế

t4 NV3 DA3 Tƣ vấn

t5 NV3 DA4 Kỹ sƣ

t6 NV4 DA2 Lập trình viên

t7 NV5 DA2 Giám đốc

t8 NV6 DA4 Giám đốc

t9 NV7 DA3 Kỹ sƣ

t10 NV8 DA3 Giám đốc

Nội dung thuật toán phân mảnh dọc:

Giả sử cho quan hệ R với tập thuộc tính không khoa A = {A1, A2, … ,An} Ta có dãy chỉ số {1, 2, … , n}

Nếu phân mảnh dọc là gồm i - thuộc tính thì số mảnh dọc có i thuộc tính là Cin (6)

Số mảnh dọc có thể có là C1n + C2n + Cnn = 2n -1

Thuật toán phân mảnh dọc nhƣ sau:

Gọi A = {Ai}; i = 1, 2, ... , n là tập thuộc tính không khóa Bk là tập thuộc tính con gồm k thuộc tính bất kỳ của A.

M = {Bk}

PM_DOC /* Thuật toán phân mảnh dọc*/

Vào: A = {Ai}; i = 1, 2, ... , n là tập thuộc tính không khóa Ra: Các mảnh dọc FV của quan hệ R(Key,A1,A2,…,An)

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

FV = 

K = “Tập thuộc tính khóa”

For Each x In M Select x INTO Tam From R

FV = FV  (K Tam) EndFor

Thuật toán có độ phức tạp O(2n - 1) Ví dụ 2.2-2.

Từ bảng 2.1. Các quan hệ sau là các mảnh dọc theo thuật toán Bảng 2.2.3. Mảnh dọc theo ThoiGianLV

MaNV MaDuAn ThoiGianLV

NV1 DA1 12

NV2 DA1 24

NV2 DA2 24

NV3 DA3 10

NV3 DA4 48

NV4 DA2 18

NV5 DA2 24

NV6 DA4 48

NV7 DA3 36

NV8 DA3 40

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

Bảng 2.2.4. Mảnh dọc theo ChucVu

MaNV MaDuAn ChucVu

NV1 DA1 Giám đốc

NV2 DA1 Phân tích và thiết kế

NV2 DA2 Phân tích và thiết kế

NV3 DA3 Tƣ vấn

NV3 DA4 Kỹ sƣ

NV4 DA2 Lập trình viên

NV5 DA2 Giám đốc

NV6 DA4 Giám đốc

NV7 DA3 Kỹ sƣ

NV8 DA3 Giám đốc

Bảng 2.2.5. Toàn quan hệ PhanNhiem

Bộ t MaNV MaDuAn ChucVu ThoiGianLV

t1 NV1 DA1 Giám đốc 12

t2 NV2 DA1 Phân tích và thiết kế 24

t3 NV2 DA2 Phân tích và thiết kế 24

t4 NV3 DA3 Tƣ vấn 10

t5 NV3 DA4 Kỹ sƣ 48

t6 NV4 DA2 Lập trình viên 18

t7 NV5 DA2 Giám đốc 24

t8 NV6 DA4 Giám đốc 48

t9 NV7 DA3 Kỹ sƣ 36

t10 NV8 DA3 Giám đốc 40

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

Trên đây, chỉ ra câu lệnh để phân mảnh dọc từ một quan hệ mảnh đã có.

Tuy nhiên, phương pháp tổng quát để phân mảnh dọc là sử dụng ma trận liên kết giữa các thuộc tính AA để tìm ra ma trận liên kết tụ CA thông qua thuật toán BEA để gom tụ các thuộc tính có liên kết cao lại với nhau rồi phân mảnh dọc quan hệ dựa theo các thuộc tính đó. Thuật toán BEA đƣợc mô tả nhƣ sau:

Mô tả Thuật toán tụ nhóm .

Phân mảnh dọc chia một quan hệ R ra các quan hệ con (mảnh) R1, R2,..Rr. Mỗi mảnh chứa một tập con các thuộc tính cùng với khóa của quan hệ R. Mục đích của phân mảnh dọc là phân hoạch một quan hệ thành một tập các quan hệ nhỏ hơn, để có nhiều ứng dụng chỉ cần chạy trên một mảnh, điều này sẽ làm giảm đáng kể chi phí. Nhƣ vậy một cách phân mảnh tối ƣu là phân mảnh để thời gian thực thi các ứng dụng chạy trên các mảnh đó là nhỏ nhất.

Phân mảnh dọc đƣợc nghiên cứu cho cả CSDL tập trung lẫn phân tán, tập trung là sử dụng nó làm công việc thiết kế, cho phép vấn tin chỉ với các quan hệ nhỏ hơn, nên giảm đƣợc số truy nhập vào các trang. Khi xác định đƣợc các quan hệ con đƣợc tham chiếu nhiều nhất thì đặt chúng vào “phần”

bộ nhớ có tốc độ truy cập nhanh nhất (nếu có sự hỗ trợ về phân cấp bộ nhớ).

Phân mảnh dọc phức tạp hơn phân mảnh ngang, vì số lựa chọn có thể có của phân mảnh dọc là rất lớn. Trong phân mảnh ngang, nếu tổng các vị từ đơn giản của tập Pr là n thì số mảnh ngang có thể có tối đa là 2n (vì có 2n vị từ hội sơ cấp) chưa nói trong số chúng có một số vị từ tương đương, có thể bỏ bớt, do đó sẽ làm giảm số mảnh phải xem xét. Còn trong phân mảnh dọc nếu một quan hệ có m thuộc tính không phải là khóa thì số mảnh dọc có thể có sẽ là số Bell của m. Với m đủ lớn thì số Bell xấp xỉ mm. Qua những minh chứng này cho thấy để tìm các phân mảnh dọc tối ƣu là bài toán heuristic. Hai loại heuristic cho phân mảnh dọc các quan hệ toàn cục là:

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

- Các yêu cầu thông tin của phân mảnh dọc.

Các thông tin chíng cần cho phân mảnh dọc liên quan đến các ứng dụng. Vì thế, chúng ta bàn về các điều kiện cho các ứng dụng sẽ chạy trên CSDL phân tán. Bởi vị phân mảnh dọc đặt vào một mảnh các thuộc tính thường được truy xuất chung với nhau, chúng ta cần có một giá trị đo đạc đƣợc nào đó để định nghĩa chính xác hơn về khái niệm "liên đới" để chỉ ra mức độ liên đới giữa các thuộc tính. Chúng ta sẽ nghiên cứu tìm cách để thu đƣợc các giá trị này từ các dữ liệu đã cho.

- Các yêu cầu dữ liệu.

Yêu cầu dữ liệu có liên quan đến các ứng dụng gọi là tần số truy xuất access frequency của chúng. Goi Q={q1, q2,… qq} là tập các vấn tin của người dùng (các ứng dụng) sẽ chạy trên quan hệ R(A1,…An). Thế thì với mỗi câu vấn tin qi và mỗi thuộc tính Aj chúng ta đƣa ra ký hiệu là use(qi, Aj) là gía trị sử dụng thuộc tính Aj và đƣợc tính nhƣ sau:

Chẳng hạn, có các truy vấn q1, q2, q3, q4 và quan hệ R(A1, A2, A3, A4)

A1 A2 A3 A4 q1 1 0 1 0 q2 1 0 1 0 q3 1 0 1 0 q4 1 0 1 0

Hình 2.1.Ma trận mẫu về giá tri sử dụng thuộc tính

use(qi, Aj) =

1 nếu vấn tin qi tham chiếu đến thuộc tính Aj

đƣợc

0 trong trường hợp ngược lại

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

Các véc tơ (use(qi, A1),use(qi, A2), …., use(qi, An)cho biết mỗi ứng dụng qi có tham chiếu hay không đến các Aj với mọi j rất dễ xác định nếu nhƣ nhà thiết kế biết đƣợc các ứng dụng sẽ chạy trên CSDL.

Ví dụ 2.2-3: Giả sử các ứng dụng sau đây chạy trên quan hệ DuAn trong mỗi trường hợp chúng ta đều thẻ hiện bởi SQL.

q1 : Tìm ngân sách của một dự án, cho biết mã số dự án.

SELECT NganSach FROM DuAn

WHERE MaDuAn = Value

q2 : Tìm tên và ngân sách của mọi dự án.

SELECT TenDuAn, NganSach FROM DuAn

q3 : Tìm tên của mọi dự án đƣợc thực hiện tại một thành phố đã cho.

SELECT TenDuAn FROM DuAn

WHERE ViTri = Value

q4 : Tìm tổng ngân sách dự án cho mỗi thành phố.

SELECT SUM(NganSach) FROM DuAn

WHERE ViTri = Value

Dựa theo 4 ứng dụng này, chúng ta có thể định nghĩa đƣợc giá trị sử dụng thuộc tính. Chúng ta, gọi A1 = MaDuAn, A2 = TenDuAn, A3 = NganSach và A4 = ViTri. Giá trị sử dụng được định nghĩa dưới dạng ma trận (hình 2.1) trong đó Ô tại (i,j) biểu thị use(qi, Aj).

Giá trị sử dụng thuộc tính không đủ tổng quát để làm cơ sở cho việc tách và phân mảnh. Để làm cơ sở biểu thị cho độ lớn của tần số ứng dụng cặp (Ai, Aj ) biểu thị cho sự liên đới giữa hai thuộc tính của một quan hệ theo cách chúng

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

đƣợc các ứng dụng truy xuất. Số đo tính liên đới của hai thuộc tính Ai và Aj của quan hệ R(A1,…An) ứng với tập ứng dụng Q = {q1,…,qq} đƣợc định nghĩa là:

Trong đó refl(qk) là số truy xuất đến các thuộc tính (Ai, Aj) cho mỗi thực hiện của ứng dụng qk tại vị trí Sl và accl (qk) là số đo tấn số truy xuất ứng dụng đã được định nghĩa trước vàđước sửa đổi lại để chứa tất cả các tần số tại các vị trí khác nhau.

Kết quả của việc tính toán này là 1 ma trận nn, mỗi phần tử của nó là 1 trong các số đo đƣợc định nghĩa trên.Chúng ta gọi nó là ma trận liên đới thuộc tính (AA)

Ví dụ 2.2-4:

Chúng ta hãy tiếp tục với trường hợp đã xem xét trường hợp trong Ví dụ 2.2-3 Để cho đơn giản, chúng ta hãy giả sử rằng refl (qk) =1 cho tất cả qk và Sl

.Nếu tần số ứng dụng là:

acc1(q1) = 15 acc2(q1) = 20 acc3(q1) = 10

acc1(q2) = 5 acc2(q2) = 0 acc3(q2) = 0 acc 1(q3) = 25 acc2(q3) = 25 acc3(q4) = 25

acc 1(q4) = 3 acc2(q4) = 0 acc3(q4) = 0

Với các liệu này thì số đo liên đới giữa các thuộc tính A1 và A3 có thể đƣợc đo bằng:

k|(use(qk,Ai)-l) use(qk,Aj)-l

Si

refl(qk)accl(qk) aff(Ai, Aj) =

accl(qk) = acc1(q1) + acc2(q1) + acc3(q1) aff(A1, A3) =

  l

k 1 l 3

1

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

bởi vì ứng dụng duy nhất truy xuất đến cả hai thuộc tính này là q1. Ma trận liên đới thuộc tính đầy đủ trình bày trong hình 2.2. Chú ý rằng để cho đầy đủ, các giá trị ở đường chéo cũng được tính dù rằng chúng hoàn toàn vô nghĩa.

Thuật toán tụ nhóm.

Nhiệm vụ cơ bản của phân mảnh dọc là tìm thuật toán để gom thành nhóm các thuộc tính dựa trên các giá trị cảu ma trận liên đới thuốc tính AA.

Chúng ta sẽ thực hiện nhiệm vụ này bởi thuất toán năng lƣợng nối BEA (Bond Energy Algorithm). Ƣu điểm của thuật toán này là ở chỗ:

(1) Nó được thiết kế đặc biệt để xác định các nhóm gồm các mục tương tự, trái ngƣợc với một sắp xếp thứ tự tuyến tính của các mục (nghĩa là nó gom các thuộc tính có giá trị liên đới lớn lại với nhau và những thuộc tính có giá trị liên đới nhỏ lại với nhau).

(2) Các kết quả tụ nhóm không bị ảnh hưởng bởi thứ tự đưa các mục vào thuật toán.

(3) Thời gian tính toán của thuật toán có thể chấp nhận đƣợc [là O (n2) với n là số lƣợng thuộc tính].

(4) Mối liên hệ qua lại giữa các nhóm thuộc tính tụ có thể xác định đƣợc.

Thuật toán năng lương nối BEA đầu vào là ma trận liên đới, hoán vị các hàng và cột rồi sinh ra một ma trận liên đới tụ (CA) (Clustered affinity matrix). Hoán vị đƣợc thực hiện sao cho số đo liên đới chung AM là lớn nhất.

 

n     

l i

n

j

j i j

i j

i A aff A A aff A A

A aff

1

1

1 ( , )

, )[

,

( Aff(Ai-1,Aj)+aff(Ai+1, Aj)]

A1 A2 A3 A4 A1 45 0 45 0 A2 0 80 1 0 A3 45 5 53 3 A4 0 75 3 78

Hình 2.2.Ma trận liên đới

AM =

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

Trong đó:

Aff(Ao,Aj) = aff(Ai, Ao) = aff(An+1,Aj) = aff(Ai,An+1) = 0

Tập các điều kiện cuối cùng đề cập đến những trường hợp một thuộc tính đƣợc đặt vào CA ở về bên trái của thuộc tính tận trái hoặc ở về bên phải của thuộc tính tận phải trong các hoán vị cột, và bên trên hàng trên cùng và bên dưới hàng cuối cùng trong các hoán vị hàng. Trong những trường hợp này, chúng ta cho 0 là giá trị aff giữa thuộc tính đang đƣợc xét và các lân cận bên trái hoặc bên phải (trên cùng hoặc dưới đáy) của nó hiện chưa có trong CA.

Hàm cực đại hoá chỉ xét những lân cận gần nhất, vì thế nó nhóm các giá trị lớn với các giá trị lớn, giá trị nhỏ. Vì ma trận liên đới AA có tính đối xứng nên hàm số vừa đƣợc xây dựng ở trên thu lại thành.

 

n     l

i n

j

j i j

i j

i A aff A A aff A A

A aff

1

1

1 ( , )

, )[

, (

Quá trình sinh ra ma trận liên đới tụ (CA) được thực hiện qua ba bước:

(1) Khởi gán: Đặt và cố định một trong các cột của AA vào trong CA. Cột 1 đƣợc chọn trong thuật toán này.

(2) Thực hiện lặp: Lấy lần lƣợt một trong n – i cột còn lại (trong đó i là số cột đã đặt vào CA) và thử đặt chúng vào i + 1 vị trí còn lại trong ma trận CA. Chọn nơi đặt sao cho nó đóng góp nhiều nhất cho số đo liên đới chung được mô tả ở trên. Tiếp tục bước này cho đến khi không còn cột nào để đặt.

(3) Sắp thứ thự hàng. Một khi thứ tự cột đã đƣợc xác định, các hàng cũng cần được đặt lại để các vị trí tương đối của chúng phù hợp với các vị trí tương đối của các cột 4.

Thuật toán BEA

Vào: AA: Ma trận liên đới thuộc tính Ra: CA: Ma trận liên đới tụ

Begin:

AM =

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

{khởi gán: Cần nhớ rằng  là một ma trận n x n}

CA (, 1)  AA (, 1) CA (, 2)  AA (, 2) Index  3

While index – ndo {chọn vị trí “tốt nhất” cho thuộc tính AAindex}

Begin

For i from 1 to index – 1 by 1 do tính cont(Ai-1, Aindex, Ai).

end – for

tính cont (Aindex-1, Aindex, Aindex+1) {điều kiện biên}

loc  nơi đặt, đƣợc cho bởi giá trị cont lớn nhất

for i from index to loc by – 1 do {xáo trộn hai ma trận}

CA(, j)  CA(,j-1) End-for

CA(,loc)  AA(,index) Index  index + 1

End – while

Sắp thứ tự các hàng theo thứ tự tương đối của các cột end. {BEA}

Để bước thứ hai của thuật toán hoạt động, chúng ta cần định nghĩa xem đóng góp (contribution) của thuộc tính vào số đo liên đới mang ý nghĩa gì.

Đóng góp này có thể đƣợc suy ra nhƣ sau. Cần nhớ lại rằng số đo liên đới chung AM đã đƣợc định nghĩa là:

 

n     l

i n

j

j i j

i j

i A aff A A aff A A

A aff

1

1

1 ( , )

, )[

, (

Và có thể đƣợc viết lại:

 

   

n

l i

j i n

j

j i j

i j

i A aff A A aff A A aff A A

A

aff( , ) ( , ) ( , ) ( , )]

[ 1

1

1 1

AM =

AM =

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

=   

 

  

 

 

n

l j

j i j

n

i

i n

i

j i j

i A aff A A aff A A aff A A

A

aff( , ) ( , ) ( , ) ( , 1)

1 1

1

Chúng ta hãy định nghĩa cầu nối (bond) giữa hai thuộc tính Ax và Ay là:

) , ( ) , (

1

 n

z

y z x

z A aff A A

A aff

Thế thì AM có thể viết lại là:

)]

, ( )

, ( [

1

1

 1

   

n

z

j j j

j A bond A A

A bond

Bây giờ xét n thuộc tính sau:





' 1 2

1 ...

AM

Ai

A

A  Ai Aj





'' 1...

AM n

j A

A

Số đo liên đới chung cho những thuộc tính này có thể đƣợc viết là:

AMold = AM’ + AM”

+ bond(Ai-1, Ai) + bond(Ai, Aj) + bond(Aj, Ai) + bond(Aj, Aj+1)

= [ ( , ) ( , )]

1

 1

   

n

l

l i i

l

l A bond A A

A bond

+ [ ( , ) ( , )]

1

 1

n   

i l

j i i

l

l A bond A A

A

bond + 2bond(Ai, Aj)

Bây giờ xét đến việc đặt một thuộc tính mới Ak giữa các thuộc tính Ai

và Aj trong ma trận liên đới tụ. Số đo liên đới chung mới có thể viết tương tự nhƣ:

AMnew = AM’ + AM” + bond(Ak,Aj)

+ bond(Ak,Ai) + bond(Ak,Aj) + bond(Aj,Ak) = AM’ + AM” + 2bond(Ai, Ak) + 2bond(Ak,Aj).

Bond(Ax,Ay) =

AM =

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

Vì thế đóng góp thực cho số đo liên đới chung khi đặt thuộc tính Ak giữa Ai và Aj là.

Cont(Ai,Ak,Aj) = AMnew – AMold

= 2bond(Ai, Ak) + 2bond(Ak, Aj) – 2bond(Ai,Aj) Ví dụ 2.2-5

Chúng ta đã xét ma trận AA đƣợc cho trong Hình 2.2 và tính toán phần đóng góp khi di chuyển thuộc tính A4 vào giữa các thuộc tính A1 và A2, đƣợc cho bằng công thức:

Cont(A1;A4;A2) = 2bond(A1,A4) + 2bond(A4,A2) – 2bond(A1,A2).

Tính mỗi số hạng, chúng ta đƣợc:

Bond(A1,A4) = 45*0 + 0*75 + 45*3 + 0*78 = 135 Bond(A4,A2) =11865

Bond(A1,A1) = 225 Vì thế:

Cont (A1,A4,A2) = 2*135.2*11865 – 2*225 = 23550

Để ý rằng việc tính toán cầu nối giữa hai thuộc tính cần phải nhân các phần tử của hai cột biểu diễn những thuộc tính này và lấy tổng theo hàng.

Thuật toán và thảo luận của chúng ta cho đến lúc này chỉ chú ý đến các cột của ma trận liên đới thuộc tính. Chúng ta có thể lập luận tương tự và thiết lập lại thuật toán hoạt động trên các hàng. Vì ma trận AA đối xứng, cả hai lối tiếp cận đều sinh ra cùng một kết quả.

Một điểm nữa cần ghi về Thuật toán BEA đó là để cải thiện hiệu quả, cột thứ hai cũng được cố định và đặt cạnh cột thứ nhất trong bước khởi gán.

Điều này là chấp nhận đƣợc bởi vì theo thuật toán A2 có thể đƣợc đặt ở bên trái hoặc bên phải của A1. Tuy nhiên cầu nối giữa hai thuộc tính này độc lập với vị trí tương đối của chúng đối với nhau.

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

Cuối cùng chúng ta cần phân tích vấn đề khi tính cont tại các đầu tận.

Nếu thuộc tính A1 đang đƣợc xét tìm chỗ đặt ở bên trái thuộc tính tận trái, một trong các phương trình cầu nối được tính giữa phần tử không có ở bên trái và Ak [nghĩa là bond(A0,Ak)]. Vì thế chúng ta cần dùng đến những điều kiện đƣợc đặt ra cho định nghĩa của số đo liên đới chung AM, trong đó CA(0,k) = 0. ở thái cực kia là trường hợp Aj là thuộc tính tận phải đã được đặt trong ma trận CA và chúng đang kiểm tra đóng góp khi đặt thuộc tính Ak vào bên phải của Aj. Trong trường hợp này bond(k,k+1) cần được tính. Tuy nhiên vìe chưa có thuộc tính nào đƣợc đặt ở cột k + 1 của ma trận CA, số đo liên đới này chƣa đƣợc định nghĩa. Vì thế theo điều kiện đầu tận, giá trị bond này cũng là 0.

Ví dụ 2.2-6: Chúng ta hãy xét quá trình gom tụ các thuộc tính của quan hệ DuAn và dùng ma trận liên đới thuộc tính AA của Hình 2.2.

Theo bước khởi đầu, chúng ta chép các cột 1 và 2 của ma trận AA vào ma trận CA (2.3a) và bắt đầu thực hiện từ cột 3 (nghĩa là thuộc tính A3). Có ba nơi có thể đặt cột 3: ở bên trái của cột 1, tạo ra thứ tự (3-1-2), giữa cột 1 và 2, cho ra (1-2-3) và ở bên phải cột 2, kết quả là (1-2-3). Chú ý rằng để tính đóng của lối sắp xếp cuối cùng chúng ta phải tính cont(A2,A3,A4) chứ không phải cont(A1,A2,A3). Hơn nữa trong ngữ cảnh này, A4 chỉ cột thứ tƣ trong ma trận CA, đó là vị trí rỗng (2.3b), không phải là cột thuộc tính A4 của ma trận AA.

Chúng ta hãy tính đóng góp cho số đo liên đới chung của mỗi khả năng này.

Cont(A0,A3,A1) = 2bond(A0,A3) + 2bond(A3,A1) – 2bond(A0,A1).

Chúng ta biết rằng:

Bond(A0,A1) = bond(A0,A3) = 0

Bond(A3,A1) = 45*48 + 5*0 + 53*45 + 3*0 = 4410 Vì thế

Cont(A0,A3,A1) = 8820

Một phần của tài liệu Gộp nhóm các giá trị lặp của các thuộc tính trong các mảnh của cơ sơ dữ liệu phân tán (Trang 32 - 53)

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

(81 trang)