Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 17 trang
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
Nội dung
Cơ sở dữ liệu nâng cao PGS.TS Đổ Phúc MỤC LỤC Trần Quang Phát - CH1101119 Trang 1 / 17 Cơ sở dữ liệu nâng cao PGS.TS Đổ Phúc 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 ENo EName Title E1 John Ks. Điện E2 Mary Ks. Hệ Thống E3 Bill Ks. Cơ Khí E4 Bush Ks. Lập Trình E5 Blair Ks. Hệ Thống E6 Tom Ks. Điện Trần Quang Phát - CH1101119 Trang 2 / 17 Cơ sở dữ liệu nâng cao PGS.TS Đổ Phúc E7 Algor Ks. Cơ Khí E8 David Ks. Điện ASG ENo PNo Resp Dur E1 P1 Quản lý 12 tháng E2 P1 Phân tích hệ thống 24 E2 P2 Phân tích hệ thống 6 E3 P3 Tư vấn 10 E3 P4 Kỹ thuật 48 E4 P2 Lập trình 18 E5 P2 Quản lý 24 E6 P4 Quản lý 48 E7 P3 Kỹ thuật 36 E8 P3 Quản lý 40 PROJ PNo PName Budget Loc P1 Hế thống mạng 140000 Hà Nội P2 Hệ thống CSDL 130000 Đà Nẵng P3 Du lịch 80000 Đà Nẵng P4 Shopping 100000 TP.HCM PAY Title Sal Ks. Điện 4000 Ks. Hệ thống 7000 Ks. Cơ khí 3500 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 Trần Quang Phát - CH1101119 Trang 3 / 17 Cơ sở dữ liệu nâng cao PGS.TS Đổ Phúc PROJ1 PNo PName Budget Loc P1 Hế thống mạng 140000 Hà Nội P2 Hệ thống CSDL 130000 Đà Nẵng PROJ2 PNo PName Budget Loc P3 Du lịch 80000 Đà Nẵng P4 Shopping 100000 TP.HCM 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 PNo PName Loc P1 Hế thống mạng Hà Nội P2 Hệ thống CSDL Đà Nẵng P3 Du lịch Đà Nẵng P4 Shopping TP.HCM PROJ4 PNo Budget P1 140000 P2 130000 P3 80000 P4 100000 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 Trần Quang Phát - CH1101119 Trang 4 / 17 Cơ sở dữ liệu nâng cao PGS.TS Đổ Phúc 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 = 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 d i đã nằm trong mảnh Rj thì nó sẽ không nằm mtrong mảnh R k 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 Trần Quang Phát - CH1101119 Trang 5 / 17 Cơ sở dữ liệu nâng cao PGS.TS Đổ Phúc 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 R 1 , R 2 ,…, R n 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 q i và thuộc tính A j 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: 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. Trần Quang Phát - CH1101119 Trang 6 / 17 Cơ sở dữ liệu nâng cao PGS.TS Đổ Phúc 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 PNo PName Budget Loc P1 Hế thống mạng 140000 Hà Nội P2 Hệ thống CSDL 130000 Đà Nẵng P3 Du lịch 80000 Đà Nẵng P4 Shopping 100000 TP.HCM q1: Tìm ngân sách của dự án theo mã số. SELECT Budget FROM PROJ WHERE PNo = value q2: Tìm tên và ngân sách của tất cả các dự án. SELECT PName FROM PROJ q3: Tìm tên của dự án theo vị trí. SELECT PName FROM PROJ 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: 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 (A i , A j ) = Trần Quang Phát - CH1101119 Trang 7 / 17 Cơ sở dữ liệu nâng cao PGS.TS Đổ Phúc trong đó ref(q k ) là số truy xuất đến các thuộc tính (Ai, Aj) cho mỗi ứng dụng của q k tại vị trí S l và acc(q k ) 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(q k ) = 1 cho tất cả q k và S l . Số đo tần số truy xuất ứng dụng giả sử như sau: 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(A 1 ,A 3 ) = Ma trận ái lực thuộc tính đầy đủ như sau: AA = 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. trong đó aff(A 0 ,A j ) = aff(A i ,A 0 ) = aff(A n +1,A j ) = aff(A i ,A n+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: Giữa hai thuộc tính A x và A y , chúng ta định nghĩa cầu nối Bond: Chúng ta có cách tính AM theo định nghĩa Bond như sau: Đóng góp thực cho số đo ái lực chung khi đặt A k giữa A i và A j là: cont(A i ,A k ,A j ) = 2bond(A i ,A k ) + 2bond(A k ,A j ) – 2bond(A i ,A j ) Trần Quang Phát - CH1101119 Trang 8 / 17 Cơ sở dữ liệu nâng cao PGS.TS Đổ Phúc 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 A 4 vào giữa hai thuộc tính A 1 và A 2 là: cont(A 1 ,A 4 ,A 2 ) = 2bond(A 1 ,A 4 ) + 2bond(A 4 ,A 2 ) – 2bond(A 1 ,A 2 ) Ta đã có các giá trị bond như sau: bond(A 1 ,A 4 ) = 45*0 + 0*75 + 45*3 + 0*78 = 135 bond(A 4 ,A 2 ) = 0*0 + 80*75 + 5*3 + 75*78 = 11865 bond(A 1 ,A 2 ) = 45*0 + 0*80 + 45*3 + 0*75 = 225 Cont(A 1 ,A 4 ,A 2 ) = 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 Begin For i=1 To index-1 Do tính cont(A i-1 , A index , A i ); Tính cont(A index-1 , A index , A index+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); Trần Quang Phát - CH1101119 Trang 9 / 17 Cơ sở dữ liệu nâng cao PGS.TS Đổ Phúc 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 A 1 và A 2 của AA vào ma trận CA. Tiếp theo ta xét cột A 3 . Có 3 cách đặt vị trí của cột A 3 như sau: A 3 -A 1 -A 2 , A 1 -A 3 -A 2 , A 1 -A 2 -A 3 . 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: A 3 -A 1 -A 2 Cont(_,A 3 ,A 1 ) = 2bond(_,A 3 ) + 2bond(A 3 ,A 1 ) – 2bond(_,A 1 ) = 0 + 8820 + 0 = 8820 Trường hợp: A 1 -A 3 -A 2 Cont(A 1 ,A 3 ,A 2 ) = 2bond(A 1 ,A 3 ) + 2bond(A 3 ,A 2 ) – 2bond(A 1 ,A 2 ) = 10150 Trường hợp: A 1 -A 2 -A 3 Cont(A 2 ,A 3 ,_) = 2bond(A 2 ,A 3 ) + 2bond(A 3 ,_) – 2bond(A 2 ,_) = 1780 Ta thấy trường hợp A 1 -A 3 -A 2 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: A 1 A 2 … A i A i+1 ……. An A 1 A 2 … A i TA A i+1 … A n BA Trần Quang Phát - CH1101119 Trang 10 / 17 [...]... Trang 13 / 17 Cơ sở dữ liệu nâng cao PGS.TS Đổ Phúc 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 = {A 1, A3} và PROJ2 = {A1, A2, A4} Tức là PROJ1= {PNo, Budget} và PROJ2 = {PNo, PName, Loc} Trần Quang Phát - CH1101119 Trang 14 / 17 Cơ sở dữ liệu nâng cao PGS.TS Đổ Phúc 4 Chương trình Demo phân mảnh dọc: 4.1 Chương trình được viết... 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 Trần Quang Phát - CH1101119 Trang 16 / 17 Cơ sở dữ liệu nâng cao 4.3 PGS.TS Đổ Phúc 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... 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: Trần Quang Phát - CH1101119 Trang 15 / 17 Cơ sở dữ liệu nâng cao PGS.TS Đổ Phúc Tại đây ta nhập dữ liệu cho 2 ma trận Use và Access, sau... 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: 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} Trần Quang Phát - CH1101119 Trang 12 / 17 Cơ sở dữ liệu nâng cao PGS.TS Đổ Phúc CTQ = 0 CBQ = acc1(q2) + acc2(q2) + acc3(q2) + acc1(q3) + acc2(q3) + acc3(q3) + acc1(q4)... cả TA và BA Sau đó tìm điểm dọc theo đường chéo làm cực đại CTQ*CBQ-COQ2 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 ; Trần Quang Phát - CH1101119 Trang 11 / 17 Cơ sở dữ liệu nâng cao PGS.TS Đổ Phúc Tính COQ1;.. .Cơ sở dữ liệu nâng cao PGS.TS Đổ Phúc 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 . Cơ sở dữ liệu nâng cao PGS.TS Đổ Phúc MỤC LỤC Trần Quang Phát - CH1101119 Trang 1 / 17 Cơ sở dữ liệu nâng cao PGS.TS Đổ Phúc 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. 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. Trang 14 / 17 Cơ sở dữ liệu nâng cao PGS.TS Đổ Phúc 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