Giới thiệu đề tàiTrong cuộc sống hiện đại ngày nay của chúng ta, sự bùng nổ của ngành công nghệ thông tin và sự tiện ích của Internet, nhu cầu sử dụng các dịch vụ như thương mại điện tử,
Trang 1ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
CAO HỌC KHÓA VI - KHÓA HỌC 2012 - 2014
********
Giáo viên hướng dẫn:
PGS TS Đỗ Phúc
Người thực hiện:
Trần Thị Kiều Diễm (MS: CH1101074)
Trang 1/1320/06/2024
Trang 21 Giới thiệu đề tài
Trong cuộc sống hiện đại ngày nay của chúng ta, sự bùng nổ của ngành công nghệ thông tin và sự tiện ích của Internet, nhu cầu sử dụng các dịch vụ như thương mại điện tử, giao dịch điện tử, quản lí công ty xuyên quốc gia,…đã rất được quan tâm và theo đó mô hình cơ sở dữ liệu phân tán được ra đời nhằm đáp ứng nhu cầu từ thực tiễn.
Trước hết, ta nên hiểu cơ sở dữ liệu phân tán không phải là một tập hợp những tập tin được lưu riêng lẻ tại mỗi nút của một mạng máy tính mà đó là những tập tin có tính liên đới logic, có cấu trúc chung và được truy xuất qua một giao diện chung Nhiệm vụ của các nhà quản trị cơ sở dữ liệu là đưa ra mô hình cơ sở
dữ liệu phân tán tối ưu nhất và một trong các chiến lược đó là phương pháp phân mảnh, thật sự trong một cơ sở dữ liệu thì dữ liệu đã được cấu trúc bằng các quan
hệ, tuy nhiên mỗi bộ trên một quan hệ không phải lúc nào cũng có tần số được truy xuất như nhau, do đó chúng ta cần phân mảnh các quan hệ thành các mảnh con sao cho những bộ có tần số truy xuất gần giống nhau sẽ được tổ chức trong cùng một mảnh Có 2 thuật toán phân mảnh là phân mảnh ngang và phân mảnh dọc.
Phạm vị bài thu hoạch này xin trình bày cơ sở lý thuyết của thuật toán phân mảnh dọc, từ một quan hệ cho trước với ma trận sử dụng và ma trận tần số truy xuất ta có được 2 mảnh con.
Để hoàn thành được bài thu hoạch này, em xin gửi lời cảm ơn đến thầy Đỗ Phúc đã nhiệt tình trong chỉ dẫn, với vốn kiến thức còn hạn hẹp nên chắc chắn nội dung còn nhiều điểm cần bổ sung chỉnh sửa, mong nhận được nhận xét, đóng góp của thầy, em xin cảm ơn
2 Mục tiêu đề tài:
Trình bày thuật toán phân mảnh dọc;
Xây dựng chương trình tự động phân mảnh cho một quan hệ khi biết ma trận sử dụng (use matrix) và ma trận tần số truy xuất (acc matrix).
Trang 2/1320/06/2024
Trang 3MỤC LỤC
PHẦN 1 LÍ THUYẾT VỀ PHÂN MẢNH DỌC 4
1 Một số khái niệm cần cho phân mảnh dọc: 4
a Ma trận sử dụng use(qi, Aj): 4
b Ma trận tần số truy xuất Acc(qi, Aj): 5
2 Giới thiệu các thuật toán dùng trong phân mảnh dọc 5
a Thuật toán tính độ đo ái lực Aff(Ai,Aj): 5
b Thuật toán gom cụm: 5
c Thuật toán năng lượng liên kết - Bond Energy Algorithm (BEA): 6
d Thuật toán tìm điểm chia (Split Point): 7
PHẦN 2 CHƯƠNG TRÌNH PHÂN MẢNH DỌC 10
1 Cấu trúc dữ liệu của chương trình: 10
2 Tổ chức chương trình: 10
3 Cài đặt chương trình: 10
PHẦN III NHẬN XÉT, ĐÁNH GIÁ, HƯỚNG PHÁT TRIỂN 11
TÀI LIỆU THAM KHẢO 11
Trang 3/1320/06/2024
Trang 4PHẦN 1 LÍ THUYẾT VỀ PHÂN MẢNH DỌC
1 Một số khái niệm cần cho phân mảnh dọc:
a Ma trận sử dụng use(qi, Aj):
Định nghĩa: Cho quan hệ R(A1 , , An), Q={q1, , qk} là tập các vấn
tin trên quan hệ R, với mỗi câu vấn tin qi và mỗi thuộc tính Aj ta định nghĩa giá trị sử dụng (attribute usage value) như sau:
j i
j i
j
i q khong tham chieu A
A chieu tham
q A
q use
0
1 ) , (
Ví dụ: Xét quan hệ PROJ gồm 4 thuộc tính {PNO; PNAME; BUDGET; LOC}
q 1 : Tìm ngân sách của dự án, cho biết mã số dự án
WHERE PNO = Value
q 2 : Tìm tên và ngân sách của tất cả dự án
SELECT PNAME, BUDGET
q 3 : Tìm tên của các dự án được thực hiện ở thành phố đã cho
WHERE LOC = Value
q 4 : Tìm tổng ngân sách các dự án được thực hiện ở thành phố đã cho
SELECT SUM(BUDGET)
WHERE LOC = Value
Trang 5Bài thu hoạch môn Cơ sở dữ liệu nâng cao
Đặt A1, A2, A3, A4 lần lượt là các thuộc tính của quan hệ PROJ, khi đó ta
có ma trận Use như sau:
1 1 0 0
1 0 1 0
0 1 1 0
0 1 0 1
4 3 2 1
4 3 2 1
q q q q
A A A A
b Ma trận tần số truy xuất Acc(qi, Aj):
Định nghĩa: Cho S={s1,…,sL} là tập các site, với mỗi câu vấn tin qi
và mỗi vị trí sj ta định nghĩa ma trận tần số truy xuất (access frequency matrix)
Acc(qi, sj), như sau: Acc(q i , s j ) = k, với mọi k>=0.
Ví dụ:
0 0 3
25 25 25
0 0 5
10 20 15
4 3 2 1
3 2 1
q q q q
s s s
2 Giới thiệu các thuật toán dùng trong phân mảnh dọc
a Thuật toán tính độ đo ái lực Aff(Ai,Aj):
Định nghĩa: Độ đo ái lực thuộc tính giữa 2 thuộc tính Aivà Aj của
quan hệ R[A1,A2,…,An] ứng với tập quan hệ Q = (q1, q2, …, qq) được định nghĩa
như sau:
Ví dụ: từ ma trận Acc đã có ở trên ta tính được ma trận Aff như sau:
Trang 678 3 75 0
3 53 5 45
75 5 80 0
0 45 0 45
4 3 2 1
4 3 2 1
A A A A
A A A A
b Thuật toán gom cụm:
Từ ma trận Aff ta tìm ma trận hoán vị của Aff sao cho tổng độ đo ái lực toàn cục là lớn nhất
Thuật toán năng lượng liên kết - Bond Energy Algorithm (BEA) được dùng để gom cụm sao cho độ đo ái lực toàn cục sau là lớn nhất:
neighbors)
r with thei Aj
and Ai of affinity (
j
i
AM
c Thuật toán năng lượng liên kết - Bond Energy Algorithm (BEA):
Input: Ma trận AA
Output: 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
Thuật toán:
1 Khởi tạo: Cố định một trong các cột của AA và đặt vào CA
2 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ừng cột, chọn vị trí đóng góp (contri bution) lớn nhất vào độ đo ái lực toàn cục
3 Sắp thứ tự hàng: Sắp xếp các dòng theo thứ tự cột
Tính các giá trị để tìm được vị trí đặt Ak vào vị trí thích hợp trong
CA đã được tạo ra tại bước 2
cont(Ai, Ak, Aj) = 2bond(Ai, Ak)+2bond(Ak, Al) –2bond(Ai, Aj)
Với:
n
y
A bond
1
) , ( ) , ( )
, (
Trang 7Bài thu hoạch môn Cơ sở dữ liệu nâng cao
Trường hợp thuộc tính Ak đặt vào vị trí bên trái đầu tiên hoặc vị trí bên phải cuối củng ta có
bond(A0,Ak ) = bond(Ak,Ak+1) = 0
Ví dụ: Xét ma trận AA và ma trận tương ứng CA với A1và A2 đã được
chọn đặt cố định Tìm vị trí đặt A3:
AA =
78 3 75 0
3 53 5 45
75 5 80 0
0 45 0 45
4 3 2 1
4 3 2 1
A A A A
A A A A
CA =
75 0
5 45
80 0
0 45 2
A
Thứ tự trước (0-3-1) :
cont(A 0 ,A 3 ,A 1 ) = 2bond(A 0 , A 3 )+2bond(A 3 , A 1 )–2bond(A 0 , A 1 )
= 2* 0 + 2* 4410 – 2*0 = 8820
Thứ tự giữa (1-3-2) :
cont(A 1 ,A 3 ,A 2 ) =2bond(A 1 , A 3 )+2bond(A 3 , A 2 )–2bond(A 1 ,A 2 )
=2* 4410 + 2* 890 – 2*225 = 10150
Thứ tự cuối (2-3-4) :
cont (A 2 ,A 3 ,A 0 )= 2bond(A 2 , A 3 )+2bond(A 3 , A 0 )–2bond(A 2 ,A 0 )
=1780
Do vậy ma trận CA có dạng:
CA=
75 3 0
5 53 45
80 5 0
0 45 45
2 3
A
Tương tự đặt A4 bên phải A2, sắp xếp lại ma trận cuối cùng của CA:
Trang 8CA =
78 75 3 0
75 80 5 0
3 5 53 45
0 0 45 45
4 2 3 1
4 2 3 1
A A A A
A A A A
d Thuật toán tìm điểm chia (Split Point):
Ý nghĩa của thuật toán là tìm một điểm trên đường chéo để chia {A1, A2, …,An} thành hai cụm {A1, A2, …, Ai} và {Ai+1, …, An} sao cho số ứng dụng truy cập cả hai là ít nhất và số ứng dụng truy cập mỗi cụm là lớn nhất
Xét ma trận ái lực gom cụm CA sau:
A 1 A i A i+1 A n
A 1
A i
A i+1
A n
Tập {A1, , Ai} ở góc trên trái và tập {A1+1, , An} ở góc dưới phải
Tập thứ nhất gọi là đỉnh (Top) và ký hiệu TA , tập thứ hai gọi là đáy (Bottom) và
ký hiệu BA.
Một số định nghĩa các phương trình chi phí
AQ(qi) = {Aj use(qi,Aj)=1}
TQ = tập các ứng dụng chỉ truy cập TA
= {qi AQ(qi) TA}
BQ = tập các ứng dụng chỉ truy cập BA
= {qi AQ(qi) BA}
OQ = tập các ứng dụng chỉ truy cập vừa TA và BA
= Q – (TQ BQ )
CTQ = tổng số các truy cập đến các thuộc tính bởi các ứng dụng chỉ
Trang 9Bài thu hoạch môn Cơ sở dữ liệu nâng cao
truy cập TA = q TQ s S j i j i
q acc q ref ( ) ( )
CBQ = tổng số các truy cập đến thuộc tính bởi ứng dụng chỉ truy cập
BA=
BQ
i j i j
q acc q ref ( ) ( )
COQ = tổng số truy cập đến thuộc tính bởi ứng dụng truy cập cả TA
và BA
= q OQ s S j i j i
q acc q ref ( ) ( )
Cuối cùng tính: CTQ*CBQ - COQ 2
Với ví dụ trên:
AQ(q1) = {A1, A3}
AQ(q2) = {A2, A3}
AQ(q3) = {A2, A4}
AQ(q4) = {A3, A4}
Chọn điểm chia lần lượt là A1, A2, A3, cuối cùng ta chong được điểm chia là A3 vì khi đó
TA={A1, A3}
BA={A2, A4}
TQ={q1}
BQ={q3}
OQ={q2, q4}
CTQ= 45 CBQ=75 COQ=8 CTQ*CBQ - COQ2 = 3311 (là max)
Vậy ta có hai phân mảnh: R1 = {A1, A3} và R2 = {A2, A4}
Trang 10PHẦN 2 CHƯƠNG TRÌNH PHÂN MẢNH DỌC
1 Cấu trúc dữ liệu của chương trình:
Khai báo các biến:
int q,n,s,key,m; // số query, số thuộc tính, số site, khóa chính, số thuộc tính chọn mặc định
int use[q][n], // ma trận sử dụng các thuộc tính của các ứng dụng
acc[q][s], // ma trận tần số truy xuất các thuộc tính của ứng dụng aff[n][n], // ma trận độ đo ái lực được tính từ 2 ma trận trên CA[n][n], // ma trận hoán vị của ma trận aff
acc_sum[q], // ma trận trung gian lưu giá trị tổng của mỗi hàng trong
ma trận acc
f[10], // ma trận chứa giá trị các thuộc tính của mảnh con TA1,TAn,BA1,BAn; // lần lượt là thuộc tính đầu tiên của TA, thuộc tính cuối cùng của TA, thuộc tính đầu tiên của BA, thuộc tính cuối cùng của BA
2 Tổ chức chương trình:
- Dùng hàm đọc các giá trị gồm số thuộc tính, số query, số site từ tệp
- Tính ma trận ái lực aff từ 2 ma trận đã cho là use và acc
- Từ ma trận ái lực aff ta tìm ma trận CA là hoán vị của ma trận aff bằng thuật toán BEA
- Chọn điểm chia trên đường chéo chính để xác định hai mảnh được chia bằng thuật toán VFA
- Các hàm cụ thể như sau:
void readfile(char path[20],int q, int n, int s, int key);
void ShowUse(int q, int n);
void ShowAcc(int q, int s);
void SolveAff(int n);
void ShowAff(int n);
Trang 11Bài thu hoạch môn Cơ sở dữ liệu nâng cao
int bond(int i,int j);
int cont(int i, int k, int j);
void seclectMaxCont();
void ShowCA(int n);
void BEA();
int TQ(int qi);
int BQ(int qi);
int CTQ();
int CBQ();
int COQ();
int selectPoint();
void showFragment();
void VFA();
void main()
{ printf("Moi nhap duong dan den tep vf.txt: "); scanf("%s\n",&path);
readfile(path, q, n, s, key);
ShowUse(q,n);
ShowAcc(q,s);
SolveAff(n);
ShowAff(n);
ShowCA(n);
BEA();
showFragment();
VFA();
getch();
}
Trang 123 Cài đặt và thử nghiệm chương trình:
(đính kèm file exe để thực thi chương trình)
4 Kết quả test:
Đã thử nghiệm và kết luận chương trình cho ra kết quả chính xác
Trang 13Bài thu hoạch môn Cơ sở dữ liệu nâng cao
PHẦN III NHẬN XÉT, ĐÁNH GIÁ, HƯỚNG PHÁT TRIỂN
chương trình còn dài dòng, hạn chế về ngôn ngữ lập trình cũng là điểm yếu khi không tạo được giao diện thân thiện cho người dùng mà chỉ chạy thực nghiệm trên Dos
có thể thực hiện trên ngôn ngữ thích hợp nhằm tối ưu thuật toán cả về không gian
và thời gian thực thi
TÀI LIỆU THAM KHẢO
o Giáo trình cao học về cơ sở dữ liệu nâng cao của Thầy PGS TS Đỗ
Phúc
o Giáo trình: nguyên lý các hệ cơ sở dữ liệu Phân tán _ Tập 1 của tác giả
M TaMer Ozsu biên dịch Trần Đức Quang
o Website: www.uit.edu.vn/forum trong phần cơ sở dữ liệu nâng cao
o Bài thu hoạch cơ sở dữ liệu nâng cao trên Group của các học viên cao học khóa 5