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 Chương trình Demo phân mảnh dọc

17 669 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 17
Dung lượng 223,37 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Hệ cơ sở dữ liệu phân tán được mô tả như là tập hợp nhiều cơ sở dữ liệu có liên quan logic đến nhau và được phân bố trên mạng máy tính.. Trong cơ sở dữ liệu phân tán các tập tin dữ liệu

Trang 1

MỤC LỤC

1 Các khái niệm về hệ cơ sở dữ liệu phân tán 2

2 Thiết kế cơ sở dữ liệu phân tán 2

2.1 Các kiểu phân mảnh: 2

2.1.1 Phân mảnh ngang: 3

2.1.2 Phân mảnh dọc: 4

3 Phương pháp phân mảnh dọc 6

3.1 Phương pháp nhóm: 6

3.2 Phương pháp tách: 6

3.3 Thuật toán gom cụm: 8

3.4 Thuật toán BEA (Bond Energy Algorithm) 9

3.5 Thuật toán phân hoạch thuộc tính: 11

3.6 Thuật toán PARTITION 12

4 Chương trình Demo phân mảnh dọc: 15

4.1 Chương trình được viết trên ngôn ngữ C# 2005 15

4.2 Giao diện nhập dữ liệu của chương trình: 15

4.3 Kết quả: 17

5 Tài liệu kham khảo: 17

Trang 2

CƠ SỞ DỮ LIỆU PHÂN TÁN

1 Các khái niệm về hệ cơ sở dữ liệu phân tán

Hệ cơ sở dữ liệu phân tán (Distributed DataBase System) được xây dựng dựa trên hai công nghệ cơ bản là cơ sở dữ liệu và mạng máy tính Hệ cơ sở dữ liệu phân tán được

mô tả như là tập hợp nhiều cơ sở dữ liệu có liên quan logic đến nhau và được phân bố trên mạng máy tính

Trong khái niệm được mô tả về cơ sở dữ liệu phân tán ở trên có hai đặc trưng cơ bản là “liên quan logic” và “phân bố trên mạng” Trong cơ sở dữ liệu phân tán các tập tin

dữ liệu được lưu trữ độc lập trên các nút của mạng máy tính và phải có liên quan đến nhau về mặt logic và còn đòi hỏi chúng phải được truy xuất đến qua một giao diện chung, thống nhất

Hệ Quản trị cơ sở dữ liệu phân tán (Distributed DBMS) là hệ thống phần mềm cho phép quản lý các hệ cơ sở dữ liệu phân tán và làm cho sự phân tán trở nên “trong suốt” đối với người sử dụng

2 Thiết kế cơ sở dữ liệu phân tán

Một cơ sở dữ liệu phân tán dựa trên mô hình quan hệ trước hết phải tuân thủ các quy tắc về chuẩn hóa cho cơ sở dữ liệu quan hệ Để phân tán cơ sở dữ liệu có hai hoạt động chính đó là: Phân mảnh các quan hệ và Phân tán các quan hệ (cấp phát các mảnh)

2.1 Các kiểu phân mảnh:

Trong phần này ta đang xét hệ cơ sở dữ liệu phân tán dựa trên các lược đồ quan hệ, tức là các bảng, như vậy sự phân mảnh chính là là hoạt động chia một bảng thành các bảng nhỏ hơn Để phân tích sự phân mảnh ta lấy các quan hệ EMP, PROJ, PAY, ASG

EMP

Trang 3

E7 Algor Ks Cơ Khí

ASG

PROJ

PAY

Ks Hệ thống 7000

Ks Lập trình 2000

2.1.1 Phân mảnh ngang:

Giả sử ta có một yêu cầu phân mảnh quan hệ PROJ thành hai bảng PROJ1 và PROJ2 sao cho một bảng chứa các dự án có ngân sách lớn hơn 100000 và cái kia chứa các dự án có ngân sách nhỏ hơn 100000

Trang 4

PROJ2

2.1.2 Phân mảnh dọc:

