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

24 1K 0
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

Đ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

Đạ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 Đề tài: GIẢI THUẬT PHÂN MẢNH DỌC & CÀI ĐẶT GVHD: PGS.TS. ĐỖ PHÚC Học viên: DAI NGUYÊN THIỆN Lớp: Cao học khóa 6 Mã số: CH1101043 NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Cài đặt thuật giải phân mảnh dọc Page 2 TP.HCM - 2012 MỤC LỤC Cài đặt thuật giải phân mảnh dọc Page 3 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ới nhau 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àm việ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ị kinh doanh 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 tin nhanh 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ải quyế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ó hai vấ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ết chặ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ểm như ư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 Cài đặt thuật giải phân mảnh dọc Page 4 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ệc thự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ơ sở dữ liệu Thiết kế một hệ CSDL phân tán cần quan tâm nhiều vấn đề, tiêu chí như mức độ chia sẻ, kiểu mẫu truy xuất, mức độ hiểu biết về kiểu mẫu truy xuất hay chiến lược thiết kế từ trên xuống hay từ dưới lên, … Một trong những vấn đề mấu chốt của thiết kế CSDL phân tán là việc phân mảnh (ngang, dọc, hổn hợp). Trong phạm vi bài viết này, chúng tôi sẽ trình bày lại tóm tắt lý thuyết phân mảnh dọc và cài đặt các thuật toán phân mảnh dọc bằng C# II. NỘI DUNG 1. Phân mảnh dọc Phân mảnh dọc cho một quan hệ R sinh ra các mảnh R 1 , R 2 , …, R n . Mỗi mảnh con R i 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ần chạ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 gian thự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ời gian 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ận heuristic: • 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] cho cá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. Cài đặt thuật giải phân mảnh dọc Page 5 • 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ật này được thảo luận lần đầu cho thiết kế CSDL tập trung trong [Hoffer and Severance, 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áp tố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ơn nữ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ương phá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. Tuy nhiê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ưng của phân mảnh dọc cho phép tái tạo lại quan hệ toàn cục. 2. Yêu cầu thông tin của phân mảnh dọ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ới nhau  người ta đặt ra một giá trị đo thể hiện tính thường đi chung với nhau. Đại lượng nà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 (access frequency) của chúng. Gọi Q = {q 1 , q 2 , …,q q } 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(A 1 , A 2 , …, A n ). Với mỗi câu truy vấn qi và mỗi thuộc tính A j người ta đưa ra một giá trị sử dụng thuộc tính (attribute usage value), ký hiệu là use(q i ,A j ) và được định nghĩa như sau: 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 Xét quan hệ PROJ Cài đặt thuật giải phân mảnh dọc Page 6 PNO PNAME BUDGET LOC P1 P2 P3 P4 Instrumentation Database Development CAD/CAM Maintenance 150000 135000 250000 310000 Montreal New York New York Paris 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 FROM PROJ 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 FROM PROJ Q3: Tìm tên của các dự án được thực hiện tại một thành phố đã cho SELECT PNAME FROM PROJ WHERE LOC = Value Q4: Tìm tổng ngân sách dự án cho mỗi thành phố SELECT SUM(BUDGET) FROM PROJ WHERE LOC = Value Để thuận tiện, chúng ta đặt: A1 = PNO, A2 = PNAME, A3 = BUDGET, A4 = LOC 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(q i ,A j ) Cài đặt thuật giải phân mảnh dọc Page 7 Ma trận giá trị sử dụng thuộc tính Độ đo ái lực thuộc tính giữa 2 thuộc tính Ai và Aj của quan hệ R[A1, A2, …, An] ứng với tập quan hệ Q = (q 1 , q 2 , …, q q ) được định nghĩa như sau: Với ref l (q k ) là số truy xuất đến các thuộc tính (A i ,A j ) cho mỗi thực hiện của ứng dụng q k tại vị trí S l và acc l (q k ) là số đo tần số truy xuất ứng dụng đã được định nghĩa trước kia và được sửa đổi lại để gồm chứa cả các tần số tại các vị trí khác nhau. Để cho đơn giản, giả sử rằng ref l (q k ) = 1 cho tất cả q k và S l . Nếu tần số ứng dụng là: acc 1 (q 1 ) = 15 acc 2 (q 1 ) = 20 acc 3 (q 1 ) = 10 acc 1 (q 2 ) = 5 acc 2 (q 2 ) = 0 acc 3 (q 2 ) = 0 acc 1 (q 3 ) = 25 acc 2 (q 3 ) = 25 acc 3 (q 3 ) = 25 acc 1 (q 4 ) = 3 acc 2 (q 4 ) = 0 acc 3 (q 4 ) = 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í):  Số đo ái lực giữa các thuộc tính A 1 , A 3 là: 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 affinity matrix) Ma trận ái lực thuộc tính Cài đặt thuật giải phân mảnh dọc Page 8 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ật toá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 (clustered affinity matrix). Hoán vị được thực hiện sao cho số đo ái lực chung AM (global affinity measure) là lớn nhất Trong đó aff(A 0, A j ) = aff(A i, A 0 ) = aff(A n+1, A j ) = aff(A i, A n+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ác hoá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. 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ới nhau 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: 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ừng cộ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. Cài đặt thuật giải phân mảnh dọc Page 9 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 AA index Begin For i from 1 to index -1 by 1 do Tính cont(A i-1 , A index, A i ) End for Tính cont(A index-1 , A index, A index+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) 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ì. Ta đã có: Viết lại: Cài đặt thuật giải phân mảnh dọc Page 10 [...]... 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} Cài đặt thuật giải phân mảnh dọc Page 18 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àn cục được đưa vào một trong các mảnh Với điều... nút Phân mảnh Xử lý: xóa rồi tính và vẽ lại các ma trận AA và CA, tính phân mảnh và hiện kết quả phân mảnh III.KẾT LUẬN Thử nghiệm chương trình cho thấy chạy tốt và có thể thực hiện lại với số liệu từ bài toán khác Các ma trận là các mảng control Textbox được khai báo trong quá trình chạy  khi thay đổi số thuộc tính, số query, số Site chương trình vẫn thể hiện đúng trong ngữ cảnh mới Cài đặt thuật giải. .. 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ộc tính không phải khóa thì có thể tam.coi như là chúng tách biệt 3 CHẠY CHƯƠNG TRÌNH (vf.exe) Mở thư mục VF, click file vf.exe để chạy chương trình Cài đặt thuật giải phân mảnh dọc Page 19 Giao diện chương trình Chọn số thuộc tính, số query, và số... 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 CA củ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 Cài đặt thuật giải phân mảnh dọc Page 14 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ư... chương trình vẫn thể hiện đúng trong ngữ cảnh mới Cài đặt thuật giải phân mảnh dọc Page 23 Tuy nhiên, các kết quả tính toán trung gian không hiển thị ra trong quá trình chạy chương trình IV TÀI LIỆU THAM KHẢO [1] PGS.TS Đỗ Phúc Slide Bài giảng CSDL phân tán ĐHCNTT-ĐHQG TPHCM [2] M Tamer Özsu, Patrick Valduriez Nguyên lý các hệ cơ sở dữ liệu phân tán (bản dịch: Trần Đức Quang) Nhà xuất bản Thống Kê Xin châ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ả Cài đặt thuật giải phân mảnh dọc Page 20 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 4 CÀI ĐẶT CHƯƠNG TRÌNH 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 ma trận và một số control được khai báo... Cài đặt thuật giải phân mảnh dọc Page 22 tính đóng góp thực (net contribution) cho số đo ái lực chung khi đặt thuộc tính A k giữa Ai và Aj public int[] thutuCA() Xử lý: tính theo thuật toán năng lượng liên kết BEA và cho kết quả là mảng int[] ord lưu lại thứ tự các thuộc tính của ma trận CA public string phanmanh(int[] ord) Tham số int[] ord : mảng lưu thứ tự thuộc tính của ma trận CA Xử lý: tính phân. .. Tích tách biệt trong phân mảnh dọc không quan trọng như trong phân mảnh ngang 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ông nhì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úng tách biệt theo đúng nghĩa thuật ngữ này Tuy... đó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) Cài đặt thuật giải phân mảnh dọc Page 12 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 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ác d) tập... 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} Cài đặt thuật giải phân mảnh dọc Page 16 Áp dụng thuật toán cho ma trận CA trong thí dụ trên  có 3 phương án chia CA A1 A3 A2 A4 use A1 A2 A3 A4 A1 45 45 0 0 q1 1 0 1 0 A3 45 53 5 3 q2 0 1 1 0 A2 0 5 80 75 q3 0 1 0 1 A4 0 3 75 . Cài đặt thuật giải phân mảnh dọc Page 2 TP.HCM - 2012 MỤC LỤC Cài đặt thuật giải phân mảnh dọc Page 3 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ở. 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 Cài đặt thuật giải phân mảnh dọc Page 4 lợi cho. 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ơ sở dữ liệu Thiết kế một hệ CSDL phân tán

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

Từ khóa liên quan

Mục lục

  • I. GIỚI THIỆU

  • II. NỘI DUNG

    • 1. Phân mảnh dọc

    • 2. Yêu cầu thông tin của phân mảnh dọc

      • 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

      • b) Thuật toán gom cụm

      • c) Thuật toán năng lượng liên kết BEA

      • d) Thuật toán phân hoạch

      • e) Kiểm tra tính đúng đắn

      • 3. CHẠY CHƯƠNG TRÌNH (vf.exe)

      • 4. CÀI ĐẶT CHƯƠNG TRÌNH

      • III. KẾT LUẬN

      • IV. TÀI LIỆU THAM KHẢO

Tài liệu cùng người dùng

Tài liệu liên quan