1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

13 602 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 13
Dung lượng 196,5 KB

Nội dung

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 2

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/1320/06/2024

Trang 3

MỤ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 4

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(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 5

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:

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 6

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

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 7

Bà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 8

CA =

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 9

Bài thu hoạch môn Cơ sở dữ liệu nâng cao

truy cập TA = q TQ sS 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 sS 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 10

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);

Trang 11

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();

}

Trang 12

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

Trang 13

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

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

Ngày đăng: 10/04/2015, 13:22

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w