Cũng quan hệ PROJ ta phân mảnh thành hai bảng PROJ3 và PROJ4, khóa của quan hệ PNo có mặt ở cả hai bảng con

PROJ3

PROJ4

Trong thực tế sự phân mảnh sẽ xảy ra việc kết hợp cả hai loại phân mảnh và ta gọi

là sự phân mảnh hỗn hợp Mức độ phân mảnh tùy theo yêu cầu của ứng dụng, phân mảnh quá lớn hay quá nhỏ đều gây ra các hiệu ứng phụ khó kiểm soát

Các quy tắc phân mảnh:

Các quy tắc này nhằm đảm bảo tính nhất quán của cơ sở dữ liệu, đặc biệt về ngữ nghĩa của dữ liệu

Tính đầy đủ:

Nếu một quan hệ R được phân mảnh thành các mảnh con R1, R2, , Rn thì mỗi mục dữ liệu phải nằm trong một hoặc nhiều các mảnh con Ở đây trong phân mảnh ngang thì mục dữ liệu được hiểu là các bộ còn trong phân mảnh dọc là các thuộc tính Quy tắc này đảm bảo không bị mất dữ liệu khi phân mảnh

Trang 5

Tính tái thiết được:

Nếu một quan hệ R được phân mảnh thành các mảnh con R1, R2, , Rn thì phải định nghĩa được một toán tử quan hệ V sao cho R = ¿i=1¿n R i

Tính tách biệt:

 Giả sử một quan hệ R được phân mảnh thành các mảnh con R1, R2, , Rn

 Đối với phân mảnh ngang mục di đã nằm trong mảnh Rj thì nó sẽ không nằm mtrong mảnh Rk với k≠j

 Đối với phân mảnh dọc thì khóa chính phải được lặp lại trong các mảnh con còn các thuộc tính khác phải tách rời

Trang 6

3 Phương pháp phân mảnh dọc

Phương pháp phân mảnh dọc tạo ra các quan hệ nhỏ hơn để giảm tối đa thời gian thực hiện của ứng dụng chạy trên mảnh đó Việc phân mảnh dọc là hoạt động chia một quan

hệ R thành các mảnh con R1, R2,…, Rn sao cho mỗi mảnh con chứa tập con thuộc tính và chứa cả khóa của R

Phân mảnh dọc là một bài toán hết sức phức tạp, người ta đã chứng minh được rằng nếu quan hệ có m thuộc tính không phải là thuộc tính khóa thì số lượng các mảnh dọc được phân ra là số Bell thứ m (kí hiệu B(m)), số này tăng rất nhanh với số m lớn và đạt đến mm Chẳng hạn m=10 thì B(m)≈115.000, với m=15 thì B(m)≈109, với m=30 thì B(m)≈1023 Vì vậy bài toán phân mảnh dọc phải sử dụng đến các thuật giải heuristic Có hai phương pháp chính đã được nghiên cứu đó là phương pháp nhóm và phương pháp tách, trong hai phương pháp thì phương pháp tách tỏ ra có sự tối ưu hơn

3.1 Phương pháp nhóm:

Khởi đầu bằng tập các mảnh, mỗi mảnh có một thuộc tính, tại mỗi bước ghép một

số mảnh lại cho đến khi thỏa mãn một tiêu chuẩn nào đó

3.2 Phương pháp tách:

Tại mỗi bước tìm một phân hoạch có lợi cho việc truy xuất của ứng dụng trên các thuộc tính của nó

Thông tin dùng để phân mảnh dọc có liên quan đến các ứng dụng, một mảnh dọc thường chứa các thuộc tính thường xuyên được truy xuất chung bởi một ứng dụng, người

ta tìm cách lượng hóa khái niệm này bằng một số đo gọi là “ái lực” (affinity – ái lực hoặc

sự lôi cuốn) Số đo này có thể tính được khi ta tính được tần số truy xuất tới các thuộc tính đó của ứng dụng Trên cơ sở khái niệm “ái lực” và tính được độ sử dụng thuộc tính của các câu vấn tin của ứng dụng người ta đã xây dựng được giải thuật tách rất hữu hiệu

