Tải bản đầy đủ (.doc) (14 trang)

Tiểu luận môn cơ sở dữ liệu nâng cao Lý thuyết Phân mảnh dọc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (373.49 KB, 14 trang )

ĐẠ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/1410/04/2015
LỜI NÓI ĐẦU
1. 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/1410/04/2015
MỤC LỤC
Trang 3/1410/04/2015
Bài thu hoạch môn Cơ sở dữ liệu nâng cao
PHẦ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(q
i
, A
j
):
− Định nghĩa: Cho quan hệ R(A
1
, , A
n
), Q={q
1
, , q
k
} là tập các vấn
tin trên quan hệ R, với mỗi câu vấn tin q
i

và mỗi thuộc tính A
j
ta định nghĩa giá
trị sử dụng (attribute usage value) như sau:



=
ji
ji
ji
Achieuthamkhongq
Achieuthamq
Aquse
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.
SELECT BUDGET
FROM PROJ
WHERE PNO = Value
q
2
: Tìm tên và ngân sách của tất cả dự án.
SELECT PNAME, BUDGET
FROM PROJ

q
3
: Tìm tên của các dự án được thực hiện ở thành phố đã cho
SELECT PNAME
FROM PROJ
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)
FROM PROJ
WHERE LOC = Value
Bà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:
1100
1010
0110
0101
4
3
2
1
4321
q
q
q
q
AAAA
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ụ:
003
252525
005
102015
4
3
2
1
321
q
q
q
q
sss
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(A
i
,A
j
):
− Đị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:
Bài thu hoạch môn Cơ sở dữ liệu nâng cao

783750
353545
755800
045045
4
3
2
1
4321
A
A
A
A
AAAA
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 theiAj and Ai ofaffinity (
∑∑
=
ji
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 A
k
vào vị trí thích hợp trong
CA đã được tạo ra tại bước 2
cont(A
i
, A
k
, A
j
) = 2bond(A
i
, A
k
)+2bond(A
k
, A
l
) –2bond(A
i
, A
j

)
Với:

=
=
n
z
yzxzyx
AAaffAAaffAAbond
1
),(),(),(
Bài thu hoạch môn Cơ sở dữ liệu nâng cao
Trường hợp thuộc tính A
k
đặ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(A
0
,A
k
) = bond(A
k
,A
k+1
) = 0
− Ví dụ: Xét ma trận AA và ma trận tương ứng CA với A
1
và A
2
đã được

chọn đặt cố định. Tìm vị trí đặt A
3
:
AA =
783750
353545
755800
045045
4
3
2
1
4321
A
A
A
A
AAAA
CA =
750
545
800
045
21
AA

• 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=
7530
55345
8050
04545
231
AAA
Tương tự đặt A
4
bên phải A
2
, sắp xếp lại ma trận cuối cùng của CA:
Bài thu hoạch môn Cơ sở dữ liệu nâng cao
CA =
787530
758050
355345
004545
4
2
3
1
4231
A
A
A
A
AAAA
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
: TA
A
i
A
i+1
: BA
A
n
Tập {A
1
, , A
i
} ở góc trên trái và tập {A
1+1
, , A
n
} ở 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 )
Bài thu hoạch môn Cơ sở dữ liệu nâng cao
CTQ = tổng số các truy cập đến các thuộc tính bởi các ứng dụng chỉ
truy cập TA =
∑ ∑
∈ ∈
TQq Ss
ijij
i j
qaccqref )()(
CBQ = tổng số các truy cập đến thuộc tính bởi ứng dụng chỉ truy cập
BA=

∑ ∑
∈ ∈
BQq Ss
ijij
i j
qaccqref )()(
COQ = tổng số truy cập đến thuộc tính bởi ứng dụng truy cập cả TA
và BA

=
∑ ∑
∈ ∈
OQq Ss
ijij
i j
qaccqref )()(
− 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
Bài thu hoạch môn Cơ sở dữ liệu nâng cao
COQ=8
CTQ*CBQ - COQ
2
= 3311 (là max)
Vậy ta có hai phân mảnh: R1 = {A
1

, A
3
} và R2 = {A
2
, A
4
}
Bài thu hoạch môn Cơ sở dữ liệu nâng cao
PHẦ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);
Bà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();
}
Bài thu hoạch môn Cơ sở dữ liệu nâng cao
3. 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.
Bà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
− Nhận xét, đánh giá: với vốn kiến thức còn hạn chế ở mức độ học hỏi nê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.
− Hướng phát triển: sẽ cố gắng phát triển ngôn ngữ lập trình để mỗi ứng dụng
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.

×