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 GIẢI THUẬT PHÂN MẢNH DỌC &CÀI ĐẶT

25 1K 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 25
Dung lượng 524,67 KB

Nội dung

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 4

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

lợ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 7

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

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 8

Giá 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 9

acc 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 10

Hà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 11

End 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 newAM 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 13

bond(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 14

Tí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 16

cá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 17

Tí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 19

TQ = {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 20

A =  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 21

Giao 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 22

Có 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;

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

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w