Gọi Q = {q1, q2, , qt} là tập các câu vấn tin mà ứng dụng sẽ truy xuất trên quan

hệ R(A1, A2, , An) Với mỗi câu vấn tin qi và thuộc tính Aj chúng ta sẽ đưa ra một giá trị sử dụng thuộc tính, kí hiệu là use (qi, Aj) được định nghĩa như sau:

use(qi , Aj)={1 nếu Aj được vấn tin qi sử dụng 0 trong trường hợp ngược lại

các giá trị use (qi, *) rất dễ xác định nếu chúng ta biết được các ứng dụng chạy trên CSDL

Trang 7

Ví dụ: Xét quan hệ PROJ, giả sử các ứng dụng sử dụng câu vấn tin SQL truy xuất đến nó:

PROJ

q1: Tìm ngân sách của dự án theo mã số

SELECT Budget

WHERE PNo = value q2: Tìm tên và ngân sách của tất cả các dự án

SELECT PName

q3: Tìm tên của dự án theo vị trí

WHERE Loc = value

Để thuận tiện ta kí hiệu A1 = PNo, A2 = PName; A3 = Budget; A4 = Loc Chúng

ta có ma trận sau đây:

A 1 A 2 A 3 A 4

q 1 1 0 ¿ 0¿q 2¿0¿1¿1¿0¿q 3¿0¿1¿0¿1¿q 4¿0¿0¿1¿1¿

Ta nhận thấy rằng giá trị sử dụng không chứa thông tin về độ lớn của tần số ứng dụng, số đo này nằm trong định nghĩa về số đo ái lực thuộc tính aff (Ai, Aj)

aff (Ai, Aj) = ∑

k : use(q k , A i) =1 ∩ use (q k , A j) =1∑

∀ S l

ref(q k) acc l(q k)

Trang 8

trong đó ref(qk) là số truy xuất đến các thuộc tính (Ai, Aj) cho mỗi ứng dụng của

qk tại vị trí Sl và acc(qk) là kí hiệu số đo tần số truy xuất ứng dụng Kết quả tính toán được một ma trận vuông nxn và ta gọi nó là ma trận ái lực thuộc tính AA

Ví dụ: Sử dụng lại ví dụ trên, giả sử ref(qk) = 1 cho tất cả qk và Sl Số đo tần số truy xuất ứng dụng giả sử như sau:

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

Như vậy chúng ta tính số đo ái lực giữa các thuộc tính A1 và A3 và bởi vì ứng dụng duy nhất truy xuất đến cả hai thuộc tính này là q1 nên ta có:

aff(A1,A3) = ∑

k =1

1

l =1

3

acc l(q k)=acc1(q1)+¿acc2(q1)+acc3(q1)=45¿

Ma trận ái lực thuộc tính đầy đủ như sau:

AA = A 1 A 2 A 3 A 4 A 1 45 0 ¿ 0¿A 2¿0¿80¿5¿75¿A 3¿45¿5¿53¿3¿A 4¿0¿75¿3¿78¿

3.3 Thuật toán gom cụm:

Lấy ma trận ái lực AA và tổ chức lại thứ tự của các thuộc tính để tạo ra 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

AM =

i=1

n

j=1

n

aff(A i , A j).¿ ¿ ¿

trong đó aff(A0,Aj) = aff(Ai,A0) = aff(An+1,Aj) = aff(Ai,An+1) = 0 là các điều kiện biên khi một thuộc tính được đặt vào CA vào bên trái của thuộc tính cận trái hoặc về bên phải của thuộc tính cận phải trong các hoán vị cột, tương tự cận trên dưới đối với hoán vị hàng Vì ma trân ái lực AA có tính đối xứng nên công thức trên có thể thu gọn:

AM =

i=1

n

j=1

n

aff(A i , A j).¿ ¿ ¿

Giữa hai thuộc tính Ax và Ay, chúng ta định nghĩa cầu nối Bond:

Trang 9

Bond( A x , A y)=∑

z =1

n

aff(A z , A x) aff (A z , A y)

Chúng ta có cách tính AM theo định nghĩa Bond như sau:

AM =

j =1

n

[bond(A j , A j−1)+bond( A j , A j +1)]

Đóng góp thực cho số đo ái lực chung khi đặt Ak giữa Ai và Aj là:

cont(Ai,Ak,Aj) = 2bond(Ai,Ak) + 2bond(Ak,Aj) – 2bond(Ai,Aj)

Ví dụ: Ta có ma trận ái lực AA được tính như trên, tính đóng góp thực khi chuyển thuộc tính A4vào giữa hai thuộc tính A1 và A2 là:

cont(A1,A4,A2) = 2bond(A1,A4) + 2bond(A4,A2) – 2bond(A1,A2)

Ta đã có các giá trị bond như sau:

bond(A1,A4) = 45*0 + 0*75 + 45*3 + 0*78 = 135 bond(A4,A2) = 0*0 + 80*75 + 5*3 + 75*78 = 11865 bond(A1,A2) = 45*0 + 0*80 + 45*3 + 0*75 = 225

 Cont(A1,A4,A2) = 2*135 +2*11865 – 2*225 = 23550

Ta có một thuật toán dung để thực hiện việc gom cụm các thực thể, đó là thuật toán BEA (Bond Energy Algorithm)

3.4 Thuật toán BEA (Bond Energy Algorithm)

Nhập: Ma trận ái lực AA

Xuất: Ma trận ái lực gom cụm CA

Begin

//Khởi tạo

CA(*,1) = AA(*,1);

CA(*,2) = AA(*,2);

index = 3;

While (index <=n) do

Trang 10

For i=1 To index-1 Do tính cont(Ai-1, Aindex, Ai);

Tính cont(Aindex-1, Aindex, Aindex+1);

loc = vị trí đặt được chọn bởi giá trị cont lớn nhất For j=index DownTo loc Do CA(*,j) = AA(*,j-1);

CA(*,loc) = AA(*,index);

index = index + 1;

End

Sắp thứ tự các hàng theo thứ tự tương đối của cột

End

Ví dụ: Ứng dụng thuật toán BEA để xem xét quá trình gom cụm các thuộc tính của quan hệ PROJ ở trên:

Đầu tiên ta đặt cột A1 và A2 của AA vào ma trận CA Tiếp theo ta xét cột A3 Có 3 cách đặt vị trí của cột A3 như sau: A3-A1-A2 , A1-A3-A2 , A1-A2-A3

Các đóng góp cho số đo ái lực chung của mỗi vị trí được tính như sau:

Trường hợp: A3-A1-A2

Cont(_,A3,A1) = 2bond(_,A3) + 2bond(A3,A1) – 2bond(_,A1)

= 0 + 8820 + 0 = 8820 Trường hợp: A1-A3-A2

Cont(A1,A3,A2) = 2bond(A1,A3) + 2bond(A3,A2) – 2bond(A1,A2) = 10150 Trường hợp: A1-A2-A3

Cont(A2,A3,_) = 2bond(A2,A3) + 2bond(A3,_) – 2bond(A2,_) = 1780

Ta thấy trường hợp A1-A3-A2 có số đóng góp lớn nhất nên vi trí này được chọn

3.5 Thuật toán phân hoạch thuộc tính:

A1 A2 … Ai Ai+1 …… An

Trang 11

A2

Ai

TA

Ai+1

An

BA

TA : tập đỉnh Top

BA: Tập đỉnh đáy

Xét tập ứng dụng Q = {q1, q2, …, qi}

Định nghĩa:

TQ = tập các ứng dụng chỉ truy cập TA

BQ = tập các ứng dụng chỉ truy cập BA

OQ = tập các ứng dụng chỉ truy cập vừa TA và BA Và

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

CBQ = 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 BA

COQ = tổng số các truy cập đến các thuộc tính bởi các ứng dụng truy cập

cả TA và BA

Sau đó tìm điểm dọc theo đường chéo làm cực đại

CTQ*CBQ-COQ2

Trang 12

3.6 Thuật toán PARTITION

Nhập: Ma trận ái lực CA, R quan hệ, ref ma trận sử dụng thuốc tính, acc ma trận tần

số truy xuất, K tập thuộc tính khóa chính của R

Xuất: F tập các mảnh dọc

Begin

Z là vị trí thuộc cột thứ 1;

Tính CTQ1 ;

Tính CBQ1 ;

Tính COQ1;

Best = CTQ1 * CBQ1 – COQ12

For i=2 To n-1 Do

Begin

Tính CTQi ; Tính CBQi ; Tính COQi ; Z= CTQi * CBQi – COQi2 ;

IF z>best Then best=z End

R1 := ∏TA(R) ∪ K;

R2 := ∏BA(R) ∪ K;

F := R1∪R2

End

Ví dụ: Ta có các dữ liệu theo ví dụ ở trên:

Trang 13

acc1(q1)=15 acc2(q1)=20 acc3(q1)=10

acc1(q2)=5 acc2(q2)=0 acc3(q2)=0

acc1(q3)=25 a cc2(q3)=25 acc3(q3)=25

acc1(q4)=3 acc2(q4)=0 acc3(q4)=0

A 1 A 2 A 3 A 4

q 1 1 0 ¿ 0¿q 2¿0¿1¿1¿0¿q 3¿0¿1¿0¿1¿q 4¿0¿0¿1¿1¿

Ta có các phương án phân mảnh sau:

Phương Án 1:

TA = {A1}

BA = {A2, A3, A4}

TQ ={}

BQ ={q2, q3, q4}

OQ = {q1} CTQ = 0 CBQ = acc1(q2) + acc2(q2) + acc3(q2) + acc1(q3) + acc2(q3) + acc3(q3) +

acc1(q4) + acc2(q4) + acc3(q4) = 83 COQ = 45

z= -2025 Phương Án 2:

TA = {A1, A3}

BA = {A2, A4}

TQ ={q1}

BQ ={q3}

OQ = {q2, q4} CTQ = 45 CBQ = 75

Trang 14

COQ = 8 z= 3311 Phương Án 3:

TA = {A1, A3, A2}

BA = {A4}

TQ ={q1, q2}

BQ ={}

OQ = {q3, q4} CTQ = 50 CBQ = 0 COQ = 78 z= -6084

Ta chọn phương án 2 làm điểm phân chia vì tại vị trí này giá trị chi phí là cao nhất Như vậy chúng ta có PROJ1 = {A1, A3} và PROJ2 = {A1, A2, A4} Tức là PROJ1= {PNo, Budget} và PROJ2 = {PNo, PName, Loc}

Trang 15

4 Chương trình Demo phân mảnh dọc:

4.1 Chương trình được viết trên ngôn ngữ C# 2005.

4.2 Giao diện nhập dữ liệu của chương trình:

Ta nhập số thuộc tính vào ô Enter Attributes

Ta nhập số câu truy vấn vào ô Enter Queries

Ta nhập số site vào ô Enter Sites

Sau đó nhấn nút Show Matrix để hiển thị ma trận Use và ma trân Access như hình sau:

Trang 16

Tại đây ta nhập dữ liệu cho 2 ma trận Use và Access, sau đó chọn khóa trong khung Primary Key (nếu có khóa)

Nhấn nút Calculator để tính ma trận AA và CA và phân mảnh

Trang 17

4.3. Kết quả:

Để thực hiện tính toán lại Ta cần nhấn nút Clear để xóa các dữ liệu củ.

5 Tài liệu kham khảo:

 Slide bài giảng về Cơ Sở Dữ Liệu Phân Tán của PGS.TS Đỗ Phúc

 http://www.scribd.com/doc/67770884/15/Thi%E1%BA%BFt-k%E1%BA%BF-s

%E1%BB%B1-phan-m%E1%BA%A3nh-d%E1%BB%AF-li%E1%BB%87u

Ngày đăng: 10/04/2015, 14:35

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w