Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 24 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
24
Dung lượng
616,46 KB
Nội dung
PHƯƠNGPHÁPPHÂNMẢNHDỌC MỤC LỤC CƠ SỞ DỮ LIỆU NÂNG CAO Trang PHƯƠNGPHÁPPHÂNMẢNHDỌC I GIỚI THIỆU Phânmảnh vấn đề quan trọng truy xuất liệu Phânmảnh quan hệ chia quan hệ thành nhiều quan hệ nhỏ thơng thường đơn vị truy xuất ứng dụng khơng phải tồn quan hệ mà phần quan hệ Hơn nữa, việc phân rã quan hệ thành nhiều mảnh, mảnh xử lý đơn vị, cho phép thực nhiều giao dịch đồng thời, cho phép thực song song câu vấn tin cách chia thành tập câu vấn tin hoạt tác mảnh Tuy nhiên bên cạnh mặt tích cực việc phânmảnh mặt hạn chế: • Nếu ứng dụng có yêu cầu ngăn cản việc phân rã thành mảnh để sử dụng độc quyền, ứng dụng có khung nhìn định nghĩa nhiều mảnh bị giảm hiệu suất hoạt động • Nếu khung nhìn đòi hỏi thơng tin nhiều mảnh việc truy xuất liệu để nối lại có chi phí cao • Kiểm sốt ngữ nghĩa liệu (semantic data control): Do kết phân mảnh, thuộc tính tham gia vào phụ thuộc bị phân rã vào mảnh khác cấp phát cho vị trí khác Trong trường hợp này, nhiệm vụ đơn giản kiểm tra phụ thuộc phải thực truy tìm liệu nhiều vị trí Phânmảnh liệu gồm kiểu phânmảnh ngang, phânmảnhdọcphânmảnh hỗn hợp Nhưng khuôn khổ báo cáo này, tơi tìm hiểu chi tiết phânmảnhdọc đặc biệt phươngphápphânmảnhdọc CƠ SỞ DỮ LIỆU NÂNG CAO Trang PHƯƠNGPHÁPPHÂNMẢNHDỌC II CƠ SỞ LÝ THUYẾT II.1 - Khái niệm Phânmảnhdọc quan hệ tổng thể n-bộ R tách R thành quan hệ n-bộ R1, R2, , Rk cho quan hệ R khơi phục lại từ quan hệ phép nối R = R1 R2 , Rk - Nói cách khác: phânmảnhdọcphân hoạch quan hệ thành tập quan hệ nhỏ cho mảnh chứa tập thuộc tính khóa Giả sử: Cho quan hệ R sinh mảnh R1, R2, …, Rn mảnh chứa tập thuộc tính R khoá R - Thế gọi phânmảnh tối ưu? Một phânmảnh tối ưu phânmảnh sinh lược đồ phânmảnh cho phép giảm tối đa thời gian thực thi ứng dụng chạy phânmảnh Ví dụ: Xét sở liệu cơng ty máy tính tổ chức sau: NHANVIEN (MANV, TENNV, CHUCVU): quan hệ chứa liệu nhân viên công ty TLUONG (CHUCVU, LUONG): quan hệ chứa liệu liên quan lương chức vụ nhân viên DUAN (MADA, TENDA, NGANSACH): quan hệ chứa liệu dự án mà công ty phát triển HOSO (MANV, MADA, NHIEMVU, THOIGIAN): quan hệ chứa liệu hồ sơ nhân viên phân công thực dự án) MADA D1 D2 D3 D4 Ví dụ phânmảnh dọc: DUAN3 = Π$1, $3 DUAN; DUAN4 = Π$1, $4 DUAN; TENDA CSDL CÀI ĐẶT BẢO TRÌ PHÁT TRIỂN CƠ SỞ DỮ LIỆU NÂNG CAO Trang NGANSACH 2000 12000 28000 25000 PHƯƠNGPHÁPPHÂNMẢNHDỌC MADA D1 D2 D3 D4 DUAN3 NGANSACH 20000 12000 28000 25000 DUAN4 MADA D1 D2 D3 D4 TENDA CSDL CÀI ĐẶT BẢO TRÌ PHÁT TRIỂN Dễ thấy, mảnh thỏa mãn tính tái thiết tính đầy đủ DUAN3 ⊆ DUAN; DUAN4 ⊆ DUAN; DUAN = DUAN3 X DUAN4 II.2 Phươngphápphânmảnhdọc II.2.1 Phân loại - Phânmảnhdọc phức tạp tổng số chọn lựa phân hoạch dọc lớn Vì để có lời giải tối ưu cho tốn khó khăn => phải dùng phươngpháp khám phá (heuristic) - Có loại heuristic cho phânmảnh dọc: • • - Nhóm thuộc tính Tách mảnh Nhóm thuộc tính: Bắt đầu cách gán thuộc tính cho mảnh, bước, nối số mảnh lại thỏa tiêu chuẩn - Tách mảnh: Bắt đầu quan hệ định cách phânmảnh có lợi dựa hành vi truy xuất ứng dụng thuộc tính II.2.2 Các u cầu thơng tin phânmảnhdọc - Phân hoạch dọc đặt vào mảnh thuộc tính thường truy xuất chung với nhau, cần có giá trị đo để định nghĩa xác khái niệm “chung với nhau” Số đo gọi tụ lực hay lực hút (affmity) thuộc tính, mức độ liên đới thuộc tính CƠ SỞ DỮ LIỆU NÂNG CAO Trang PHƯƠNGPHÁPPHÂNMẢNHDỌC - u cầu liệu có liên quan đến ứng dụng tần số truy xuất chúng Gọi Q={q1, q2,…,qk} tập vấn tin người dùng (các ứng dụng) chạy quan hệ R(A1, A2,…,An) với câu vấn tin qi thuộc tính Aj, đưa giá trị sử dụng thuộc tính; ký hiệu use(q i, Aj) định nghĩa sau: thuộc tính Aj vấn tin qi tham chiếu use(qi, Aj)={ trường hợp ngược lại Ví dụ: Xét quan hệ DA, giả sử ứng dụng sau chạy quan hệ q1 : Tìm ngân sách dự án, cho biết mã dự án SELECT Ngân sách FROM DA WHERE Mda=giá trị q2: Tìm tên ngân sách tất dự án SELECT TÊNDA, ngân sách FROM DA q3 : Tìm tên dự án thực thành phố đă cho SELECT tên DA FROM DA WHERE địa điểm=giá trị q4: Tìm tổng ngân sách dự án thành phố SELECT SUM (ngân sách) FROM DA WHERE Địa điểm=giá trị Dựa vào ứng dụng này, ta định nghĩa giá trị sử dụng thuộc tính Gọi: A1=MDA; A2=TenDA; CƠ SỞ DỮ LIỆU NÂNG CAO Trang PHƯƠNGPHÁPPHÂNMẢNHDỌC A3=NganSach; A4=DiaDiem Giá trị sử dụng định nghĩa dạng ma trận, mục(i,j) biểu thị use(qi,Aj) A1 0 q1 q2 q3 q4 A2 1 A3 1 A4 0 1 II.2.3 Tụ lực (ái lực) thuộc tính - Giá trị sử dụng thuộc tính khơng đủ để làm sở cho việc tách phânmảnh Điều chúng không biểu thị cho độ lớn tần số ứng dụng Số đo lực hút (affmity) thuộc tính aff(Ai, Aj), biểu thị cho cầu nối (bằng) hai thuộc tính quan hệ theo cách chúng ứng dụng truy xuất, - đại lượng cần thiết cho tốn phânmảnh Xây dựng cơng thức để đo lực hút hai thuộc tính Ai, Aj Gọi k số mảnh R phânmảnh Tức R = R1 ∪…Rk Q= {ql,q2,…qm} tập câu vấn tin (tức tập ứng dụng chạy quan hệ R) Đặt Q(A, B) tập ứng dụng q Q mà use(q, A).use(q, B) =1 Nói cách khác: Q(A, B) = {q ∈ Q: use(q, A) = use(q, B) = 1} Ví dụ: Dựa vào ma trận ta thấy Q(A1,A1) = {q1}, Q(A2,A2) = {q2}, Q(A3, A3) = {q1,q2,q4}, Q(A4,A4) = {q3, q4}, Q(Al, A2 ) = rỗng, Q(Al,A3) ={ql}, CƠ SỞ DỮ LIỆU NÂNG CAO Trang PHƯƠNGPHÁPPHÂNMẢNHDỌC Q(A2, A3 ) = {q2}… - Công thức đo lực hút hai thuộc tính Ai, Aj: ∑ aff(Ai, Aj) = ∑ ref (q ) acc (q ) l qk ∈ Q(Ai, Aj) Hoặc Use(qk,Ai)=l∧Use(qk,Aj)=l l k l ∈ Rl ∑ aff(Ai, Aj) = k ∑ ref (q ) acc (q ) l k l k ∀Rl Trong đó: • ref1 (qk): số truy xuất đến thuộc tính (A i, Aj) cho ứng dụng qk • vị trí Rl acc1(qk): số đo tần số truy xuất ứng dụng qk đến thuộc tính Ai, Aj vị trí l Cần lưu ý cơng thức tính aff (A i,Aj) xuất ứng dụng q mà Ai Aj sử dụng Kết tính tốn ma trận đối xứng n x n, Chúng ta gọi ma trận lực tụ (lực hút lực) thuộc tính (AA) (auribute affmity matrix) Ví dụ: Giả sử ref1 (qk) = l cho tất qk Rl Nếu tần số ứng dụng là: Accl(q1) = 15 Accl(q2) = Accl(q3) = 25 Accl(q4) = Acc2(q1) = 20 Acc2(q2) = Acc2(q3) = 25 Acc2(q4) = Acc3(q1) = 10 Acc3(q2) = Acc3(q3) = 25 Acc3(ql) = Số đo lực hút hai thuộc tính Al A3 là: Aff(Al, A3) = acc1(qk) = accl(ql) + acc2(ql) + acc3(ql) = 45 Tương tự ta có ma trận lực sau : A1 A2 A1 45 CƠ SỞ DỮ LIỆU NÂNG CAO A2 80 Trang A3 45 A4 75 PHƯƠNGPHÁPPHÂNMẢNHDỌC A3 A4 45 75 53 3 78 Ở ta phânmảnh thuộc tính dựa theo độ lực aff : A 1, A3 45; A2, A4 75…nhưng để phânmảnh từ ma trận khó quan tâm II.2.4 - Thuật tốn lượng nối BEA Mục tiêu: Nhóm thuộc tính lại theo giá trị lực ma trận AA Ý tưởng từ ma trận AA -> ma trận CA (Ma trận lực tụ) Ma trận CA: hoán vị hàng, cột AA cho giá trị lực chung AM lớn II.2.4.1 - Xác định ma trận lực tụ - CA Ma trận CA : hoán vị hàng, cột AA cho giá trị lực chung AM - lớn Do AA có tính chất vng đối xứng nên AM là: - Ta định nghĩa thêm cầu nối thuộc tính bond(Ax,Ay) là: - Giả sử xét n thuộc tính - Ta có : AMold = AM’ + AM’’ + bond(A i-1,Ai) + bond(Ai,Aj) + bond(Aj,Ai) + - bond(Aj,Aj+1) = AM’ + AM’’ + bond(Ai-1,Ai) + bond(Aj,Aj+1) + 2bond(Ai,Aj) Khi ta thêm thuộc tính Ak vào Ai Aj AMnew = AM’ + AM’’ + bond(Ai-1,Ai) + bond(Ai,Ak) + bond(Ak,Ai) + bond(Ak,Aj) + bond(Aj,Ak) + bond(Aj,Aj+1) = AM’ + AM’’ + bond(A i-1,Ai) + bond(Aj,Aj+1) + 2bond(Ai,Ak) + 2bond(Ak,Aj) CƠ SỞ DỮ LIỆU NÂNG CAO Trang PHƯƠNGPHÁPPHÂNMẢNHDỌC Đóng góp thực cho số đo lực chung đặt Ak vào Ai Aj cont(Ai, Ak, Aj) = AMnew - AMold = 2bond(Ai,Ak) + 2bond(Ak,Aj) - 2bond(Ai,Aj) Ví dụ: với ma trận lực sau cont(A1, A4, A2) = bond(A1, A4) + 2bond(A4, A2) – 2bond(A1, A2) Tính số hạng được: = 45*0 + 0*75 + 45*3 + 0*78 = 135 Bond(A4, A2) = 11865 Bond(A1, A2) = 225 Vì cont(A1, A4, A2) = 2*135 + 2*11865 + 2*225 = 23550 II.2.4.2 Thuật toán BED Gồm bước: • Bước 1: đặt cố định cột AA vào CA (thường cột 1, 2) • Bước 2: thực lặp: lấy n-i cột lại đặt vào i+1 vị trí lại of CA (i số cột lấy AA) cho AM lớn (cont(A i, Ak, Aj) lớn • nhất) Bước 3: xếp lại hàng theo thứ tự cột Input: AA – ma trận lực thuộc tính; Output: CA – ma trận lực tụ sau xếp lại hàng cột; Begin {Khởi gán: cần nhớ Â ma trận n x n} CA(•,1) < AA(•,1) CA(•,2) < AA(•,2) Index:=3 While index Best then Begin Best < Z Ghi nhận điểm tách bên vào hành động xê dịch End – if End – for Gọi SHIFT(CA) End – begin Until không thực SHIFT Xây dựng lại ma trận theo vị trí xê dịch R1 < ΠTA(R) ∪ K {K thuộc tính khóa R} R2 < ΠBA(R) ∪ K F < {R1, R2} End {partition} III NỘI DUNG BÀI TOÁN Giá trị sử dụng thuộc tính (attribute usage value): 3.1 Cho tập truy vấn Q = {q1, q2, …, qq} chạy quan hệ R [A1, A2, … , An] use (qi, aj) = thuộc tính Aj tham chiếu truy vấn qi = ngược lại use (qi, aj): định nghĩa tương ứng Ma trận giá trị sử dụng (use - use value matrix) (Ma trận xác định từ câu truy vấn) use q1 q2 q3 q4 3.2 A1 0 A2 1 A3 1 Tần số truy cập (access frequency): Dữ liệu có liên quan đến truy vấn (ứng dụng) qi Ma trận tần số truy cập (acc - access frequency matrix) CƠ SỞ DỮ LIỆU NÂNG CAO Trang 13 A4 0 1 PHƯƠNGPHÁPPHÂNMẢNHDỌC (Số lần truy cập q vị trí S) acc q1 q2 q3 q4 3.3 S1 15 25 S2 20 25 S3 10 25 Sum 45 75 Ái lực thuộc tính (attribute affinities): Nhận từ liệu sử dụng ban đầu Ma trận lực thuộc tính (AA - attribute affinity matrix) AA A1 A2 A3 A4 A1 45 45 AA = A2 80 75 A3 45 53 A4 75 78 (Cách tính aij: Từ ma trận acc: Xem q truy cập đến Ai Aj cộng tất S dòng q đó) 3.4 Ma trận lực tụ (CA - Clustered affinity matrix) a Cầu nối thuộc tính Ai Aj ( bond(Ai, Aj) ): (Cách tính bond (Ai, Aj): Từ ma trận AA, dòng lấy cột * aj; cộng tất tích lại.) bond(A1,A2)= bond(A1,A3)= bond(A1,A4)= bond(A1,A )= bond(A2,A3)= bond(A2,A4)= bond(A2,A )= bond(A3,A4)= bond(A3,A )= bond(A4,A )= 45* 45* 45* 45* 0* 0* 0* 45* 45* 0* + 45 + + + 45 + + + + + + 0* 0* 0* 0* 80* 80* 80* 5* 5* 75* 80 + + 75 + + + 75 + + 75 + + + 45* 45* 45* 45* 5* 5* 5* 53* 53* 3* + 53 + + + 53 + + + + + + 0* 0* 0* 0* 75* 75* 75* 3* 3* 78* 75 + + 78 + + + 78 + + 78 + + + 0* 0* 0* 0* 0* 0* 0* 0* 0* 0* cont(Ai,Ak,Aj) = bond (Ai, Ak) + bond (Ak, Aj) - bond (Ai, Aj) Giả sử A1 khoá CƠ SỞ DỮ LIỆU NÂNG CAO Trang 14 0 0 0 0 0 PHƯƠNGPHÁPPHÂNMẢNHDỌC Đặt trước A1, A2 CA = CA A1 A2 A3 A4 A1 45 45 A2 80 75 A3 45 53 A4 75 78 Chèn thêm A3: có cách Chèn A3 trước A1: cont(_,A3,A1) = 2bond(_,A3) + 2bond(A3,A1) - 2bond(_,A1) =8820 Chèn A3 A1 A2: cont(A1,A3,A2) = 2bond(A1,A3) + 2bond(A3,A2) - 2bond(A1,A2) =10150 Chèn A3 sau A2: cont(A2,A3,_) = 2bond(A2,A3) + 2bond(A3,_) - 2bond(A2,-) =1780 Chọn phương án chèn A3 A1 A2: CA = CA A1 A2 A3 A4 A1 45 45 A3 45 53 A2 80 75 A4 75 78 Chèn thêm A4: có cách Chèn A4 trước A1: cont(_,A4,A1) = 2bond(_,A4) + 2bond(A4,A1) - 2bond(_,A1) =270 Chèn A4 A1 A3: cont(A1,A4,A3) = 2bond(A1,A4) + 2bond(A4,A3) - 2bond(A1,A3) =-7014 Chèn A4 A3 A2: cont(A3,A4,A2) = 2bond(A3,A4) + 2bond(A4,A2) - 2bond(A3,A2) =23486 Chèn A4 sau A2: cont(A2,A4,_) = 2bond(A2,A4) + 2bond(A4,_) - 2bond(A2,_) =23730 CƠ SỞ DỮ LIỆU NÂNG CAO Trang 15 PHƯƠNGPHÁPPHÂNMẢNHDỌC Chọn phương án chèn A4 sau A2: CA A1 CA = A2 A3 A4 Tổ chức lại dòng: CA = 3.5 CA A1 A3 A2 A4 A1 45 45 A3 45 53 A2 80 75 A4 75 78 A1 45 45 0 A3 45 53 A2 80 75 A4 75 78 Tìm điểm chia để chia tập thuộc tính gom cụm thành tập Ta có: Q = {q1, q2, q3, q4, q } S = {S1, S2, S3, S4, S } A1 khoá nên không xét (Từ ma trận use: AQ(qi) gồm thuộc tính mà qi truy vấn đến) AQ(q1) = {A3} AQ(q2) = {A2,A3} AQ(q3) = {A2,A4} AQ(q4) = {A3,A4} AQ(q ) = {A } Có hai phương án chia: Phương án 1: TA = BA = TQ = BQ = OQ = CTQ = CBQ = COQ = {A3} {A2,A4} {q1} (TQ gồm truy vấn q mà có AQ(q) "con" TA) {q3} (BQ gồm truy vấn q mà có AQ(q) "con" BA) {q2,q4} (OQ gồm truy vấn q lại Q.) 45 75 CƠ SỞ DỮ LIỆU NÂNG CAO Trang 16 PHƯƠNGPHÁPPHÂNMẢNHDỌC Tính: CTQ*CBQ-COQ2 =3311 Phương án 2: TA = BA = TQ = BQ = OQ = CTQ = CBQ = COQ = {A3,A2} {A4} {q1,q2} (TQ gồm truy vấn q mà có AQ(q) "con" TA) { } (BQ gồm truy vấn q mà có AQ(q) "con" BA) {q3,q4} (OQ gồm truy vấn q lại Q.) 50 78 Tính: CTQ*CBQ-COQ2 =-6084 Chọn phương án chia Tức chia thành mảnh {A1, A3} {A1, A2, A4} CA A1 A3 A2 A4 A1 45 45 0 CƠ SỞ DỮ LIỆU NÂNG CAO A3 45 53 Trang 17 A2 80 75 A4 75 78 PHƯƠNGPHÁPPHÂNMẢNHDỌC IV THỰC THI CHƯƠNG TRÌNH Chương trình thực thi Visual Studio 2008 (ngôn ngữ C#) Đây chương trình hỗ trợ người giải dạng tốn phânmảnhdọc thiết kế sở liệu phân tán - Chương trình cho người dùng nhập vào giá trị đầu vào như: số lượng truy vấn Q, số lượng thuộc tính A, số lượng mảnh S Sau người dùng nhập giá trị đầu vào nhấp nút “Start”, chương trình tự sinh ma trận USE ma trận ACC có số dòng cột tương ứng với giá trị nhập vào Khi người dùng cần nhập giá trị ô ma trận CƠ SỞ DỮ LIỆU NÂNG CAO Trang 18 PHƯƠNGPHÁPPHÂNMẢNHDỌC - Bên cạnh việc tự nhập giá trị ma trận USE ma trận ACC, chương trình hỗ trợ việc tự sinh ma trận USE ma trận ACC cách nhấn vào nút “Default” Sau có liệu ma trận USE ma trận ACC, Chương trình tính tốn cho kết ma trận AA, ma trận CA phương án phânmảnhdọc tốt theo thứ tự tab giao diện chương trình Lưu ý, kết có quan hệ thứ tự trước sau nên ta cần làm theo trình tự giao diện chương trình Ví dụ muốn tính ma trận CA cần có kết ma trận AA CƠ SỞ DỮ LIỆU NÂNG CAO Trang 19 PHƯƠNGPHÁPPHÂNMẢNHDỌC - Ở tab “1 Ma trận AA”, người dùng xem kết ma trận AA nhấn vào nút “Matrix AA” - Tương tự tab “1 Ma trận AA”, chương trình có thêm tab tab “2 Ma trận CA” tab “3 Phânmảnh dọc” cho người dùng xem kết tính tốn ma trận CA phươngphápphânmảnhdọc CƠ SỞ DỮ LIỆU NÂNG CAO Trang 20 PHƯƠNGPHÁPPHÂNMẢNHDỌC - Ở tab “2 Ma trận CA”, chương trình có chức cho người dùng tùy ý chọn thuộc tính làm khóa Khi người dùng muốn chọn thuộc tính khóa, người dùng cần chọn thuộc tính nhấn nút mũi tên để đồng ý chọn thuộc tính Sau nhấn nút “Matrix CA” để hiển thị kết ma trận CA CƠ SỞ DỮ LIỆU NÂNG CAO Trang 21 PHƯƠNGPHÁPPHÂNMẢNHDỌC Sau nhấn nút “Matrix CA”, chương trình hiển thị ma trận CA kết thể mức độ đóng góp để chọn vị trí thuộc tính CƠ SỞ DỮ LIỆU NÂNG CAO Trang 22 PHƯƠNGPHÁPPHÂNMẢNHDỌC - Ở tab “3 Phânmảnh dọc”, nhấn nút “Fragmentation” chương trình hiển thị thơng tin cân thiết tiến hành phânmảnhdọc Như ví dụ hình bên chương trình đưa phương án phânmảnh dọc: Phương án 1: TA = {A1}, BA = {A4, A2} CTQ*CBQ-COQ2=-1024 (chọn) Phương án 2: TA = {A1, A4}, BA = {A2} CTQ*CBQ-COQ2=-14884 CƠ SỞ DỮ LIỆU NÂNG CAO Trang 23 PHƯƠNGPHÁPPHÂNMẢNHDỌC THAM KHẢO [1] Slide Thiết kế sở liệu phân tán PGS.TS Đỗ Phúc Khoa Hệ Thống Thông Tin Trường Đại Học Công Nghệ Thông Tin Đại Học Quốc Gia TPHCM CƠ SỞ DỮ LIỆU NÂNG CAO Trang 24 ... nhiều vị trí Phân mảnh liệu gồm kiểu phân mảnh ngang, phân mảnh dọc phân mảnh hỗn hợp Nhưng khuôn khổ báo cáo này, tìm hiểu chi tiết phân mảnh dọc đặc biệt phương pháp phân mảnh dọc CƠ SỞ DỮ... X DUAN4 II.2 Phương pháp phân mảnh dọc II.2.1 Phân loại - Phân mảnh dọc phức tạp tổng số chọn lựa phân hoạch dọc lớn Vì để có lời giải tối ưu cho tốn khó khăn => phải dùng phương pháp khám phá... tab “2 Ma trận CA” tab “3 Phân mảnh dọc cho người dùng xem kết tính tốn ma trận CA phương pháp phân mảnh dọc CƠ SỞ DỮ LIỆU NÂNG CAO Trang 20 PHƯƠNG PHÁP PHÂN MẢNH DỌC - Ở tab “2 Ma trận CA”, chương