Tóm tắt Luận án Xử lý và tối ưu hóa truy vấn trong cơ sở dữ liệu hướng đối tượng phân tán

Thiết kế của các bộ tối ưu hoá chia thành ba thành phần: - Không gian thực thi là tập hợp tất cả các kế hoạch thực thi - Mô hình chi phí dự đoán chi phí của một kế hoạch thực thi - Chiến lược tìm kiếm để đạt được kế hoạch có chi phí tối thiểu Chi phí cho phép nối được tính theo thuật toán nối với bộ lọc Bloom. Chiến lược tìm kiếm sử dụng trong bài báo này là kỹ thuật lập trình động.

pdf27 trang | Chia sẻ: tueminh09 | Ngày: 25/01/2022 | Lượt xem: 357 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Tóm tắt Luận án Xử lý và tối ưu hóa truy vấn trong cơ sở dữ liệu hướng đối tượng phân tán, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ề liên quan đến tối ưu hóa truy vấn. Luận án đề xuất thuật toán tối ưu biểu thức đường dẫn trong CSDL HĐT PT sử dụng phương pháp liệt kê cây con cảm sinh trong một đồ thị và cơ chế của bộ lọc Bloom để giảm chi phí truyền dữ liệu giữa hai trạm. Phần kết luận cuối cùng nêu những đóng góp của luận án, các hướng nghiên cứu tiếp theo được đặt ra từ kết quả của luận án. 3 CHƯƠNG 1 - CƠ SỞ DỮ LIỆU HƯỚNG ĐỐI TƯỢNG PHÂN TÁN 1.1. Cơ sở dữ liệu hướng đối tượng Các ứng dụng phức tạp như thiết kế và sản xuất công nghiệp (CAD/CAM và CIM), các thí nghiệm khoa học, viễn thông, hệ bản đồ và CSDL đa phương tiện, ... đòi hỏi cấu trúc dữ liệu phải mềm dẻo và linh hoạt. Mô hình CSDL hướng đối tượng (CSDL HĐT) được đề xuất để giải quyết các vấn đề này. CSDL HĐT có một số đặc điểm cơ bản sau: - Cung cấp khả năng lưu trữ và thao tác với các kiểu dữ liệu trừu tượng hơn (như hình ảnh, bản đồ) và khả năng cho phép người dùng định nghĩa các kiểu cho từng ứng dụng. - Cung cấp khả năng biểu diễn quan hệ giữa các đối tượng dữ liệu theo quan hệ tự nhiên của thế giới thực. Ví dụ trong đối tượng tài liệu có chứa một đối tượng video và một đối tượng văn bản có đề mục. - Có khả năng tích hợp trực tiếp với các ngôn ngữ lập trình hướng đối tượng, ngôn ngữ mà ngày nay được sử dụng trong phần lớn các ứng dụng. 1.1.1. Đối tượng Khái niệm cơ bản nhất trong CSDL hướng đối tượng là đối tượng (object). Đối tượng biểu diễn một thực thể có thực trong hệ thống được mô hình hóa. Mỗi đối tượng biểu diễn bằng một bộ (OID, trạng thái, giao diện), trong đó OID (Object Identifier) là một định danh của đối tượng và trạng thái (state) tương ứng là một biểu diễn trạng thái nào đó cho trạng thái hiện tại của đối tượng, giao diện (interface) định nghĩa các hành vi của đối tượng. Trạng thái của đối tượng là một giá trị nguyên tử hoặc một giá trị được xây dựng. Gọi D là tập các miền do hệ thống định nghĩa và miền các kiểu dữ liệu trừu tượng do người dùng định nghĩa, gọi I là miền định danh được dùng để đặt tên đối tượng, A là miền các tên thuộc tính. Một giá trị được định nghĩa như sau: 1. Một phần tử của D là một giá trị và được gọi là giá trị nguyên tử (atomic value) 2. [a1: v1,, an: vn] được gọi là một giá trị bộ (tuple value), trong đó ai là một phần tử của A và vi là một giá trị hoặc một phần tử của I. [ ] được gọi là toán tử tạo lập bộ (tuple constructor) 3. {v1,, vn} được gọi là giá trị tập hợp hoặc trị tập (set value), với vi là một giá trị hoặc là một phần tử của I. { } được gọi là toán tử tạo lập tập (set constructor) Ví dụ 1.1: Xem xét các đối tượng sau (i1, 230) (i2,”Sinh viên”) (i3, {i6, i11}) (i4, {1, 6, 9}) (i5, [LF: i7, RF: i8, LR: i9, RR: i10]) 1.1.2. Lớp Một lớp là một mẫu cho một nhóm các đối tượng, định nghĩa một kiểu chung cho các đối tượng có thể được tạo nên từ mẫu này. Một lớp mô tả kiểu của dữ liệu bằng cách cung cấp một miền của dữ liệu với cùng cấu trúc, cùng với các phương thức có thể áp dụng lên các phần tử của 4 miền đó. Khả năng trừu tượng hóa của các lớp, được đề cập bằng tính đóng gói, dấu các cài đặt chi tiết của các phương thức, tương tác với bên ngoài thông qua một giao diện. Ví dụ 1.2: Mô hình hóa một chiếc ô tô với nhiều bộ phận (động cơ, giảm sóc, bánh xe) và sẽ lưu các thông tin khác như hãng sản xuất, số seri, type XeHoi attributes dongCo: DongCo cacGiamSoc: {GiamSoc} cacBanhXe: [traiTruoc: BanhXe, phaiTruoc: BanhXe, traiSau: BanhXe, phaiSau: BanhXe] hangSanXuat: HangSanXuat methods tuoi: Real() thayBanh(diaDiem,banhXe) Cấu trúc dữ liệu giao diện của một lớp có thể phức tạp và lớn tùy ý. Lớp cung cấp hai ưu điểm chính: Dễ dàng mở rộng từ kiểu nguyên thủy của hệ thống sang các kiểu do người dùng định nghĩa. 1.1.3. Hợp phần Trong ví dụ 1.2, một số thuộc tính dựa trên đối tượng, chẳng hạn thuộc tính hangSanXuat với miền của nó là tập các đối tượng có kiểu HangSanXuat. Trong trường hợp này, kiểu XeHoi là một kiểu hợp phần (composite type) và các thể hiện của nó được gọi là các đối tượng hợp phần (composite object). Hợp phần cho phép chia sẻ các đối tượng. Ví dụ 1.3: Giả sử x1 là một thể hiện của kiểu XeHoi. Nếu những điều sau đúng thì chứng tỏ Hung và Nam có chung một chiếc xe. (i2, [ten: Hung, soHuuXe: x1]) (i3, [ten: Nam, soHuuXe: x1]) 1.1.4. Phân lớp con và tính kế thừa Các hệ đối tượng cung cấp khả năng mở rộng các kiểu, lớp từ các kiểu, lớp đã có. Điều này được thực hiện thông qua định nghĩa các lớp nhờ toán tử tạo lập kiểu hoặc bằng định nghĩa các lớp dựa vào các lớp đã có sẵn và bổ sung các thành phần để tạo ra các lớp con. Sinh lớp con dựa vào mối liên hệ chuyên biệt hóa giữa các lớp. Một lớp chuyên biệt (lớp con) được định nghĩa chi tiết hơn so với lớp mà từ đó nó được chuyên biệt (lớp cha). Ví dụ 1.4: Xe sẽ định nghĩa những tính chất chung của tất cả các kiểu xe. type Xe as Object attributes dongCo: DongCo hangSanXuat: HangSanXuat methods tuoi(): Real; 5 Định nghĩa XeHoi kế thừa từ kiểu Xe và thêm một số thuộc tính. type XeHoi as Xe attributes cacGiamSoc: {GiamSoc} cacBanhXe: [traiTruoc: BanhXe, phaiTruoc: BanhXe, traiSau: BanhXe, phaiSau: BanhXe] soCho: Integer Khai báo rằng một kiểu là kiểu con của một kiểu khác tạo ra sự kế thừa (inheritance), kế thừa cho phép tái sử dụng. Nếu một kiểu kế thừa từ một kiểu khác gọi là đơn kế thừa, nếu một kiểu kế thừa từ nhiều kiểu khác gọi là đa kế thừa. 1.2. Cơ sở dữ liệu hướng đối tượng phân tán 1.2.1. Mô hình cơ sở dữ liệu hướng đối tượng phân tán Một Cơ sở dữ liệu (CSDL) phân tán là một tập hợp nhiều CSDL có liên quan logic và được phân bố trên một mạng máy tính, biểu diễn như Hình 1.1. Có hai đặc điểm quan trọng trong định nghĩa CSDL phân tán:  Liên quan logic: Dữ liệu trong hệ phân tán có một số thuộc tính ràng buộc chúng với nhau.  Phân tán: Dữ liệu không cư trú trên một vị trí mà được phân bố rộng khắp trên nhiều máy tính đặt tại nhiều vị trí khác nhau. Hình 1.1: Môi trường của hệ CSDL phân tán Với lợi thế về công nghệ mạng truyền thông, mô hình CSDL phân tán phù hợp với sự phân tán về mặt tổ chức của các công ty, đặc biệt là các công ty toàn cầu. Sự phân bố của cơ sở dữ liệu hướng đối tượng theo mô hình cơ sở dữ liệu phân tán gọi là cơ sở dữ liệu hướng đối tượng phân tán (CSDL HĐT PT). 1.2.2. Các ưu điểm của CSDL phân tán - Quản lý dữ liệu phân tán với các mức trong suốt khác nhau - Tăng độ tin cậy của các giao dịch phân tán Trạm 5 Trạm 1 Trạm 2 Mạng truyền dữ liệu Trạm 4 Trạm 3 6 - Cải thiện hiệu năng - Dễ mở rộng 1.2.3. Các vấn đề cần giải quyết trong CSDL phân tán Các vấn đề cần giải quyết trong CSDL PT và mối quan hệ của chúng biểu diễn trong Hình 1.2. Thiết kế CSDL phân tán là trung tâm và ảnh hưởng đến các vấn đề khác. Chẳng hạn thiết kế ảnh hưởng đến việc quản lý thư mục bởi vì định nghĩa các mảnh và vị trí chứa chúng sẽ xác định nội dung thư mục. Những thông tin về mảnh và vị trí cũng được bộ xử lý truy vấn dùng để xác định chiến lược truy vấn. Ngược lai, các thông tin truy vấn được sử dụng cho các thuật toán phân mảnh. Hình 1.2: Mối liên hệ giữa các vấn đề trong CSDL PT 1.2.4. Kiến trúc cơ sở dữ liệu hướng đối tượng phân tán Kiến trúc các hệ CSDL HĐT PT theo kiến trúc client/server. Trong các vấn đề cần nghiên cứu về CSDL HĐT PT luận án tập trung giải quyết ba vấn đề: Đánh giá hiệu năng, thiết kế phân tán (phân mảnh và cấp phát), tối ưu hóa truy vấn phân tán. Thiết kế trong CSDL HĐT PT phức tạp hơn, chẳng hạn: - Do tính đóng gói, cấu trúc mỗi đối tượng bao gồm các phương thức và trạng thái. Vấn đề cần đặt ra là có nên phân mảnh trên các thuộc tính và nhân các các phương thức cho mỗi mảnh hay phân mảnh luôn cả các phương thức. - Mỗi thuộc tính và phương thức lại có thể có kiểu đơn giản hoặc phức hợp. Khi phân mảnh các thuộc tính và phương thức phức hợp chúng ta phải xét đến các lớp liên quan bởi các thuộc tính và phương thức này. Tối ưu hóa truy vấn phân tán có một số khó khăn nảy sinh như: - Các hệ đối tượng có các hệ thống kiểu phong phú hơn. Kết quả của các phép toán đại số đối tượng thường là các tập đối tượng thuộc những kiểu khác nhau. - Đóng gói các phương thức và dữ liệu trong đối tượng khả năng truy cập các thông tin và đánh giá chi phi khó hơn. Quản lý thư mục Thiết kế CSDL phân tán Điều khiển tương tranh Độ tin cậy Sao chép Xử lý truy vấn Quản lý khóa gài 7 - Các đối tượng thường có cấu trúc phức tạp và có phân cấp kế thừa, do đó việc tối ưu hóa phức tạp hơn. 1.3. Đánh giá hiệu năng CSDL HĐT với thư viện OO7 1.3.1. Giới thiệu OO7 là một thư viện được xây dựng để đánh giá hiệu năng các hệ thống CSDL HĐT dựa trên các tiêu chí chính sau: - Tốc độ xử lý trong việc duyệt (traversal) các đối tượng, kể cả sử dụng bộ nhớ đệm hay duyệt trực tiếp trên ổ đĩa. - Mức độ hiệu quả trong việc thay đổi đối tượng (tạo, xóa và cập nhật), kể cả đối tượng sử dụng index và không sử dụng index, dữ liệu lặp và dữ liệu dư thừa. - Hiệu năng của việc xử lý các loại câu truy vấn đối tượng. 1.3.2. Thiết kế CSDL của OO7 Hai thành phần chính của bản thiết kế dữ liệu OO7 tập “Đối tượng nguyên tố” (atomic object) và “Đối tượng phức hợp” (composite object). Tập hợp các đối tượng nguyên tố theo một số kết nối nào đó theo mô hình đồ thị sẽ cấu thành một đối tượng phức hợp, mỗi thành phần phức hợp tương ứng với một thiết kế cơ bản nào đó của ứng dụng thực tế. Đồ thị kết nối giữa các đối tượng Atomic trong một đối tượng Comp như Hình 1.5. Mỗi thiết kế CSDL gồm nhiều module và mỗi module bao gồm nhiều assembly mà ở đó một assembly là sự đóng gói của nhiều đối tượng phức hợp và nguyên thủy với nhau và có thể đóng gói ngay cả các assembly. Các assembly lại có thể được đóng gói để hình thành các assemply phức hợp và các assembly này được liên kết theo hình cây. Mỗi module được thiết kế gồm một đối tượng dữ liệu kích thước lớn để mô phỏng trong việc đánh giá hiệu năng với các đối tượng cực lớn. Mô hình hóa bản thiết kế CSDL của OO7 được minh họa như Hình 1.6. Các tham số cho phép cấu hình CSDL ở các mức nhỏ, vừa và lớn. Ví dụ về cấu hình các tham số như trong Bảng 1.1. Mọi đối tượng và các thuộc tính của bản thiết kế OO7 đưa ra đều nhằm mục đích mô phỏng tốt nhất các bài toán hướng đối tượng trong thực tế. Kể cả với dạng hướng đối tượng phân tán, thiết 8 kế trên cũng có thể mô phỏng được các đối tượng tại các địa điểm cục bộ hoặc phân tán khác nhau mà ở đó mỗi module được minh họa như một trạm xử lý của hệ phân tán. Bảng 1.1: Các tham số CSDL chính của OO7 Tham số Mô tả Small Medium Large NumModule Số lượng module 1 1 10 NumCompPerModule Số lượng đối tượng phức hợp của một module 500 500 500 NumAtomicPerComp Số lượng đối tượng nguyên thủy trong một đối tượng phức hợp 200 200 200 1.3.3. Kịch bản đánh giá hiệu năng Kịch bản đánh giá gồm mười kịch bản duyệt đối tượng và tám kịch bản truy vấn. Kịch bản duyệt sẽ thực hiện ở hai dạng là Hot và Cold. Dạng Cold sẽ hoàn toàn không sử dụng bộ nhớ cache, với dạng duyệt Hot thì bước chuẩn bị chạy giống như Cold nhưng sau đó chạy lại ba lần cùng thao tác duyệt như Cold và sử dụng lại cache đã có từ lần chạy đầu tiên. 1.3.4. Kết quả thực nghiệm Một số tham số của CSDL được thay đổi để kiểm tra dưới nhiều góc độ: - Sử dụng cấu hình CSDL dạng nhỏ (small) với cấu hình client/server và dạng tệp trực tiếp trên ổ đĩa (embedded file) - Sử dụng index (index on) và không sử dụng index (index off) - Tải dữ liệu dạng đầy đủ (eager load) và dạng không đầy đủ (lazy load) - Chương trình bổ sung dạng CSDL vừa (medium) thiết lập sẵn index on và eager load. 1.3.4.1 Kết quả duyệt dạng COLD Hình 1.7: Biểu đồ thao tác duyệt dạng COLD - Khi sử dụng index kết quả có tốt hơn khoảng 5% thời gian xử lý, kết quả này không thực sự phản ánh tốt tính năng index do phần lớn các thao tác duyệt có xử lý update dữ liệu (index phù hợp cho việc đọc hơn là update dữ liệu). 9 - Với thao tác duyệt đầy đủ dữ liệu như Trav1/Trav2x/Trav3x thì kết quả tải dữ liệu không đầy đủ không tốt hơn so với dạng tải dữ liệu đầy đủ. Tuy nhiên với dạng duyệt không toàn bộ như Trav6 thì kết quả tải dữ liệu không đầy đủ tốt hơn nhiều so với dạng tải dữ liệu đầy đủ, đây chính là ưu điểm của việc sử dụng tính năng tải dữ liệu không đầy đủ khi duyệt dữ liệu rút gọn. - Với dạng CSDL dạng tệp dữ liệu trực tiếp trên ổ đĩa, kết quả tốt hơn nhiều. Với CSDL dạng vừa, thời gian tăng đột biến từ 8-10 lần do phải xử lý số lượng dữ liệu rất lớn. 1.3.4.2 Kết quả duyệt dạng HOT Hình 1.8: Biểu đồ thao tác duyệt dạng HOT - Duyệt dạng HOT cho kết quả tốt hơn rất nhiều so với dạng COLD do dữ liệu được tái sử dụng và cache trong bộ nhớ. Phần lớn các thao tác duyệt chỉ đọc không quá một giây và các thao tác duyệt có cập nhật dữ liệu cũng không quá một giây đối với CSDL dạng nhỏ. - Khác với dạng COLD, kết quả của tải dữ liệu không đầy đủ với các thao tác duyệt đầy đủ có cập nhật Trav1/Trav2x/Trav3x kém hơn nhiều so với dạng tải dữ liệu đầy đủ (thời gian cao gấp khoảng 3 lần). Với các thao tác duyệt không đầy đủ Trav6/Trav8/Trav9 thì kết quả là tương đương giữa tải đữ liệu không đầy đủ và tải dữ liệu đầy đủ. 1.3.4.3 Kết quả truy vấn dạng COLD Hình 1.9: Biểu đồ truy vấn dạng COLD 10 - Kết quả nạp dữ liệu không đầy đủ thể hiện ưu điểm với các thao tác truy vấn dữ liệu, kết quả tốt hơn nhiều so với nạp dữ liệu đầy đủ. Ví dụ với Query1, nạp dữ liệu không đầy đủ chỉ mất dưới một giây, còn nạp dữ liệu đầy đủ cần tới hơn 7 giây. - Với truy vấn liệt kê toàn bộ đối tượng Query7 và truy vấn tìm kiếm có quan hệ liên kết Query8, kết quả sử dụng tải dữ liệu không đầy đủ còn tốt hơn rất nhiều. Với CSDL dạng vừa thì Query7 mất tới vài ngày và Query8 mất tới cả tháng. 1.3.4.4 Kết quả truy vấn dạng HOT - Truy vấn dạng HOT cho kết quả rất tốt so với dạng COLD với các dạng tìm kiếm theo giá trị như các truy vấn từ Query1 đến Query5. - Còn với dạng truy vấn liệt kê toàn bộ Query7 và truy vấn tìm kiếm quan hệ liên kết như Query8 thì kết quả không khác nhiều so với dạng HOT. Hình 1.10: Biểu đồ truy vấn dạng HOT 1.4. Kết luận chương 1 CSDL quan hệ có những hạn chế khi áp dụng với các hệ thống lớn, phức tạp. Mô hình CSDL HĐT được đề xuất để giải quyết các vấn đề phức tạp trong các hệ thống ứng dụng. Đặc trưng chính của CSDL HĐT là cung cấp khả năng đặc tả cấu trúc của các đối tượng phức và quản lý hoạt động của các đối tượng. CSDL HĐT phát triển trong môi trường mạng hình thành mô hình CSDL hướng đối tượng phân tán. Kiến trúc của hệ CSDL HĐT PT chủ yếu là kiến trúc clien/server. Trong các vấn đề của CSDL HĐT PT, xử lý truy vấn là một hướng nghiên cứu quan trọng. Xử lý truy vấn phân tán liên quan đến việc đánh giá hiệu năng, phân mảnh và cấp phát lớp các đối tượng, tối ưu hóa truy vấn. Chương một của luận án đã trình bày các khái niệm và các vấn đề trong CSDL HĐT và CSDL HĐT PT, đồng thời chương này cũng đã đề cập đến việc đánh giá hiệu năng các CSDL HĐT bằng thư viện OO7. Trong chương tiếp theo luận án sẽ trình bày những kiến thức và đề xuất các thuật toán để thực hiện việc phân mảnh và cấp phát lớp các đối tượng. CHƯƠNG 2 - THIẾT KẾ TRONG CƠ SỞ DỮ LIỆU HƯỚNG ĐỐI TƯỢNG PHÂN TÁN Bài toán thiết kế dữ liệu phân tán chia thành hai bài toán chính: phân mảnh và cấp phát. Phân mảnh là chia nhỏ dữ liệu thành các phần nhỏ hơn. Cấp phát là định vị các mảnh vào các trạm. Với mô hình đối tượng việc phân mảnh nảy sinh các vấn đề phức tạp mới do các đặc tính của hướng đối tượng, đó là tính đóng gói, kế thừa, phân cấp lớp. Chương 2 của luận án sẽ trình bày các thuật toán phân mảnh và cấp phát cho CSDL HĐT PT. Những kết quả đã được đăng ở các bài báo (1), (3), và (4). 2.1. Các thông tin đầu vào bài toán phân mảnh dọc và cấp phát lớp 2.1.1. Thông tin về CSDL Dữ liệu trong CSDL HĐT bao gồm tập các đối tượng được đóng gói, mỗi đối tượng bao gồm các thuộc tính và phương thức. Định nghĩa 2.1 [24]: Một lớp thứ i trong CSDL HĐT được biểu diễn bởi Ci = (Ki, Ai, Mi, Ii) trong đó: Ki là tập các định danh, Ai là tập các thuộc tính, Mi là tập các phương thức và Ii là tập các đối tượng được định nghĩa bởi Ai và Mi. Thuộc tính trong một lớp chia thành hai kiểu đơn giản và phức tạp: Thuộc tính đơn giản là thuộc tính có miền giá trị là các lớp nguyên thủy. Thuộc tính phức tạp là thuộc tính có miền giá trị không phải là các lớp nguyên thủy, khi đó giá trị thuộc tính có thể là định danh của các đối tượng khác. Phương thức trong một lớp cũng chia thành hai kiểu đơn giản và phức tạp: Phương thức đơn giản là phương thức khi thực hiện không gọi các phương thức khác. Phương thức phức tạp là phương thức khi thực hiện gọi phức thức khác trong cùng lớp đó hoặc các phương thức của lớp khác Định nghĩa 2.2: Một phương án phân mảnh dọc của một lớp Ci là một cách là chia Ci thành tập các mảnh {𝑓1 𝑖 , 𝑓2 𝑖 ,..., 𝑓𝑛 𝑖}, mỗi mảnh 𝑓𝑣 𝑖 = {Ki, 𝐴𝑣 𝑖 , 𝑀𝑣 𝑖 , Ii}, (v = 1, ... , n) , trong đó 𝐴𝑣 𝑖 là tập con của Ai, 𝑀𝑣 𝑖 là tập con của Mi. Cũng như CSDL quan hệ, phân mảnh dọc phải đảm bảo ba luật phân mảnh, cụ thể trong CSDL HĐT ba luật này thể hiện như sau: - Tính đầy đủ (completeness): Mỗi thuộc tính hoặc phương thức trong lớp Ci phải được tìm thấy trong ít nhất một mảnh 𝑓𝑗 𝑖 . - Tính tái cấu trúc được (reconstruction): Có khả năng tái cấu trúc lại lớp Ci từ các mảnh tương ứng đã được phân chia. - Tính tách biệt (disjointness): Chỉ định danh và các phương thức truy cập định danh mới được lặp lại trong các mảnh, các thuộc tính và phương thức khác của một lớp Ci chỉ thuộc duy nhất một mảnh 𝑓j 𝑖. Định nghĩa 2.3: Một phương án cấp phát cho lớp Ci là định vị tập các mảnh {𝑓1 𝑖 , 𝑓2 𝑖 ,..., 𝑓𝑛 𝑖} của lớp Ci vào một tập các trạm S = {s1, s2, , sk} trong mạng liên kết sao cho tổng kích thước các 12 mảnh tại mỗi trạm không vượt quá kích thước của trạm. Nếu khả năng lưu trữ các trạm không hạn chế thì có thể bỏ qua tham số kích thước các trạm. Định nghĩa 2.4: Với mỗi phương thức 𝑚𝑗 𝑖 và một thuộc tính 𝑎𝑙 𝑖 của một lớp Ci, giá trị MAU(𝑚𝑗 𝑖 , 𝑎𝑙 𝑖) được định nghĩa như sau: MAU(𝑚𝑗 𝑖, 𝑎𝑙 𝑖) = { 1 nếu 𝑚𝑗 𝑖 sử dụng 𝑎𝑙 𝑖 0 nếu ngược lại Thiết lập tất cả các giá trị MAU(𝑚𝑗 𝑖 , 𝑎𝑙 𝑖) cho tất cả các phương thức và thuộc tính của lớp Ci nhận được ma trận phương thức sử dụng thuộc tính MAUi. Định nghĩa 2.5: Với mỗi phương thức 𝑚𝑗 𝑖 của của một lớp Ci và một phương thức 𝑚𝑙 ℎ của một lớp Ch, giá trị MMU(𝑚𝑗 𝑖 , 𝑚𝑙 ℎ ) được định nghĩa như sau: MMU(𝑚𝑗 𝑖, 𝑚𝑙 ℎ ) = { 1 nếu 𝑚𝑗 𝑖 sử dụng 𝑚𝑙 ℎ 0 nếu ngược lại 2.1.2. Thông tin về ứng dụng Với tính đóng gói của các đối tượng, các truy vấn ứng dụng chỉ truy cập được các đối tượng thông qua các phương thức. Định nghĩa 2.6: Với mỗi truy vấn 𝑞𝑗 𝑖 truy cập vào lớp Ci và một phương thức 𝑚𝑙 𝑖 của lớp Ci, giá trị 𝑄𝑀𝑈(𝑞𝑗 𝑖 , 𝑚𝑙 𝑖 ) được định nghĩa như sau: 𝑄𝑀𝑈(𝑞𝑗 𝑖 , 𝑚𝑙 𝑖 ) = { 1 nếu 𝑞𝑗 𝑖 sử dụng 𝑚𝑙 𝑖 0 nếu ngược lại Thiết lập tất cả các giá trị 𝑄𝑀𝑈(𝑞𝑗 𝑖 , 𝑚𝑙 𝑖 ) cho tất cả các truy vấn vào lớp Ci với các phương thức của lớp Ci nhận được ma trận truy vấn sử dụng phương thức QMUi. Định nghĩa 2.7: Với mỗi truy vấn 𝑞𝑗 𝑖 truy cập vào lớp Ci và một trạm sk trong mạng kết nối, giá trị tần suất truy cập của truy vấn vào các trạm 𝑄𝑆𝐹(𝑞𝑗 𝑖 , 𝑠𝑘) là số lần truy cập của truy vấn 𝑞𝑗 𝑖 vào trạm sk. Thiết lập tất cả các giá trị 𝑄𝑆𝐹(𝑞𝑗 𝑖 , 𝑠𝑘) cho tất cả các truy vấn vào lớp C i với tất cả các trạm sk nhận được ma trận tần suất truy cập các truy vấn vào các trạm QSFi. 2.1.3. Thông tin về mạng Ma trận chi phí giao tiếp giữa các trạm kí hiệu là SSC (Site Site Cost) biểu diễn chi phí giao tiếp giữa các trạm. 2.1.4. Bảng tóm tắt các kí hiệu đầu vào Bảng 2.1: Tóm tắt các kí hiệu sử dụng Kí hiệu Mô tả ý nghĩa Ci Lớp thứ i trong CSDL HĐT PT. Ai Tập các thuộc tính của lớp Ci. 13 i ja Thuộc tính thứ j của lớp Ci. Mi Tập các phương thức của lớp Ci. i jm Phương thức thứ j của lớp Ci. Qi Tập các truy vấn vào lớp Ci. i jq Truy vấn thứ j vào lớp Ci. S Tập các trạm sk Trạm thứ k MAUi Ma trận biểu diễn sự sử dụng thuộc tính của phương thức của lớp Ci. QMUi Ma trận biểu diễn sự sử dụng phương thức của truy vấn của lớp Ci. QSFi Ma trận biểu diễn tần suất truy cập vào trạm của các truy vấn của lớp Ci. SSC Ma trận chi phí giao tiếp giữa các trạm Fi Tập các mảnh của lớp Ci i jf Mảnh thứ j của lớp Ci MSizei Mảng kích thước các phương thức của lớp Ci MSitei Mảng chứa thông tin trạm của các phương thức (sau khi phân mảnh và cấp phát) 2.2. Hàm mục tiêu của phân mảnh và cấp phát Mục tiêu của phân phân mảnh và cấp phát là tối thiểu hóa chi phí xử lý các truy vấn, chi phí này bao gồm chi phí lưu trữ dữ liệu, chi phí truyền dữ liệu, chi phí đọc dữ liệu. Trong môi trường phân tán, chi phí truyền dữ liệu là chi phí quan trọng nhất, vì vậy các thuật toán đề xuất trong luận án tập trung vào việc giảm chi phí truyền dữ liệu. Tổng chi phí truyền dữ liệu được xác định như sau: 𝑇𝐶 = ∑ ∑ ∑ 𝑄𝑀𝑈𝑖(𝑞𝑙 𝑖, 𝑚𝑗 𝑖) ∗ 𝑆𝑆𝐶(𝑀𝑆𝑖𝑡𝑒(𝑚𝑗 𝑖), 𝑠𝑘) ∗ 𝑀𝑆ize(𝑚𝑗 𝑖) ∗ 𝑄𝑆𝐹𝑖(𝑞𝑙 𝑖, 𝑠𝑘) 𝑚𝑗 𝑖𝑀𝑖𝑠𝑘S ii l Qq  (2.1) Trong công thức 2.1 chi phí được tính là tổng chi phí thức hiện tất cả các truy vấn. Với mỗi truy vấn tính chi phí thực hiện truy vấn đó trên từng trạm, nếu truy vấn có sử dụng một phương thức của lớp mà phương thức đó không cùng trạm với truy vấn thì phải tính chi phí chuyển phương thức từ trạm đang định vị sang trạm mà truy vấn đang thực hiện. 2.3. Biến đổi sự sử dụng phương thức và tần suất truy cập Trước hết phải biến đổi ma trận sử dụng phương thức và ma trận tần suất truy cập trạm theo các quan hệ trong CSDL HĐT vì các quan hệ này ảnh hưởng đến sự phân mảnh và cấp phát. Các mối quan hệ được xem xét theo ba kiểu: quan hệ kế thừa, quan hệ bao gồm (thuộc tính phức), 14 phương thức phức. Các thông tin các truy vấn theo các quan hệ được bổ sung vào các ma trận QMU và QSF Thuật toán 2.1 - Modify_1(Ci) //Biến đổi QMUi và QSFi theo quan hệ kế thừa Đầu vào: - CSDL gồm tập C các lớp trong đó có lớp Ci cần phân mảnh - Các ma trận QMU and QSF của các lớp Đầu ra: - QMUi và QSFi sau khi biến đổi Các bước thực hiện: for (each Ch  C) do if (Ch inherited from class Ci) then//C h kế thừa Ci for (each h kq  Qh) do //mỗi truy vấn trên lớp Ch if ( h kq uses methods i jm of class Ci) then begin //Thêm 1 dòng tương ứng h kq vào QMUi và QSFi; AddRow( h kq , QMUi, QSFi); end {if h kq } end {for h kq } end {for Ch} end {Thuật toán 2.1} Thuật toán 2.2: Biến đổi QMUi và QSFi theo quan hệ bao gồm Thuật toán 2.3: Biến đổi QMUi và QSFi theo phương thức phức tạp 2.4. Thuật toán AttrFrag phân mảnh dựa trên thuộc tính Phân mảnh đựa trên tương quan thuộc tính là một phương pháp kinh điển trong CSDL phân tán quan hệ. Trong CSDL HĐT PT Ezeife đã đề nghị các thuật toán phân mảnh dựa trên tương quan phương thức. Theo thuật toán của Ezeife có những trường hơp dữ liệu sử dụng cho các phương thức này và các phương thức không cùng một mảnh. Điều này dẫn đến việc thực hiện phương thức phải có chi phí truyền dữ liệu. Do đó chúng tôi đề nghị một thuật toán phân mảnh dựa trên thuộc tính, sau khi phân mảnh xong thuộc tính sẽ nhóm các phương thức sử dụng thuộc tính về cùng nhóm với nhau, các phương thức có thể được nhân bản ở vài mảnh nếu các thuộc tính trong các mảnh này cùng được sử dụng bởi phương thức. 2.4.1. Xây dựng ma trận truy vấn sử dụng thuộc tính Định nghĩa 2.8: Với mỗi truy vấn 𝑞𝑗 𝑖 truy cập vào lớp Ci và một thuộc tính 𝑎𝑙 𝑖 của lớp Ci, giá trị 𝑄𝐴𝑈(𝑞𝑗 𝑖 , 𝑎𝑙 𝑖 ) được định nghĩa như sau: 𝑄𝐴𝑈(𝑞𝑗 𝑖 , 𝑎𝑙 𝑖 ) = { 1 nếu 𝑞𝑗 𝑖 sử dụng 𝑎𝑙 𝑖 0 nếu ngược lại 15 Giá trị 𝑄𝐴𝑈 được tính thông qua QMU và MAU: Sau khi biến đổi các ma trận truy vấn sử dụng phương thức (QMU) và ma trận tần suất truy câp của truy vấn vào các trạm (QSF), nhân ma trận QMU với ma trận MAU sẽ được ma trận truy vấn sử dụng thuộc tính QAU. 2.4.2. Xây dựng ma trận tương quan thuộc tính Tương quan thuộc tính (Attribute Affinity) giữa hai thuộc tính 𝑎𝑗 𝑖 và 𝑎𝑙 𝑖 trong một lớp Ci là tổng số tần suất truy cập của tất cả các truy vấn vào cùng cả hai thuộc tính ở mọi site: 𝐴𝐴(𝑎𝑗 𝑖 , 𝑎𝑙 𝑖) = ∑ ∑ 𝑟𝑒𝑓(𝑞𝑚 𝑖 , 𝑠𝑘)𝑄𝑆𝐹(𝑞𝑚 𝑖 , 𝑠𝑘) 𝑘𝑚|𝑄𝐴𝑈(𝑞𝑚 𝑖 ,𝑎𝑗 𝑖 )=1&𝑄𝐴𝑈(𝑞𝑚 𝑖 ,𝑎𝑙 𝑖)=1 Trong đó:  𝑟𝑒𝑓(𝑞𝑚 𝑖 , 𝑠𝑘) là số truy cập thuộc tính 𝑎𝑗 𝑖 và 𝑎𝑙 𝑖 cho mỗi truy vấn 𝑞𝑚 𝑖 ở site sk.  𝑄𝑆𝐹(𝑞𝑚 𝑖 , 𝑠𝑘) là tần suất truy cập của 𝑞𝑚 𝑖 ở site sk Xây dựng tương quan thuộc tính giữa tất cả các cặp thuộc tính trong lớp Ci cho ta một ma trận tương quan thuộc tính AA (Attributes Affinity matrix). Ma trận tương quan thuộc tính sẽ được dùng cho các thuật toán phân mảnh nói chung và các thuật toán phân mảnh dọc nói riêng. 2.4.3. Sử dụng thuật toán BEA để phân mảnh Thuật toán BEA (Bond Energy Algorithm) được sử dụng trong các thuật toán phân mảnh dọc theo tương quan thuộc tính. Thuật toán nhận đầu vào là ma trận tương quan thuộc tính, hoán vị các hàng và các cột rồi sinh ra ma trận tương quan thuộc tính được phân nhóm CA (Clustered Affinity matrix). Hoán vị được thực hiện sao cho số đo tương quan chung AM (global affinity measure) là lớn nhất. Mục đích của việc phân nhóm là kết hợp các giá trị gần nhau lại với nhau. Sự phân đoạn các thuộc tính được ra dọc theo đường chéo chính của ma trận CA. 2.4.4. Bổ sung các phương thức vào các mảnh Sau khi thực hiện phân hoạch các thuộc tính theo thuật toán BEA, bổ sung thuộc tính định danh vào tất cả các mảnh. Tiếp theo dựa vào ma trận phương thức sử dụng thuộc tính MAU, bổ sung các phương thức vào cùng mảnh với thuộc tính mà nó sử dụng. Như vậy các phương thức có thể được nhân bản ở nhiều mảnh, điều này có thể làm chi phí lưu trữ tăng lên nhưng sẽ giúp cho chi phí xử lý truy vấn giảm đi. 2.5. Thuật toán FragAlloS phân mảnh đồng thời cấp phát Trong đa số các hướng tiếp cận về phân mảnh và cấp phát lớp các đối tượng, việc phân mảnh và cấp phát được thực hiện ở hai giai đoạn riêng biệt, phân mảnh được thực hiện trước, sau đó sẽ định vị các mảnh vào các trạm. Thông tin về mạng chỉ dùng trong cấp phát mà không dùng trong phân mảnh. Luận án đề nghị hướng tiếp cận phân mảnh và cấp phát đồng thời, sử dụng thông tin mạng cho cả phân mảnh và cấp phát để tăng tính hiệu quả của việc phân mảnh và cấp phát trong CSDL HĐT. (2.2) 16 2.5.1. Mô hình chi phí Chi phí truy cập một phương thức i jm ở một trạm sk là tổng tần suất truy cập của các truy vấn có sử dụng phương thức i jm trên trạm sk, chi phí này được kí hiệu request và thiết lập như sau: Để thiết lập chi phí truy cập mỗi phương thức của một lớp Ci từ các trạm chúng ta sẽ xây dựng ma trận requesti, ma trận này chính là tích của hai ma trận SQFi (là ma trận chuyển vị của SQFi) và QMUi. Chi phí khi định vị một phương thức i jm vào một trạm sk là chi phí truy cập vào phương thức i jm từ tất cả các trạm sl ≠ sk, chi phí này được kí hiệu là pay và được thiết lập như sau: Để thiết lập chi phí định vị mỗi phương thức của một lớp Ci vào các trạm chúng ta sẽ xây dựng ma trận payi, ma trận này chính là tích của 2 ma trận requesti và SSC. Dựa vào ma trận payi để xác định phương án cấp phát các phương thức của một Ci. Thuật toán đề nghị là một thuật toán heuristic, mục tiêu của thuật toán là định vị i jm vào trạm sk mà giá trị )m ,(spay ijk i là bé nhất. 2.5.2. Xây dựng thuật toán Thuật toán phân mảnh và cấp phát đề xuất theo hướng tiếp cận heuristic như sau: Dựa vào ma trận payi, định vị phương thức i jm vào trạm sk mà chi phí giao tiếp là bé nhất. Thiết lập một phương án định vị, sau đó gom cụm các phương thức ở cùng một trạm vào một mảnh. Trong mỗi mảnh, với từng phương thức xác định các thuộc tính mà các phương thức này sử dụng để đưa vào mảnh này. Thuật toán 2.6 - FragAlloS(Ci): Phân mảnh và cấp phát Đầu vào: - CSDL gồm tập các lớp C trong đó có lớp Ci cần phân mảnh - Các ma trận QMU and QSF, MAU của các lớp. - Ma trận chi phí giữa các trạm SSC Đầu ra: - Phương án phân mảnh và cấp phát cho lớp Ci Các bước của thuật toán: //Bước 1: Biến đổi QMU và QSF theo các thuật toán biến đổi Modify_1(Ci); Modify_2(Ci); Modify_3(Ci); //Bước 2: Xây dựng ma trận requesti requesti = Nhan2matran(SQFi, QMUi); //Bước 3: Xây dựng ma trận payi payi = Nhan2matran(requesti, SSC); //Bước 4: Xác định phương án cấp phát dựa vào ma trận payi for (each 𝑚𝑗 𝑖 ) do begin (2.7) (2.8)    ii l i l i k i l ii jk i Qq )m ,(q QMU * )s ,(q QSF )m ,(s request ij    Sl lk i jk ii jk i s )s ,(s SSC*)m ,(s request )m ,(spay 17 Chọn sk mà giá trị 𝑝𝑎𝑦𝑖(𝑠𝑘, 𝑚𝑗 𝑖) bé nhất; Cấp phát 𝑚𝑗 𝑖 vào trạm sk; Thêm 𝑚𝑗 𝑖 vào Fk; end {for 𝑚𝑗 𝑖 } Thêm vào mỗi mảnh phương thức truy cập định danh //Bước 5: Dựa vào MAU thêm các thuộc tính vào các mảnh for (each 𝑚𝑗 𝑖 ) do for (each 𝑎𝑙 𝑖) do if (MAU(𝑚𝑗 𝑖 ,𝑎𝑙 𝑖)=1) then begin Thêm 𝑎𝑙 𝑖 vào mảnh có 𝑚𝑗 𝑖 ; Định vị 𝑎𝑙 𝑖 vào trạm mà 𝑚𝑗 𝑖 định vị; end; {if} end; {for 𝑎𝑙 𝑖} end; {for 𝑚𝑗 𝑖 } end; {Thuật toán 2.6} 2.5.3. Đánh giá thuật toán Thuật toán phân mảnh là chính xác vì nó thoả mãn ba nguyên tắc cơ bản của phân mảnh. Nếu một lớp cần phân mảnh có tập các thuộc tính là A, tập các phương thức là M, tập các truy vấn là Q, mạng kết nối gồm tâp các trạm S thì độ phức tạp của thuật toán được xác định là (|C|*|M|*|Q|+|M|*|Q|*|S|). Hơn nữa, hiện nay độ phức tạp của thuật toán nhân hai ma trận N*N đã được cải tiến đạt đến độ phức tạp N2.38 , vì vậy độ phức tạp của bước 3 trong thuật toán 2.6 chỉ còn là N2.38 với N là giá trị lớn nhất trong ba giá trị |M|, |Q| và |S|. Có thể liệt kê các ưu điểm của hướng tiếp cận heuristic trong thuật toán này: - Chỉ các phương thức truy cập định danh mới lặp lại trong tất cả các mảnh. - Các thông tin về mạng được sử dụng trong cả hai giai đoạn phân mảnh và cấp phát. - Độ phức tạp của thuật toán là thấp - Số lượng tối đa các mảnh chỉ bằng số lượng các trạm. 2.5.4. Thực nghiệm thuật toán FragAlloS trên OO7 Thuật toán sinh ngẫu nhiên các bộ dữ liệu gồm có mã trận dữ liệu SSC, QMU, QSF. Mô phỏng dữ liệu chạy thử với OO7 được thực hiện như sau: - Sử dụng đối tượng Module như là các trạm - Lớp cần đánh giá sẽ được mở rộng từ đối tượng AtomicPart sẵn có của OO7 bằng cách bổ sung các phương thức như thiết lập ở các ma trận trên. Với cách thiết kế lược đồ CSDL nói trên, bài toán đánh giá được thực hiện theo 3 phương án phân mảnh như sau: - Phương án 1: Phương án phân mảnh và cấp phát được sinh ra theo thuật toán FragAlloS - Phương án 2: Cấp phát tất cả các phương thức mi vào một trạm s1 (hoặc s2, s3, s4) - Phương án 3: Cấp phát ngẫu nhiên. 18 Chi phí của các phương án được biểu diễn theo biểu đồ như Hình 2.1, kết quả thử nghiệm cho thấy phương án sinh ra do thuật toán FragAlloS (phương án 1) có chi phí thấp nhất. Hình 2.1: Biểu đồ so sánh chi phí các phương án 2.6. So sánh các thuật toán So sánh về độ phức tạp: Thuật toán FragAlloS thực hiện cả cấp phát và phân mảnh với độ phức tạp chỉ tương đương thuật toán Ezeife mà Ezeife chỉ thực hiện một giai đoạn là phân mảnh. Cài đặt thử nghiệm: - Cài đặt 3 thuật toán đầu. Lấy kết quả phân mảnh của AttrFrag và thuật toán của Ezeife kiểm tra tất cả các phương án cấp phát và so sánh với phương án của FragAlloS - Sinh ngẫu nhiên các bộ dữ liệu QSF, QMU, MAU, SSC, kích thước các phương thức và thuộc tính. Kết quả: o AttrFrag và Ezeife: 20% bộ dữ liệu cho kết quả thuật toán AttrFrag có chi phí nhỏ hơn Ezeife. 80% bộ dữ liệu cho kết quả thuật toán AttrFrag có chi phí bằng Ezeife. o FragAlloS và Ezeife: 70% bộ dữ liệu cho kết quả thuật toán FragAlloS có chi phí nhỏ hơn Ezeife. 30% bộ dữ liệu cho kết quả thuật toán FragAlloS có chi phí bằng Ezeife. 2.7. Kết luận chương 2 Phân mảnh và cấp phát là các kỹ thuật thiết kế CSDL mức logic nhằm giảm bớt các truy xuất không cần thiết đến dữ liệu, cho phép thực hiện song song các truy vấn trên các mảnh, nhờ đó hiệu năng của hệ thống sẽ được cải thiện. Trong CSDL HĐT PT cũng có hai kiểu phân mảnh là phân mảnh ngang và phân mảnh dọc. Tuy nhiên, do mô hình CSDL hướng đối tượng có các đặc trưng riêng nên để áp dụng những phương pháp phân mảnh từ mô hình quan hệ sang mô hình đối tượng phải biến đổi các tham số đầu vào theo cấu trúc lớp và mối quan hệ giữa các lớp trong CSDL HĐT. Luận án đề xuất một thuật toán AttrFrag phân mảnh dựa trên tương quan thuộc tính, thuật toán này có hiệu quả tương đương thuật toán phân mảnh dựa trên tương quan phương thức của Ezeife. Thuật toán tiếp theo được đề xuất trong chương 2 là thuật toán heuristic FragAlloS, thuật toán FragAlloS thực hiện phân mảnh và cấp phát đồng thời, thuật toán FragAlloS đã được đánh giá tốt cả về độ phức tạp và kết quả thực nghiệm. ,0 1000000,0 2000000,0 3000000,0 4000000,0 5000000,0 6000000,0 7000000,0 8000000,0 9000000,0 10000000,0 Phương án 1 Phương án 2/s1 Phương án 2/s2 Phương án 2/s3 Phương án 2/s4 Phương án 3 19 CHƯƠNG 3 - TỐI ƯU HÓA BIỂU THỨC ĐƯỜNG DẪN TRONG CSDL HĐT PT Để hạn chế việc truyền dữ liệu chúng tôi đề xuất thuật toán BloomOpt để lọc các dữ liệu không cần thiết. Tiếp đến là đề xuất thuật toán quy hoạch động ExpPathOpt để tối ưu hóa truy vấn có các biểu thức truy vấn kết hợp với nhau qua toán tử AND. Thuật toán ExpPathOpt xây dựng phương án tối ưu từ các phương án tối ưu của các truy vấn con, tương ứng với việc tách đồ thị truy vấn thành các đồ thị con. Các kết quả được trình bày trong các bài báo (2) và (5). 3.1. Tối ưu hóa truyền dữ liệu trong biểu thức đường dẫn - Thuật toán BloomOpt 3.1.1. Truy vấn có biểu thức đường dẫn Khi thực hiện truy vấn trong CSDL HĐT, nếu các lớp có các thuộc tính phức tạp sẽ dẫn dắt truy vấn tới các đối tượng lồng nhau theo một biểu thức đường dẫn. Giả sử truy vấn ở đây là liệt kê họ tên các cán bộ nghiên cứu trong thành phố Hà nội và có thể viết dưới dạng: SELECT c.ten FROM CanBoNghienCuu as c WHERE c.coQuan.diaChi.thanhPho =”Hà nội” c.coQuan.diaChi.thanhPho là một biểu thức đường dẫn hay còn gọi là kết nối ẩn. Mỗi đối tượng của lớp có một định danh duy nhất (OID) được hệ thống khởi tạo, các kết nối ẩn được thực hiện thông qua các định danh này. 3.1.2. Bộ lọc Bloom Bộ lọc Bloom là một cấu trúc dữ liệu xác suất để kiểm tra xem một phần tử có nằm trong một tập hợp hay không. Cấu trúc của một bộ lọc Bloom bao gồm: - Một dãy gồm n bit, được khởi tạo tất cả các giá trị là 0 - Một tập các hàm băm h1, h2, ..hk. Mỗi hàm băm sẽ ánh xạ các giá trị khóa vào một giá trị trong khoảng từ 1 đến n, tương ứng bit của bộ lọc - Một tập S gồm m giá trị khóa Với mỗi giá trị khóa k trong S: băm nó theo các hàm băm, hàm băm thứ i có giá trị hi(k), thiết lập bit thứ hi(k) của bộ lọc Bloom thành giá trị 1. Chức năng của bô ̣loc̣ Bloom là xác điṇh môṭ phần tử x có thuôc̣ tâp̣ S hay không. Nó đươc̣ dùng là bước tiền xử lý của quá trình tìm kiếm. Nếu sau khi loc̣ qua bô ̣loc̣ Bloom trả về kết quả “không” thì không cần thưc̣ hiêṇ viêc̣ tìm kiếm nữa, nếu trả về kết quả “có thể có” thì thưc̣ hiêṇ tìm kiếm. Với bộ lọc Bloom sẽ không có khả năng xảy ra lỗi false negative mà chỉ có thể gặp phải lỗi false positive với xác suất rất nhỏ. Xác xuất false positive có thể giảm xuống nếu chọn giá trị n, k, và m thích hợp. Trong trường hợp tốt nhất, giá trị k tối ưu là 𝑘 = 𝑛 𝑚 𝑙𝑛2 , khi đó xác suất false positive được cực tiểu hóa theo k và sẽ là 𝑝 = 2−𝑘 = 2−𝑛𝑙𝑛2/𝑚 => 𝑛 = − 𝑚𝑙𝑛𝑝 (𝑙𝑛2)2 . 20 3.1.3. Thuật toán tối ưu hóa biểu thức đường dẫn 3.1.3.1 Sử dụng bộ lọc Bloom để giảm chi phí giao tiếp Giả sử lớp Ci có một thuộc tính ak là một đối tượng của lớp Cj, lớp Ci đặt tại trạm S, lớp Cj đặt tại trạm R. Giả sử có truy vấn chứa biểu thức đường dẫn từ lớp Ci sang lớp Cj. Ý tưởng chính ở đây là thay vì truyền toàn bộ các đối tượng của Cj từ S đến R đề kết hợp với Ci (hoặc ngược lại), chúng ta sẽ lọc một số đối tượng của Cj mà cần thiết cho việc kết nối với Ci. Cơ chế lọc sẽ được thực hiện bởi bộ lọc Bloom. Trường hợp 1: Truy vấn tại trạm S - Xây dựng bộ lọc Bloom cho tất cả các đối tượng thuộc lớp Ci theo giá trị thuộc tính ak, gọi là BF(Ci). - Gửi BF(Ci) đến R (trạm chứa Cj), BF(Ci) được sử dụng để lọc các đối tượng của Cj. - Gửi các đối tượng của Cj mà thỏa mãn điều kiện lọc ở trên đến S - Thực hiện việc truy vấn từ các đối tượng của Ci và Cj tại S Trường hợp 2: Truy vấn tại trạm R - Xây dựng bộ lọc Bloom cho tất cả các đối tượng thuộc lớp Cj theo giá trị thuộc tính định danh, gọi là BF(Cj). - Gửi BF(Cj) đến S (trạm chứa Ci), BF(Cj) được sử dụng để lọc các đối tượng của Ci. - Gửi các đối tượng của Ci mà thỏa mãn điều kiện lọc ở trên đến R - Thực hiện việc truy vấn từ các đối tượng của Ci và Cj tại R Trường hợp 3: Truy vấn tại trạm không chứa cả Ci và Cj, giả sử là trạm P (P ≠ S, P ≠ R) - So sánh chi phí để truyền dữ liệu giữa 3 trạm và chọn trường hợp tốt nhất để thực hiện, cũng sử dụng bộ lọc Bloom để giảm truyền dữ liệu. 3.1.3.2 Thảo luận về các tham số Trong phần trước chúng ta đã phân tích sai số và có công thức 𝑛 = − 𝑚𝑙𝑛𝑝 (𝑙𝑛2)2 . Khi chọn p là một sai số cố định có giá trị đủ bé thì kích thước bộ lọc Bloom n tuyến tính với số lượng các giá trị khóa, trong trường hợp này là số lượng đối tượng của lớp cần xây dựng bộ lọc Bloom (Ci hoặc Cj). Bộ lọc Bloom có thể xây dựng một lần cho mỗi lớp và sử dụng nhiều lần khi có nhiều kết nối với các lớp khác nhau. 3.2. Tối ưu hóa biểu thức đường dẫn – Thuật toán PathExpOt 3.2.1. Đồ thị biểu diễn truy vấn dạng các biểu thức đường dẫn Giả sử truy vấn ở đây là liệt kê mã số và tên các đề tài mà chủ nhiệm đề tài là các cán bộ của các cơ quan thuộc thành phố Hà nội và có viết sách thuộc thể loại CNTT. Truy vấn có thể viết dưới dạng: SELECT d.maSo, d.ten FROM DeTai as d WHERE d.chuNhiem.coQuan.diaChi.thanhPho=”Hà nội” AND d.chuNhiem.tacGiaSach.theLoai.ten=”CNTT” 21 Truy vấn được biểu diễn bởi dưới dạng của một đồ thị có hướng gọi là đồ thị truy vấn. Ví dụ về một đồ thị trong Hình 3.5. Hình 3.5. Đồ thị truy vấn 3.2.2. Thuật toán tối ưu hóa 3.2.2.1 Mô hình tối ưu hoá truy vấn Thiết kế của các bộ tối ưu hoá chia thành ba thành phần: - Không gian thực thi là tập hợp tất cả các kế hoạch thực thi - Mô hình chi phí dự đoán chi phí của một kế hoạch thực thi - Chiến lược tìm kiếm để đạt được kế hoạch có chi phí tối thiểu Chi phí cho phép nối được tính theo thuật toán nối với bộ lọc Bloom. Chiến lược tìm kiếm sử dụng trong bài báo này là kỹ thuật lập trình động. 3.2.2.2 Tách cây truy vấn thành các cây con cảm sinh Nguyên lí tối ưu hóa đặt vấn đề rằng một kế hoạch thực thi tối ưu cho một truy vấn được tạo ra từ các kế hoạch thưc thi tối ưu con cho các truy vấn con. Gọi truy vấn ban đầu là truy vấn n-lớp, truy vấn i-lớp là một truy vấn con của truy vấn ban đầu. Để tạo ra một kế hoạch tối ưu cho truy vấn i-lớp bởi lập trình động, kế hoạch tối ưu hóa cho truy vấn con của nó từ 1-lớp đến (i-1)-lớp phải được tạo ra trước. Một truy vấn i-lớp có thể được tách thành một cặp truy vấn con r-lớp và (i-r)-lớp. Đồ thị tương ứng với truy vấn i-lớp bị chia thành hai đồ thị con liên thông lần lượt có r đỉnh và (i-r) đỉnh. Trong một cây, việc loại bỏ một cạnh sinh hai đồ thị con cũng là các cây, hai cây con này là các cây con cảm sinh của cây ban đầu. Cạnh được loại bỏ bao hàm một phép nối ẩn bởi vì một cạnh của đồ thị truy vấn mang nghĩa các tham chiếu đối tượng. Kết quả của truy vấn i-lớp được sinh ra bởi sự thực hiện phép nối ẩn giữa các kết quả của các truy vấn con r-lớp và (i-r)-lớp. Trước khi thực hiện phép nối ẩn, việc truyền dữ liệu phải được thực hiện nếu các kết quả của các truy vấn con không ở cùng trạm. Do đó, chi phí của môt truy vấn i-lớp có thể được tính bởi tổng các chi phí của truy vấn con r-lớp và (i-r)-lớp, chi phí thực hiện phép nối ẩn giữa các kết quả của các truy vấn con, và chi phí cho việc truyền dữ liệu nếu cần. Thuật toán tối ưu hoá sử dụng các cây con cảm sinh của cây truy vấn làm đầu vào. Do vậy việc đầu tiên là liệt kê các cây con cảm sinh. Các cây con cảm sinh được sinh được kí hiệu là Ti, j trong đó i là số đỉnh của cây, j là số thứ tự của cây cảm sinh i đỉnh. 3.2.2.3 Thuật toán tối ưu hóa Thuật toán bao gồm ba bước diaChi coQuan theLoai CanBo (2) tacGiaSach chuNhiem DeTai (1) LoaiSach (4) DiaChi (1) ToChuc (3) Sach (4) 22 - Khởi tạo: Rút gọn các lớp (hoặc mảnh lớp) bằng các phép chiếu trên các thuộc tính cần để lại (OID, thuộc tính nối, thuôc tính cần hiển thị sau truy vấn) - Tìm phương án tối ưu cho các cây con cảm sinh, lần lượt từ các cây có một đỉnh đến cây có n đỉnh - Thực thi phương án tối ưu đã tìm được Thuật toán tìm phương án tối ưu - Bước 1: Khởi tạo chi phí các cây có một đỉnh, chi phí của cây một đỉnh tại mỗi trạm chính là chi phí truyền cây từ trạm của nó đến trạm này. - Bước 2: Xây dựng các phương án tối ưu cho các cây từ 2 đỉnh. o Bước 2.1: Tìm phương án tối ưu thực hiện Ti,j qua các phép nối (Find_JoinPlan). Với mỗi cây Ti, j duyệt tất cả các cách tách cây thành 2 cây con cảm sinh Tr ,p và Ti-r, q, tìm cách tách mà chi phí Ti, j là nhỏ nhất. Chi phí Ti, j tại trạm t được tính bằng tổng chi phí Tr ,p và Ti-r, q tại trạm t và chi phí nối 2 cây này tại trạm t. Lưu lại phương án thực hiện tối ưu. o Bước 2.2: Tìm phương án tối ưu thực hiện Ti, j qua các phép truyền (Find_TransPlan). Chi phí Ti, j tại trạm t sẽ được tính lại nếu chi phí này lớn hơn tổng chi phí của Ti, j tại trạm x và chi phí truyền Ti, j từ trạm x tới trạm t. Lưu lại phương án thực hiện tối ưu. Thuật toán 3.5 PathExpOpt Đầu vào: - G =(V, E); V={F1, F2,, Fn}; - fragSize: Mảng lưu kích thước của các mảnh - fragSite: Mảng lưu trạm mà các mảnh định vị - transCost: Mảng lưu chi phí giữa các trạm - T: Các cây con cảm sinh của cây truy vấn ban đầu - treeSize: Mảng kích thước các cây con, được tính khi sinh cây Đầu ra: Optimal Solution (result) Các bước của thuật toán: //Bước 1: Khởi tạo chi phí các cây con 1 đỉnh for (u=1; u<=n; u++) //n là số các mảnh begin x = fragSiteu; for (t = 1; t<=s; t++) //s là số các trạm Cost_Transt(T1,u)= fragSizeu * transCostx,t; end; {for u} //Bước 2: Xây dựng các phương án tối ưu cho các cây từ 2 đỉnh for (i=2; i<=n; i++) //Bước 2.1: Tìm phương án tối ưu thực hiện Ti,j qua các phép nối for (j=1; j<mi; j++) //mi là số cây con cảm sinh có i đỉnh for (t = 1; t<=s; t++) JoinPlant(Ti,j)= Find_JoinPlan(Ti,j); end; {for t} 23 end; {for j} //Bước 2.2: Tìm phương án tối ưu thực hiện Ti,j qua phép truyền for (t = 1; t<=s; t++) for (j=1; j<mi; j++) TransPlant(Ti,j)= Find_TransPlant(Ti,j); end; {for j} end; {for t} end; {for i} result = TransPlank(Tn,1); //k là trạm phát sinh truy vấn end; {Thuật toán 3.5} 3.2.2.4 Đánh giá độ phức tạp Trường hợp tốt nhất đồ thị truy vấn là đồ thị chuỗi (tương ứng với truy vấn chuỗi) thì số cây con cảm sinh có i đỉnh là n-i+1, khi đó độ phức tạp của thuật toán là O(sn3). Trong trường hợp xấu nhất đồ thị truy vấn là đồ thị sao (tương ứng với truy vấn hình sao) thì số cây con cảm sinh có i đỉnh là 𝐶𝑖−1 𝑛−1, độ phức tạp của thuật toán trong trường hợp này là O(s2n-1). 3.2.3. So sánh các thuật toán khác Hình 3.1: Biểu đồ so sánh chi phí PathExpOpt với các thuật toán khác 3.3. Kết luận chương 3 Với bộ lọc Bloom thay vì gửi toàn bộ dữ liệu chúng ta chỉ gửi đại diện của nó đến nơi cần kiểm tra, như vậy chi phí truyền sẽ giảm đi. Đặc biệt với các mảnh dữ liệu chỉ làm nhiệm vụ thực hiện phép kết nối ẩn trung gian mà không cần lấy ra thông tin gì thì bộ lọc Bloom thực sự hiệu quả vì chỉ cần gửi bộ lọc để lọc dữ liệu, không cần lấy các bộ dữ liệu đã lọc gửi trả lại để thực hiện phép kết nối dữ liệu. Luận án đề xuất thuật toán BloomOpt thực hiện việc tối ưu hóa kết nối hai lớp trong biểu thức đường dẫn bằng cách sử dụng bộ lọc Bloom. Truy vấn với biểu thức đường dẫn qua nhiều lớp có thể biểu diễn bởi một đồ thị truy vấn. Đồ thị này có thể tách thành các đồ thị con cảm sinh, các đồ thị con cảm sinh này tương ứng với các truy vấn con. Luận án đề xuất thuật toán PathExpOpt theo hướng tiếp cận quy hoạch động tách bài toán thành nhiều bài toán nhỏ hơn, tương đương với việc tách đồ thị thành các đồ thị con. Mô hình chi phí được xây dựng giúp cho việc lựa chọn các bài toán con tối ưu. ,0 50000,0 100000,0 150000,0 200000,0 250000,0 Bộ dữ liệu 1 Bộ dữ liệu 2 Bộ dữ liệu 3 Bộ dữ liệu 4 PathExpOpt Sun et al Kim and Lee So sánh chi phí thực hiện phương án tối ưu của thuật toán PathExpOpt và hai thuật toán của Sun và các cộng sự, và Kim và Lee trên một số bộ dữ liệu. Thuật toán chúng tôi đề xuất có chi phí tốt nhất vì đã kết hợp các biểu thức đường dẫn để thực hiện cũng như dùng bộ lọc Bloom để hạn chế việc truyền dữ liệu. 24 KẾT LUẬN Mục đích của luận án là nghiên cứu các vấn của bài toán đánh giá hiệu năng, thiết kế và tối ưu hóa truy vấn trong môi trường CSDL HĐT PT. Các đóng góp chính của luận án bao gồm:  Đánh giá hiệu năng một số CSDL HĐT phổ biến như Db4o thông qua thư viện OO7 trên các tiêu chí chính: Tốc độ xử lí trong việc duyệt đối tượng, mức độ hiệu quả trong việc thay đổi đối tượng (tạo, xóa và cập nhật), hiệu quả của việc xử lý các loại câu truy vấn đối tượng.  Đề xuất các thuật toán cho phân mảnh và cấp phát các lớp đối tượng: Thuật toán AttrFrag phân mảnh dựa trên tương quan thuộc tính và thuật toán FragAlloS phân mảnh và cấp phát đồng thời. Thuật toán FragAlloS là một thuật toán heuristic thực hiện cả phân mảnh và cấp phát với độ phức tạp chỉ tương đương các thuật toán phân mảnh và chưa thực hiện cấp phát.  Đề xuất thuật toán BloomOpt truyền dữ liệu bằng bộ lọc Bloom để thực hiện truy vấn có chưa biểu thức đường dẫn và thuật toán PathExpOpt tối ưu hóa biểu thức đường dẫn trong CSDL HĐT PT. Thuật toán PathExpOpt là thuật toán quy hoạch động sử dụng cơ chế sinh cây con cảm sinh để tối ưu hóa biểu thức đường dẫn trong CSDL HĐT PT. Các kết quả nghiên cứu của luận án đã được công bố trong các công trình (1), (2), (3), (4), và (5). Nhìn vào xu hướng phát triển hiện nay, điện toán đám mây là một môi trường phân tán nổi trội, môi trường này sử dụng các máy chủ trung tâm từ xa và mạng internet để duy trì dữ liệu và các ứng dụng. Các hệ thống CSDL PT nói chung và CSDL HĐT PT nói riêng khi phát triển trong môi trường điện toán đám mây sẽ đòi hỏi các kỹ thuật nâng cao về phân mảnh, cấp phát và sao chép. Những kỹ thuật này là một trong những hướng nghiên cứu tiếp theo của luận án. Hơn nữa, một trong những xu hướng lớn nhất của khoa học dữ liệu là dữ liệu lớn (big data) với các loại dữ liệu có cấu trúc và dữ liệu không cấu trúc. NoSQL (Not Only SQL) là loại cơ sở dữ liệu hỗ trợ lưu trữ dữ liệu không cấu trúc. Trong danh sách các cơ sở dữ liệu NoSQL có sự góp mặt của các CSDL HĐT PT như Versant, Db4o, GemStone, Như vậy CSDL HĐT PT trong môi trường dữ liệu lớn với các vấn đề như thiết kế phân tán, tối ưu hóa truy vấn cần được quan tâm nghiên cứu. Tóm lại, từ các xu thế phát triển của khoa học dữ liệu và từ kết quả của luận án đặt ra các hướng nghiên cứu tiếp theo như sau:  Thiết kế các thuật toán phân mảnh, cấp phát, tối ưu hóa truy vấn trong CSDL HĐT PT để thử nghiệm trên Hadoop nhằm nâng cao hiệu quả của thuật toán trong môi trường dữ liệu lớn trên điện toán đám mây.  Nghiên cứu cách kết hợp giữa hai hướng tiếp cận dựa trên tương quan và heuristic dựa trên chi phí trong phân mảnh và cấp phát CSDL HĐT PT để đạt hiệu quả tốt hơn.  Xây dựng các thuật toán heuristic dựa trên chi phí để tối ưu hóa biểu thức đường dẫn trong CSDL HĐT PT hiệu quả hơn, cải thiện độ phức tạp thuật toán hiện tại trong trường hợp xấu nhất (truy vấn hình sao).  Nghiên cứu về tối ưu hóa biểu thức đường dẫn trong các trường hợp tổng quát hơn và nghiên cứu các dạng khác của truy vấn trong CSDL HĐT PT. 25 DANH MỤC CÁC CÔNG TRÌNH CỦA TÁC GIẢ (1.) Mai Thúy Nga, Đoàn Văn Ban, Nguyễn Mạnh Hùng (2015), “Thuật toán phân mảnh dọc và cấp phát đồng thời trong Cơ sở dữ liệu hướng đối tượng phân tán”, Tạp chí Khoa học và công nghệ, Viện Hàn lâm Khoa học và Công nghệ Việt Nam, 53(3), tr. 265-276. (2.) Mai Thúy Nga, Đoàn Văn Ban, Nguyễn Mạnh Hùng (2015), “Xử lý truy vấn trong Cơ sở dữ liệu hướng đối tượng phân tán sử dụng bộ lọc Bloom”, Tạp chí Khoa học, Trường Đại học Sư phạm Hà nội, 60(7A), tr. 196-203. (3.) Mai Thuy Nga, Doan Van Ban (2016), “ Heuristic algorithm for fragmentation and allocation in distributed object-oriented database”, Journal of Computer Science and Cybernertics, Vietnam Academy of Science and Technology, 32(1), pp. 45-58. (4.) Mai Thúy Nga, Đoàn Văn Ban (2014), “Thuật toán Heuristic để phân mảnh và cấp phát đồng thời trong Cơ sở dữ liệu hướng đối tượng phân tán”, Kỷ yếu Hội thảo Khoa học Quốc gia lần thứ XVII Một số vấn đề chọn lọc của công nghệ thông tin và truyền thông, Nhà xuất bản Khoa học và Kỹ thuật, Hà nội, tr. 318–323. (5.) Mai Thúy Nga, Đoàn Văn Ban, Nguyễn Mạnh Hùng (2015), “Tối ưu hóa truy vấn trong Cơ sở dữ liệu hướng đối tượng phân tán”, Kỷ yếu Hội thảo Khoa học Quốc gia lần thứ XVIII Một số vấn đề chọn lọc của công nghệ thông tin và truyền thông, Nhà xuất bản Khoa học và Kỹ thuật, Hà nội, tr. 318–323.

Các file đính kèm theo tài liệu này:

  • pdftom_tat_luan_an_xu_ly_va_toi_uu_hoa_truy_van_trong_co_so_du.pdf