Các loại phân mảnh Phân mảnh dọc: Tách lược đồ của quan hệ R thành các lược đồ có số cột nhỏ hơn thực ra là thực hiện phép chiếu quan hệ R lên tập các thuộc tính của các quan hệ Ri... P
Trang 1Thiết kế CSDL Phân tán
Nhóm thực hiện: Trần Anh Dũng
Nguyễn Thanh Huy Nguyễn Thành Nam
Trường Đại học Khoa học Tự nhiên
Khoa Công Nghệ Thông Tin
Môn học: CSDL Phân tán Giảng viên: PGS TS Đồng Thị Bích
Thuỷ
Trang 2Nội dung
Giới thiệu thiết kế cơ sở dữ liệu phân tán
Các chiến lược thiết kế
Thiết kế từ trên xuống
Thiết kế từ dưới lên
Trang 4 Chia sẻ dữ liệu và chương trình
Dữ liệu và chương trình được chia sẻ ở các nơi
Trang 5Kiểu truy cập
Mối quan hệ giữa thiết kế cơ sở dữ liệu phân tán và xử
lý truy vấn
Static: không thay đổi theo thời gian
Dynamic: thay đổi theo thời gian
Trang 6Mức độ hiểu biết về kiểu truy cập
Không có sự hiểu biết
Khó khăn để thiết kế cơ sở dữ liệu phân tán có hiệu quả với vị trí này
Hiểu biết một phần
Có thể có sự thay đổi so với dự đoán
Hiểu rõ hoàn toàn
Kiểu truy cập có thể được dự báo trước
Trang 7Các chiến lược thiết kế
Trang 8Chiến lược Top – Down
Top – Down là hướng tiếp cận thích hợp khi một hệ thống dữ liệu được thiết kế từ đầu
Trang 9Chiến lược Bottom – Up
Khi đã tồn tại một vài CSDL và công việc thiết kế để kết hợp lại với nhau thành một dữ liệu chung
Điểm khởi đầu là lược đồ khái niệm cục bộ
Quy trình là việc kết hợp các lược đồ cục bộ thành lược
đồ khái niệm toàn cục
Trang 11Các loại phân mảnh
Phân mảnh dọc: Tách lược đồ của quan hệ R thành các lược đồ có số cột nhỏ hơn (thực ra là thực hiện phép chiếu quan hệ R lên tập các thuộc tính của các quan hệ Ri)
Trang 12 Phân mảnh ngang: Tách quan hệ R theo cách mà mỗi n_bộ của R có mặt trong một hay nhiều quan hệ thành phần
Các loại phân mảnh (2)
Trang 13 Phân mảnh hỗn hợp: sự kết hợp giữa phân mảnh ngang, dọc.
Các loại phân mảnh (3)
Trang 15Yêu cầu thông tin
Có nhiều yếu tố ảnh hưởng việc thiết kế một hệ CSDL phân tán tối ưu: Tổ chức csdl, ứng dụng, mạng,…
Trang 16Phân mảnh ngang – HF
Các loại phân mảnh ngang
Phân mảnh ngang nguyên thủy: Dùng vị từ của quan
hệ cần phân mảnh
Phân mảnh ngang dẫn xuất: Dùng vị từ của một quan
hệ khác để phân mảnh
Hai khía cạnh ảnh hưởng phân mảnh:
Thông tin dữ liệu
Thông tin ứng dụng
Trang 17HF – Thông tin dữ liệu
Mối quan hệ (relationships): Rất quan trọng trong việc thiết kế phân tán
Các đường nối (links): Thể hiện phép kết bằng giữa các quan hệ
Thông tin định lượng: Số bộ của quan hệ R: card(R)
Trang 18HF – Thông tin dữ liệu (tt)
Ví dụ:
Trang 19HF – Thông tin ứng dụng
Hai loại: thông tin định lượng và định tính
Thông tin định tính là các vị từ định tính được sử dụng trong truy vấn, dựa trên sự phân tích các ứng dụng:
Trong đó:
Trang 20HF – Thông tin ứng dụng (tt)
Ví dụ:
Trang 21HF – Thông tin ứng dụng (tt)
Thông tin định lượng:
Độ tuyển hội sơ cấp: sel(mi) – số bộ của một quan hệ được trả về bởi truy vấn dựa vào vị từ hội sơ cấp mi
Tần suất truy cập: acc(mi) – tần suất truy cập dữ liệu của ứng dụng khi truy vấn sử dụng vị từ hội sơ cấp
Trang 22Phân mảnh ngang nguyên thủy
Định nghĩa: Phân mảnh Ri = δ Fi (R) i = 1, 2,…, t Trong
Ví dụ:
Phân rã quan hệ PROJ thành PROJ1 và PROJ2
dùng các vị từ cơ bản: Budget <= 100000 và Budget
> 100000
Ta được 2 quan hệ:
PROJ1 = δ budget <= 100000 (PROJ)
PROJ2 = δ budget > 100000 (PROJ)
Trang 23Phân mảnh ngang dẫn xuất
Là sự phân mảnh quan hệ member dựa trên cơ sở phân mảnh quan hệ owner
Cho trước đường nối L, ta có: Owner(L) = S và
Member(L) = R Định nghĩa các mảnh ngang dẫn xuất của R như sau:
Ri = R Φ Si với i=1 s
s: số lượng các mảnh ngang trên S
Si = δFi(S) là mảnh ngang nguyên thủy được xây dựng
từ vị từ hội sơ cấp Fi
Φ: phép kết bằng trên khóa của member và owner
Trang 24Phân mảnh ngang dẫn xuất (tt)
Ví dụ: Xét quan hệ PAY và EMP trong sơ đồ bên trên
Quan hệ PAY có: MPAY = {m1: sal<=3500; m2: sal>3500}
Vậy PAY có hai phân mảnh: PAY1 và PAY2
PAY1 = δsal<=3500 (PAY)
PAY2 = δsal>3500 (PAY)
Ta sẽ được hai phân mảnh ngang dẫn xuất:
EMP1 = EMP Φ PAY1
EMP2 = EMP Φ PAY2
Trang 25 Cực tiểu: Một vị từ là thừa nếu không có ứng dụng nào truy xuất đến mảnh do nó sinh ra
Trang 26HF – Các bước thực hiện (tt)
Bước 2: Tính tập vị từ hội sơ cấp từ tập đầy đủ và cực tiểu
Bước 3: Loại bỏ những vị từ hội sơ cấp vô nghĩa
Bước 4: Thuật toán tìm tập vị từ hội sơ cấp có nghĩa (thuật toán Phorizontal)
Trang 27Bước 1 – Thuật toán com_min (1)
Quy tắc cơ bản:
Một quan hệ hoặc một mảnh được phân hoạch thành
ít nhất 2 phần và chúng được truy xuất khác nhau bởi
ít nhất một ứng dụng
Thuật toán: Gọi fi của PR là mảnh fi được sinh ra từ một vị
từ hội sơ cấp trong PR
Đầu vào: R là quan hệ, PR là tập vị từ đơn giản
Đầu ra: PR’ là tập vị từ đơn giản và cực tiểu
Trang 28Bước 1 – Thuật toán com_min (2)
Tìm một pj thuộc PR sao cho pj phân hoạch một mảnh
fk của PR’ theo quy tắc cơ bản;
PR’=PR’ + {pj}; PR = PR - {pj}; F = F + {fj};
If tồn tại pk thuộc PR’ là một vị từ không có liên đới thì Begin PR’ = PR’ - {pk}; F = F-{fk}; End ;
End
Trang 29Bước 2
Tính tập vị từ hội sơ cấp từ tập đầy đủ và cực tiểu
Việc tính toán này rất dễ nhưng hay dẫn đến những tập vị từ hội sơ cấp lớn do việc tính toán máy móc
Việc giản ước tập vị từ hội sơ cấp được thực hiện ở bước 3
Trang 30Bước 3
Loại bỏ những vị từ hội sơ cấp vô nghĩa
Cách làm: xác định những vị từ mâu thuẫn với tập các phép kéo theo
Ví dụ: PR’={p1,p2}; giả sử Att là thuộc tính và {V1,V2} là miền thuộc tính của Att, ta có:
p1: Att=V1 và p2: Att=V2
Ta có các phép kéo theo
(Att=V1)→⌐(Att=V2)
⌐(Att=V )→ (Att=V )
Trang 32Bước 4 – Thuật toán PHORIZONTAL
Begin
PR’ = COM_MIN(R,PR);
Tính tập M các vị từ hội sơ cấp từ PR’;Tính tập I các phép kéo theo giữa các pi thuộc PR’;
For mỗi mi thuộc M do
IF mi mâu thuẫn với I then M = M - {mi};
Trang 34Phân mảnh dọc – Hướng tiếp cận
Phân mảnh dọc là bài toán rất phức tạp Có hai hướng tiếp cận chính đã được nghiên cứu:
Phương pháp nhóm: Khởi đầu bằng tập các mảnh, mỗi mảnh có một thuộc tính, tại mỗi bước ghép một
số mảnh lại cho đến khi thỏa một tiêu chí nào đó
Phương pháp tách: Tại mỗi bước tìm một phân hoạch có lợi cho việc truy xuất của ứng dụng trên các thuộc tính của nó
Trong hai phương pháp trên thì phương pháp tách tỏ ra hiệu quả hơn
Trang 35Phân mảnh dọc – Hướng tiếp cận
Hướng tiếp cận bằng phương pháp tách gồm 3 bước
sau:
Xây dựng ma trận ái lực thuộc tính (attribute affinity
matrix)
Sử dụng thuật toán gom cụm (clustering algorithm)
để gom nhóm các thuộc tính dựa trên ma trận ái lực thuộc tính clustered affinity matrix
Sử dụng thuật toán phân hoạch (partitioning
algorithm)
Trang 36 Thông tin dùng để phân mảnh dọc có liên quan đến các ứng dụng, một mảnh dọc thường chứa các thuộc tính thường xuyên được truy xuất chung bởi một ứng dụng.
Người ta đã tìm cách lượng hóa khái niệm này bằng một
số đo gọi là “ái lực” (affinity)
Có thể tính được khi biết được tần số truy xuất tới các thuộc tính đó của ứng dụng
Trên cơ sở khái niệm “ái lực” và tính được độ sử dụng thuộc tính của các câu vấn tin của ứng dụng người ta đã xây dựng giải thuật tách rất hữu hiệu
Phân mảnh dọc – Thông tin yêu cầu
Trang 37 Gọi Q = {q1, q2, …, qm} là tập các câu vấn tin sẽ truy xuất trên quan hệ R(A1, A2, …, Am)
Với mỗi câu vấn tin qi và thuộc tính Aj, chúng ta sẽ đưa
ra một giá trị sử dụng thuộc tính, ký hiệu là use(qi, Aj)
được định nghĩa như sau:
Phân mảnh dọc – Thông tin yêu cầu
Trang 38 Ví dụ: Xét CSDL với quan hệ PROJ(PNo, PName, Budget, Loc)
Giả sử có 4 ứng dụng như sau:
q1: Tìm ngân sách của dự án theo mã số
SELECT Budget
FROM PROJ WHERE PNo = Value
q2: Tìm tên và ngân sách của tất cả các dự án
SELECT PName, Budget
Phân mảnh dọc – Ví dụ
Trang 39 Ví dụ (tt):
q3: Tìm tên của dự án theo vị trí
SELECT PName
FROM PROJ WHERE Loc = Value
q4: Tìm tổng ngân sách của dự án tại mỗi vị trí
SELECT SUM(Budget) FROM PROJ
WHERE Loc = Value
Phân mảnh dọc – Ví dụ
Trang 40 Để thuận tiện, đặt A1 = PNo, A2 = PName, A3 = Budget, A4
00
10
10
01
10
01
01
Trang 41 Số đo ái lực (Affinity) của hai thuộc tính Ai, Aj ký hiệu là
aff(Ai, Aj) biểu thị cho cầu nối (bond) giữa hai thuộc tính, dựa vào sự truy xuất của các ứng dụng
ref l (q k ) là số truy xuất đến các thuộc tính (Ai, Aj) cho mỗi ứng dụng của qk tại vị trí l
acc l (q k ) là tần số truy xuất ứng dụng qk tại vị trí l
) (
) (
) ,
(
1 ) , ( 1
) , (
|
k l
k Aj
qk use Ai
qk use
l q acc q ref
A A
Trang 42 Xét lại ví dụ trên và để cho đơn giản chúng ta giả sử
refl(qk)=1 và số mảnh là 3, số đo tần số truy xuất ứng dụng giả thuyết như sau:
acc1(q1) = 15 acc2(q1) = 20 acc3(q1) = 10
acc1(q2) = 5 acc2(q2) = 0acc3(q2) = 0
acc1(q3) = 25 acc2(q3) = 25 acc3(q3) = 25
acc1(q4) = 3 acc2(q4) = 0 acc3(q4) = 0
Ma trận ái lực thuộc tính – Ví dụ
Trang 43 Như vậy số đo ái lực giữa hai thuộc tính A1 và A3 là:
11
00
10
10
01
10
01
01
3
2525
25
00
5
1020
()
,(A A ref q acc q
Trang 44 Vậy ma trận ái lực thuộc tính đầy đủ như sau:
Ma trận ái lực thuộc tính – Ví dụ
78 3
75 0
3 53
5 45
75 5
80 0
0 45
0 45
Trang 45Thuật toán gom cụm
Thuật toán gom cụm (Clustering Algorithm)
Mục tiêu của thuật toán này là tìm một phương pháp
để nhóm các thuộc tính của một quan hệ lại dựa trên các giá trị ái lực thuộc tính trong AA
Thuật toán BEA (Bond Energy Algorithm), tác giả Hofer & Severance, 1975 và Navathe et al, 1984
Ý tưởng: Từ ma trận ái lực thuộc tính AA sinh ra ma trận ái lực cụm CA (Cluster affintity matrix) dựa trên các hoán vị hàng và cột Hoán vị được thực hiện sao cho số đo ái lực chung AM (global affinity measure) là
Trang 46Số đo ái lực chung – AM
Trong đó:
Vì ma trận AA có tính đối xứng nên ta có:
)]
, (
) ,
(
) ,
( )
, ( )[
, (
1 1
1
1
A A
aff A
A aff
A A
aff A
A aff
A A aff
AM
j i
j i
j i
j i
j
n i
n j
+
0)
,()
,(
),
()
,(A0 A = aff A A0 = aff A +1 A = aff Ai A +1 =
)]
, ( )
, ( )[
,
aff
AM = ∑∑n n i j i j− + i j+
Trang 47Số đo ái lực chung – AM (tt)
Chúng ta định nghĩa cầu nối (bond) giữa hai thuộc tính
Ax, Ay như sau:
Do đó:
)] ,
( )
, ( )
, ( )
, (
1 1
A A A
A A
A A
x z
y
x A aff A A aff A A A
bond
1
),
()
,()
,(
]),
()
,(
[
1
1 1
j
j A bond A A A
bond AM
Trang 48 Bây giờ chúng ta xét n thuộc tính sau:
A1 A2 … Ai-1 Ai Aj Aj+1 … An
Số đo ái lực chung cho các thuộc tính này là:
AM old = AM ’ + AM ’’ + bond(A i-1 , A i ) + bond(A i , A j ) + bond(A j , A i ) + bond(A j , A j+1 )
=
)]
, ( )
, ( [
)]
, ( )
, (
+ +
∑
∑
n
l l i
l
l l
A A bond A
A bond
A A bond A
A bond
Số đo ái lực chung – AM (tt)
Trang 49 Khi đặt một thuộc tính mới Ak giữa các thuộc tính Ai và Ajthì số đo ái lực chung mới là:
AMnew = AM’ + AM’’ + bond(Ai, Ak) + bond(Ak, Ai)
+ bond(Ak, Aj) + bond(Aj, Ak) = AM’ + AM’’ + 2bond(Ai, Ak) + 2bond(Ak, Aj)
Vì vậy, đóng góp thực cho số đo ái lực chung khi đặt Akgiữa Ai và Aj là:
cont(Ai, Ak, Aj) = AMnew- AMold
= 2bond(A, A ) + 2bond(A , A) – 2bond(A, A)
Đóng góp thực – Net contribution
Trang 50 Ví dụ: Xét ma trận AA được tính ở trên, tính đóng góp thực khi chuyển thuộc tính A4 vào giữa các thuộc tính A1
Đóng góp thực – Net contribution
Trang 52 Quá trình sinh ma trận ái lực cụm (CA) gồm 3 bước:
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
Thực hiện lặp: Lấy lần lượt 1 trong n-i cột còn lại (i là
số cột đã được đặt vào CA) và thử đặt vào i+1 vị trí còn lại trong ma trận CA Chọn đặt sao cho AM là lớn nhất Lặp đến hết các cột
Sắp thứ tự hàng: Khi thứ tự cột đã xác định, các hàng cũng cần đặt lại để các vị trí tương đối của
Thuật toán BEA
Trang 53 Input: Ma trận ái lực thuộc tính AA
For i:=1 To index-1 Do
Tính cont(Ai-1, Aindex, Ai);
Thuật toán BEA
Trang 54Tính cont(Aindex-1, Aindex, Aindex+1);
loc := Nơi đặt được chọn bởi giá trị cont lớn nhất
For j:=index DownTo loc Do
CA(*, j) := CA(*, j-1);
End For
CA(*, loc) := AA(*, index);
index := index + 1;
End //End While
Thuật toán BEA (tt)
Trang 55 Với những kết quả tính toán ở các ví dụ trên, chúng ta xem xét quá trình tạo CA như sau:
Bước 1: Khởi gán
Thuật toán BEA – Ví dụ
783
750
353
545
755
800
045
045
800
045
Trang 56Thuật toán BEA – Ví dụ (tt)
Bước 2: Xác định thứ tự cho A3
Tính:
cont(A0, A3, A1)
cont(A1, A3, A2)
cont(A2, A3, A4)
z y
, ( )
, (
) , ( 2
) , ( 2
) , ( 2
) , , (A i A k A j bond A i A k bond A k A j bond A i A j cont = ⋅ + ⋅ − ⋅
)()
()
,(A A ref l q k acc l q k
Trang 58 Bước 2: Xác định thứ tự cho A4
Thuật toán BEA – Ví dụ (tt)
783
750
353
545
755
800
045
045
0
5 53
45
80 5
0
0 45
5345
7580
50
00
4545
A1 A3 A2 A4
Trang 59 Bước 3: Sắp thứ tự hàng
Nếu ma trận CA lớn ta sẽ thấy có nhiều cụm hơn vì vậy
sẽ dẫn đến có nhiều phân hoạch để lựa chọn hơn
Thuật toán BEA – Ví dụ (tt)
7875
30
35
5345
7580
50
00
4545
30
7580
50
35
5345
00
4545
Trang 60 Từ ma trận CA (Clustered Affinity matrix) chúng ta cần định nghĩa nơi để phân hoạch các thuộc tính để tạo ra một mảnh.
Phân hoạch thuộc tính
7875
30
7580
50
35
5345
00
4545
Trang 61 Xét tập ứng dụng Q = {q1, q2, …, qt}, ta định nghĩa:
AQ(qi) = {Aj|use(qi, Aj)=1}: Tập thuộc tính được truy xuất bởi ứng dụng qi
TQ = {qi|AQ(qi) ⊆ TA}: Tập ứng dụng chỉ truy xuất TA
BQ = {qi|AQ(qi) ⊆ BA}: Tập ứng dụng chỉ truy xuất BA
OQ = Q - {TQ U BQ}
Phân hoạch thuộc tính
Trang 62 Giả sử có n thuộc tính của một quan hệ, thì chúng ta có
n-1 vị trí có thể chọn cho điểm phân chia Vị trí tốt nhất
để chọn sao cho tổng các truy xuất chỉ một mảnh là lớn nhất còn tổng truy xuất hai mảnh là nhỏ nhất
Vì vậy, chúng ta định nghĩa phương trình chi phí như sau:
Thuật toán phân hoạch thuộc tính
Trang 63 Tìm một điểm phân chia x (1 ≤ x < n) sao cho:
Trang 64 Input:
Ma trận ái lực cụm CA
Quan hệ R
Ma trận sử dụng thuộc tính ref
Ma trận tần số truy xuất acc
Tập thuộc tính khóa chính K của R
Output: Tập các mảnh dọc F
Thuật toán PARTITION
Trang 65Thuật toán PARTITION
Trang 66if z > best then Begin
best = z Ghi nhận vị trí phân hoạch trong dịch chuyển
End if End For
call SHIFT(CA)
until no more SHIFT is possiple
reconstruct the matrix according to the shift position
R1 := ΠTA(R) U K
R2 := ΠBA(R) U K
Thuật toán PARTITION
Trang 67Thuật toán phân hoạch thuộc tính
Ví dụ: Xét lại ví dụ trên
z = CTQ * CBQ – COQ 2
11
00
10
10
01
10
01
01
3
2525
25
00
5
1020
Trang 68Ví dụ (tt)
TA BA TQ BQ OQ CTQ CBQ COQ z
A1 A3,2,4 Q2,3,4 Q1 0 83 45 -2025 A1,3 A2,4 Q1 Q3 Q2,4 45 75 8 3367
Trang 69Phân mảnh hỗn hợp
Trong hầu hết những trường hợp dùng phân mảnh ngang hoặc phân mảnh dọc của một mô hình dữ liệu thì không đủ để thỏa mãn
những yêu cầu của chương trình ứng dụng người dùng phân
mảnh kết hợp (hay còn gọi là phân mảnh hỗn hợp hay phân mảnh
tổ hợp)
Trang 70 Để tái xây dựng mối quan hệ tổng thể ban đầu trong trường hợp của phân mảnh kết hợp, một phân mảnh kết hợp bắt đầu tại những nút lá của cây phân chia và di chuyển ngược lên bằng việc nối ghép (joins) và hợp nhất (unions)
∪
Phân mảnh hỗn hợp
Trang 71Phân bổ (Allocation)
Vấn đề trong phân bổ
Những thông tin yêu cầu
Mô hình phân bổ
Trang 73Chúng ta hãy xem xét công thức rất đơn giản để tiếp cận vấn
đề tối ưu Đối với thời gian chúng ta chỉ xem xét trên một phân
mảnh đơn lẻ F k Chúng ta đưa ra một số các giả định và các
định nghĩa mà chúng ta có thể thực hiện được các mô hình về vấn đề phân bổ
1 Giả sử Q có thể thay đổi để nó có thể nhận ra việc cập
nhật và những truy vấn thu hồi
Trang 742 Giả sử rằng chi phí trao đổi là khác biệt đối với
những cập nhật và thu nhận để có thể được xác định như sau: