Cơ sở dữ liệu được tổ chức và lưu trữ ở những vị trí khác nhau trong mạng máy tính và chương trình ứng dụng làmviệc trên cơ sở truy cập dữ liệu ở những điểm khác nhau đó.. Để giải quyết
Trang 1Đại Học Quốc Gia TP.HCM
Trường Đại Học Công Nghệ Thông Tin
TIỂU LUẬN MÔN
CƠ SỞ DỮ LIỆU NÂNG CAO
Trang 2-NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Trang 3
MỤC LỤC I GIỚI THIỆU 4
II NỘI DUNG 5
1 Phân mảnh dọc 5
2 Yêu cầu thông tin của phân mảnh dọc 6
a) Ma trận sử dụng thuộc tính, ma trận tần xuất truy cập, Ma trận ái lực thuộc tính 7
b) Thuật toán gom cụm 9
c) Thuật toán năng lượng liên kết BEA 10
d) Thuật toán phân hoạch 14
e) Kiểm tra tính đúng đắn 19
3 CHẠY CHƯƠNG TRÌNH (vf.exe) 20
4 CÀI ĐẶT CHƯƠNG TRÌNH 22
III KẾT LUẬN 24
IV TÀI LIỆU THAM KHẢO 25
Trang 4I GIỚI THIỆU
Những năm gần đây, hệ cơ sở dữ liệu phân tán được phát triển dựa trên cơ sở dữliệu và mạng máy tính Cơ sở dữ liệu phân tán gồm nhiều cơ sở dữ liệu tích hợp lại vớinhau thông qua mạng máy tính để trao đổi dữ liệu, thông tin Cơ sở dữ liệu được tổ chức
và lưu trữ ở những vị trí khác nhau trong mạng máy tính và chương trình ứng dụng làmviệc trên cơ sở truy cập dữ liệu ở những điểm khác nhau đó
Ngày nay, mô hình hoạt động của các tổ chức, công ty, doanh nghiệp, đơn vị kinhdoanh thường được tổ chức gồm nhiều cơ sở, chi nhánh, ở những địa điểm xa nhau
Để giải quyết vấn đề tổ chức sao cho kinh doanh có hiệu quả nhất và nắm bắt thông tinnhanh nhất thì việc xây dựng một hệ thống làm việc trên cơ sở dữ liệu phân tán là phùhợp xu hướng hiện nay vì hệ thống này thoả mãn được những yêu cầu tổ chức của đơn vị.Lợi điểm về tổ chức và kỹ thuật của xu hướng phát triển cơ sở dữ liệu phân tán là: giảiquyết được những hạn chế của cơ sở dữ liệu tập trung và phù hợp xu hướng phát triển tựnhiên với cơ cấu không tập trung của các tổ chức, công ty, doanh nghiệp
Nói một cách đơn giản, cơ sở dữ liệu phân tán là tập hợp dữ liệu logic thuộc vềcùng một hệ thống nhưng trải rộng ra nhiều điểm trên mạng máy tính Như vậy có haivấn đề của cơ sở dữ liệu phân tán với tầm quan trọng tương đương nhau:
Việc phân tán: Trong thực tế dữ liệu không đặt trên cùng một vị trí vì vậy đây làđặc điểm để phân biệt cơ sở dữ liệu phân tán với cơ sở dữ liệu tập trung và cơ sở dữ liệuđơn lẻ
Liên quan logic: Trong cơ sở dữ liệu phân tán, dữ liệu có một số đặc tính liên kếtchặt chẽ với nhau như tính kết nối, tính liên quan logíc Trong cơ sở dữ liệu tập trung,mỗi vị trí quản lý một cơ sở dữ liệu và người sử dụng phải truy cập đến cơ sở dữ liệu ởnhững vị trí khác nhau để lấy thông tin tổng hợp
Xây dựng một hệ CSDL phân tán là xu hướng hiện nay vì nó có nhiều ưu điểmnhư ưu điểm về tổ chức và tính kinh tế, tận dụng những cơ sở dữ liệu sẵn có (hình thành
cơ sở dữ liệu phân tán từ các cơ sở dữ liệu tập trung có sẵn ở các vị trí địa phương), thuận
Trang 5lợi cho nhu cầu phát triển, Giảm chi phí truyền thông, tăng khả năng thực hiện công việcthực hiện (do xử lý song song tại nhiều vị trí), …
Vấn đề là xây dựng và cài đặt một cơ sở dữ liệu phân tán Cần giải quyết vấn đềxây dựng và cài đặt cơ sở dữ liệu phân tán cụ thể như vấn đề thiết kế phân tán, thiết kế cơ
Phân mảnh dọc cho một quan hệ R sinh ra các mảnh R1, R2, …, Rn Mỗi mảnh con
Ri chứa một tập con các thuộc tính của R và cả khóa của 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 để nhiều ứng dụng chỉ cầnchạy trên một mảnh (các mảnh được bố trí tại các vị trí thích hợp) Một phân mảnh “tốiưu” là một phân mảnh sinh ra một lược đồ phân mảnh cho phép giảm tối đa thời gianthực thi các ứng dụng chạy trên các mảnh đó (cục bộ hóa các dữ liệu cần, tiết kiệm thờigian và chi phí truyền dữ liệu qua mạng)
Phân mảnh dọc tối ưu khó và phức tạp hơn phân mảnh ngang Có 2 cách tiếp cậnheuristic:
Nhóm thuộc tính: bắt đầu bằng cách gán mỗi thuộc tính cho một mảnh, và
tại mỗi bước nối một số mảnh lại cho đến khi thỏa một tiêu chuẩn nào đó
Kỹ thuật này được đề xuất lần đầu trong [Hammer and Niamir, 1979] chocác CSDL tập trung và sau này được dùng trong [Sacca and Wiederhold,1985] cho các CSDL phân tán
Trang 6 Tách mảnh: bắt đầu bằng một quan hệ và quyết định cách phân hoạch có lợi
dựa trên hành vi truy xuất của các ứng dụng trên các thuộc tính Kỹ thuậtnày được thảo luận lần đầu cho thiết kế CSDL tập trung trong [Hoffer andSeverance, 1975] và sau đó được mở rộng cho môi trường phân tán trong[Navathe et al., 1984]
Ở đây, ta chỉ xét kỹ thuật tách mảnh vì nó thích hợp với phương pháp thiết kế từtrên xuống hơn Măt khác, như được khẳng định trong [Navathe et al., 1984], giải pháptối ưu có lẽ gần với quan hệ đầy đủ hơn là một tập các mảnh chỉ có một thuộc tính Hơnnữa, kỹ thuật tách mảnh sinh ra các mảnh không gối chồng lên nhau Trong khi phươngpháp nhóm thuộc tính thường tạo ra các mảnh gối chồng lên nhau
Việc tách mảnh chỉ đề cập các thuộc tính không tham gia vào khóa chính Tuynhiên, để bảo toàn tính toàn vẹn ngữ nghĩa, các mảnh đều chứa thuộc tính khóa Đó chính
là việc nhân bản cho khóa của quan hệ toàn cục trong các mảnh Đây là một đặc trưngcủa phân mảnh dọc cho phép tái tạo lại quan hệ toàn cục
Những thông tin chính cần cho phân mảnh dọc có liên quan đến các ứng dụng.Phân mảnh dọc đặt vào trong một mảnh các thuộc tính thường được truy xuất chung vớinhau người ta đặt ra một giá trị đo thể hiện tính thường đi chung với nhau Đại lượngnày được gọi là “ái lực” (affinity) của các thuộc tính
Yêu cầu dữ liệu chính liên quan đến các ứng dụng là tần số truy xuất (accessfrequency) của chúng Gọi Q = {q1, q2, …,qq} là tập các câu truy vấn của người dùng (cácứng dụng) sẽ chạy trên quan hệ R(A1, A2, …, An) Với mỗi câu truy vấn qi và mỗi thuộctính Aj người ta đưa ra một giá trị sử dụng thuộc tính (attribute usage value), ký hiệu làuse(qi,Aj) và được định nghĩa như sau:
use(q i , A j)={1 nếu thuộc tính Aj đượctruy vấn qitham chiếu 0 trong trường hợpngược lại
Trang 7a) Ma trận sử dụng thuộc tính, ma trận tần xuất truy cập, Ma trận ái lực thuộc tính
Maintenance
150000135000250000310000
MontrealNew YorkNew YorkParis Giả sử các ứng dụng sau chạy trên quan hệ PROJ
Q1: tìm ngân sách của một dự án nếu biết mã số dự án
SELLECT BUDGET
WHERE PNO = Value
Q2: Tìm tên và ngân sách của tất cả mọi dự án
SELECT PNAME, BUDGET
Q3: Tìm tên của các dự án được thực hiện tại một thành phố đã cho
WHERE LOC = Value
Q4: Tìm tổng ngân sách dự án cho mỗi thành phố
Trang 8Giá trị sử dụng được định nghĩa dưới dạng ma trận (trong đó số hạng (i,j) biểu thịuse(qi,Aj)
Để cho đơn giản, giả sử rằng refl(qk) = 1 cho tất cả qk và Sl Nếu tần số ứng dụnglà:
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
Hay viết lại dưới dạng ma trận tần xuất truy cập các câu truy vấn tại các Site (vịtrí):
Trang 9acc l(q k)=acc1(q1)+acc2(q1)+acc3(q1)=45
Kết quả tính toán là một ma trận n x n, mỗi phần tử của nó là một trong các số đođược định nghĩa ở trên Chúng ta gọi nó là ma trận ái lực thuộc tính AA (attribute affinitymatrix)
b) Thuật toán gom cụm
Nhiệm vụ kế tiếp là từ ma trận ái lực AA và tổ chức lại các thứ tự của thuộc tính
để tạo các cụm có các thuộc tính ứng với cụm có độ ái lực cao hơn cụm khác
Trong [Hoffer and Severance, 1975] và [Navathe et al., 1984] đề xuất dùng thuậttoán năng lượng liên kết BEA (bond energy algorithm)
Thuật toán năng lượng liên kết BEA nhận đầu vào là ma trận ái lực thuộc tính AA,thực hiện việc hoán vị các hàng cột để sinh ra ma trận ái lực gom cụm CA (clusteredaffinity matrix) Hoán vị được thực hiện sao cho số đo ái lực chung AM (global affinitymeasure) là lớn nhất
aff(A0,Aj) = aff(Ai,A0) = aff(An+1,Aj) = aff(Ai,An+1) = 0
các điều kiện này đề cập đến các trường hợp một thuộc tính được đặt vào CA ởbên trái của thuộc tính ở cột đầu tiên hoặc bên phải của thuộc tính cột cuối cùng trong cáchoán vị cột và bên trên của hàng trên cùng hay bên dưới hàng cuối cùng trong các hoán vịhàng
Trang 10Hàm cực đại chỉ xét những lân cận gần nhất, vì thế nó gom cụm các giá trị lớn vớinhau và các giá trị nhỏ với nhau Vì ma trận ái lực thuộc tính AA có tính đối xứng nên ta
có thể viết lại công thức trên như sau:
aff ( A i , A j)[aff(A i , A j −1)+aff(A i , A j +1)]
c) Thuật toán năng lượng liên kết BEA
Nhập: ma trận AA
Xuất: Ma trận ái lực gom cụm CA là một sắp xếp của các hoán vị AA
Khởi tạo: Đặt và cố định một trong các cột của AA vào CA
Lặp: Đặt n-i cột còn lại vào i+1 vị trí còn lại trong ma trận CA Đối với từngcột, chọn vị trí đóng góp (contribution) lớn nhất vào độ đo ái lực toàn cục
Sắp thứ tự dòng: Sắp xếp các dòng theo thứ tự cột
Begin
// khởi gán, nhớ AA là ma trận n x n CA(*, 1) AA(*, 1)
CA(*, 2) AA(*, 2) Index 3
While index <= n do //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
CA(*, j) CA(*, j-1)
Trang 11End 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 ái lực mang ý nghĩa gì
Số đo ái lực chung cho những thuộc tính này có thể được viết là:
AMAM’old = AM’ + AM” + bond(Ai-1,Ai) + bond(Ai,Aj) + bond(Aj,Ai) + bond(Aj,Aj+1)
AM”
Trang 12[bond(A l , A l−1)+bond(A l , A l+1) ]+2bond ( A i , A j)
Bây giờ xét 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 ái lực gom cụm CA Số đo ái lực chung mới có thể viết như sau
AM new=A M '
+AM + bond left ({A} rsub {i} , {A} rsub {k} right ) + bond left ({A} rsub {k} , {A} rsub {i} right ) +bond left ({A} rsub {k} , {A} rsub {j} right ) + bond left ({A} rsub {j} , {A} rsub {k} right
AM new=A M '+AM + 2bond left ({A} rsub {i} , {A} rsub {k} right ) +2bond left ({A} rsub {k} , {A} rsub {j} right
Do đó, đóng góp thực (net contribution) cho số đo ái lực chung khi đặt thuộc tính
Ak giữa Ai và Aj là
cont(A i , A k , A j)=AM new−AM old
cont(A i , A k , A j)=2 bond(A i , A k)+2 bond(A k , A j)−2 bond(A i , A j)
Thí dụ về xét quá trình gom cụm các thuộc tính của quan hệ PROJ
Theo thuật toán BEA, đầu tiên, ta chép cột 1(A1) và cột 2 (A2) của ma trận AA vào
ma trận CA
Bắt đầu từ cột thứ 3 (A3): ta lần lượt đặt cột A3 vào 3 nơi có thể và tính đóng góp
vào độ đo ái lực chung của mỗi khả năng này
Bên trái cột 1 (thứ tự 0 – 3 – 1)
cont(A0, A3, A1)=2 bond(A0, A3)+2 bond(A3, A1)−2 bond(A0, A3)Với:
bond(A0, A3)=bond(A0, A3)=0
bond(A3, A1)=45∗45+5∗0+53∗45+3∗0=4410 cont(A0, A3, A1)=8820
Trang 13bond(A3, A4)=bond(A2, A4)=0 cont(A2, A3, A4)=1780
Do đóng góp của thứ tự (1-3-2) là lớn nhất nên ta đặt cột A3 vào giữa cột A1 và A2
(hình b)
Trang 14Tính toán tương tự cho cột A4 chỉ ra rằng cần phải đặt cột A4 bên phải của cột A2.(hình c)
Cuối cùng, sắp lại thứ tự hàng như thứ tự cột ta được ma trận CA như hình d
d) Thuật toán phân hoạch
Chia tập các thuộc tính gom cụm {A1, A2, …, Am} thành hai (hay nhiều hơn) cáctập {A1, A2, …, Ai} và {Ai+1, …, Am} sao cho không có (hay có tối thiểu) các ứng dụngtruy cập cả hai (hay nhiều hơn) các tập hợp chia này
Xét ma trận ái lực gom cụm CA như hình dưới đây
Trang 15Điểm x trên đường chéo xác định 2 tập : tập {A1, A2, …, Ai} nằm ở góc trên bêntrái, còn tập {Ai+1, …, Am} Gọi tập thứ nhất là TA và tập thứ hai là BA
CBQ = tổng số các truy cập đến thuộc tính bởi ứng dụng chỉ truy cập BA
COQ = tổng số các truy cập đến thuộc tính bởi ứng dụng truy cập cả TA vàBA
Ở đây, nảy sinh bài toán tối ưu hóa Nếu có m thuộc tính trong một quan hệ thì sẽ
có n – 1 vị trí có thể là điểm phân chia trên đường chéo của ma trận ái lực gom cụm CAcủa quan hệ đó Vị trí tốt nhất để phân chia là vị trí tạo ra các tập TQ và BQ sao cho tổng
Trang 16các truy xuất chỉ một mảnh là lớn nhất và tổng các truy xuất cả hai mảnh là nhỏ nhất Vìthế, chúng ta định nghĩa các công thức tính chi phí như sau
Thuật toán PARTITION
// Nhập: CA: ma trận ái lực gom cụm, R: quan hệ, use: ma trận sử dụng thuộc tính,acc: ma trận tần số truy xuất
do {xác định cách phân hoạch tốt nhất}
Begin
For i from n-2 to 1 by -1 do
Trang 17Tính CTQi Tính CBQi Tính COQi
z := CTQi* CBQi – COQi 2
if z > best then begin
best := z Ghi nhận điểm tách vào hành động xê dịch end-if
end-for gọi SHIFT(CA) end-begin
until không thể thực hiện SHIFT được nữa xây dựng lại ma trận theo vị trí xê dịch R1 := πTA(R) K {K là tập thuộc tính khóa chính của R}
R2 := πBA(R) K
F := {R1, R2}
end {PARTITION}
Trang 18Áp dụng thuật toán cho ma trận CA trong thí dụ trên có 3 phương án chia
BQ = {q2,q3,q4} (BQ gồm những truy vấn q mà có AQ(q) là "con" của BA)
OQ = {q2,q4} (OQ gồm những truy vấn q còn lại của Q.)
CTQ
Trang 19TQ = {q1,q2} (TQ gồm những truy vấn q mà có AQ(q) là "con" của TA)
BQ = { } (BQ gồm những truy vấn q mà có AQ(q) là "con" của BA)
OQ = {q3,q4} (OQ gồm những truy vấn q còn lại của Q.)
Chọn phương án chia 2 Tức là chia thành mảnh { A1 ,A3} và {A2,A4}
Kết quả cuối cùng của việc phân mảnh dọc quan hệ PROJ từ thí dụ xét ở trên cho
ta 2 mảnh
PROJ1 = {A1, A3} = {PNO, BUDGET}
PROJ2 = {A1, A2, A4} = {PNO, PNAME, LOC}
e) Kiểm tra tính đúng đắn
i Tính đầy đủ
Được bảo đảm bằng thuật toán PARTITION vì mỗi thuộc tính của quan hệ toàncục được đưa vào một trong các mảnh Với điều kiện là tập thuộc tính A của quan hệ Rthỏa
Trang 20A = Ri
Thì tính đúng đắn của phân mảnh dọc được bảo đảm
ii Tính tái thiết được
Có thể xây dựng lại quan hệ ban đầu bằng phếp nối Đối với qua hệ R có phânmảnh dọc FR = {R1, R2, …, Rr} và các thuộc tính khóa K
R=⋈ K R i ∀ R i ∈ F R
Do vậy, nếu điều kiện mỗi Ri là đầy đủ, phép toán nối sẽ tái thiết lại đúng R.Mộtđiểm quan trọng đó là mỗi Ri phải chứa các thuộc tính khóa của R hoặc chứa một mã TIDđược gán bởi hệ thống
iii Tính tách biệt
Tích tách biệt trong phân mảnh dọc không quan trọng như trong phân mảnhngang Có 2 trường hợp cần xem xét ở đây:
Nếu dùng TID thì các mảnh tách biệt vì TID được nhân bản trong mỗi mảnh đều
do hệ thống gán và là những thực thể đã được quản lý và người dùng hoàn toàn khôngnhìn thấy được
Nếu các thuộc tính khóa được nhân bản trong mỗi mảnh không thể nói chúngtách biệt theo đúng nghĩa thuật ngữ này Tuy nhiên, các khóa trùng lặp không được hệthống biết và quản lý và không có cùng kết quả như tình huống trùng lặp trong các mảnhđược phân mảnh ngang Nói cách khác, với điều kiện các mảnh “tách biệt” ở các thuộctính không phải khóa thì có thể tam.coi như là chúng tách biệt
Mở thư mục VF, click file vf.exe để chạy chương trình
Trang 21Giao diện chương trình
Chọn số thuộc tính, số query, và số Site bằng cách chọn từ các combobox (mỗi lần chọn
ma trận liên quan sẽ được reset -vẽ lại với giá trị mặc định 0)
Nhập giá trị cho ma trận sử dụng và ma trận tần xuất truy cập
Nhấp nút “Phân mảnh”
Chương trình cho kết quả
Trang 22Có thể lập lại cho bài toán khác bằng cách lập lại các bước trên.
Chương trình gồm class matran và một số hàm như mô tả bên dưới Lưu ý các matrận và một số control được khai báo động (run time) Ma trận được khai báo dưới dạngmảng Textbox 2 chiều
Source code của chương trình kèm theo đĩa CD nộp chung của lớp
class matran có các mảng Label (tên thuộc tính, site, query, …) và mảng Textbox
2 chiều
{
private int msohang=0;
private int msocot=0;
private Label[] mtenhang;
private Label[] mtencot;