Tải bản đầy đủ (.pdf) (27 trang)

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 (tt)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.98 MB, 27 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO

VIỆN HÀN LÂM KHCN VIỆT NAM

HỌC VIỆN KHOA HỌC VÀ CÔNG NGHỆ
……..….***…………

MAI THÚY NGA

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

Chuyên ngành: Cơ sở Toán học cho Tin học
Mã số: 62 46 01 10

TÓM TẮT LUẬN ÁN TIẾN SĨ TOÁN HỌC

HÀ NỘI – 2017


Công trình được hoàn thành tại: Học viện Khoa học và công nghệ -

Viện Hàn lâm Khoa học và công nghệ Việt Nam

Người hướng dẫn khoa học 1: PGS. TS Đoàn Văn Ban
Người hướng dẫn khoa học 2: TS Nguyễn Mạnh Hùng

Phản biện 1: TS Nguyễn Long Giang
Phản biện 2: PGS. TS Bùi Thu Lâm
Phản biện 3: PGS. TS Trần Đăng Hưng


Luận án sẽ được bảo vệ trước Hội đồng chấm luận án tiến sĩ, họp tại Học viện
Khoa học và Công nghệ - Viện Hàn lâm Khoa học và công nghệ Việt Nam
vào hồi … giờ …’, ngày … tháng … năm 2017

Có thể tìm hiểu luận án tại:


MỞ ĐẦU
Đối với một số lĩnh vực chuyên sâu của Cơ sở dữ liệu như Multimedia, địa lí, CAD/CAM/CIM
và các hệ thống tài chính phức tạp, CSDL quan hệ bộc lộ những hạn chế. Cơ sở dữ liệu hướng đối
tượng (CSDL HĐT) ra đời để khắc phục các hạn chế này. CSDL HĐT cũng được xây dựng với
mục đích tích hợp với ngôn ngữ lập trình hướng đối tượng, loại ngôn ngữ lập trình phổ biến nhất
trong các ứng dụng ngày nay.
Trong CSDL HĐT, “đối tượng” là đơn vị trung tâm, mỗi đối tượng được lưu trữ không chỉ
dữ liệu mà còn thao tác trên chúng. CSDL HĐT có các đặc trưng cơ bản là tính đóng gói, kế thừa,
đa hình. Ngoài vấn đề về chức năng và độ phù hợp với bài toán, các hệ thống CSDL HĐT cần được
đánh giá về hiệu năng. Trong các tiêu chuẩn đánh giá hiệu năng CSDL HĐT, OO7 có thể được coi
là tiêu chuẩn và là thư viện phổ biến, cung cấp khá đầy đủ các kịch bản kiểm thử để đánh giá các
loại CSDL HĐT từ nhiều góc độ khác nhau.
Để đáp ứng nhu cầu của doanh nghiệp lớn với dữ liệu phân tán ở nhiều trạm ở các vị trí địa
lý khác nhau, CSDL được phát triển trong môi trường mạng tạo thành mô hình cơ sở dữ liệu phân
tán (CSDL PT). Một số mục tiêu của việc phát triển một hệ thống CSDL PT là tăng độ tin cậy và
tính sẵn sàng, đáp ứng tính phân tán của tổ chức, có khả năng mở rộng, … Thiết kế phân tán CSDL
ban đầu cũng phát triển trong ngữ cảnh mô hình dữ liệu quan hệ, sau đó mở rộng trong mô hình dữ
liệu hướng đối tương tạo thành mô hình cơ sở dữ liệu hướng đối tượng phân tán (CSDL HĐT PT).
Trong CSDL HĐT PT rất nhiều vần đề cần được nghiên cứu, trong đó có việc xử lý truy vấn đối
tượng phân tán. Xử lý truy vấn liên quan đến vấn đề thiết kế phân tán và tối ưu hóa phân tán.
Bài toán thiết kế phân tán nhằm mục tiêu nâng cao hiệu quả của hệ thống, được chia thành
hai giai đoạn chính là phân mảnh và cấp phát. Cả hai bài toán phân mảnh và cấp phát đều là bài
toán NP-khó với không gian tìm kiếm rất lớn. Trong CSDL HĐT PT phân mảnh và cấp phát thực

hiện trên các lớp đối tượng. Phân mảnh dọc nhằm mục đích chia một lớp thành các phần nhỏ hơn,
mỗi phần gồm một số thuộc tính và phương thức. Phân mảnh ngang chia các đối tượng trong cùng
một lớp thành các phần khác nhau, mỗi phần gồm một số đối tượng. Các thuật toán phân mảnh lớp
đã được thực hiện trong các nghiên cứu khác theo các hướng khác nhau như dựa trên thuật toán
năng lượng nối, phân mảnh dựa trên thuộc tính, dựa trên phương thức, dựa trên heuristic, dựa trên
tác tử, dựa trên lý thuyết mờ, ... Cấp phát là định vị các mảnh đối tượng vào các trạm tương ứng
của mạng liên kết. Không nhiều nghiên cứu đề cập đến vấn đề cấp phát trong CSDL HĐT PT, trong
đó có thuật toán đồ thị, giải thuật di truyền, heuristic.
Luận án cũng tập trung vào vấn đề tối ưu hóa truy vấn và thảo luận trên bài toán thực thi các
biểu thức đường dẫn. Biểu thức đường dẫn là một dãy tham chiếu để truy xuất đến các đối tượng
theo các thuộc tính hoặc phương thức. Mục tiêu của tối ưu hóa biểu thức đường dẫn là tìm một
chiến lược thực thi biểu thức đường dẫn một cách hợp lý nhằm tối thiểu hóa chi phí. Chi phí được
tính toán ở đây là chi phí theo thao tác xuất nhập, chi phí tính toán và chi phí truyền dữ liệu, trong
đó chi phí đáng kể nhất là chi phí truyền dữ liệu.
Mục tiêu nghiên cứu của luận án là nghiên cứu các vấn đề xử lý truy vấn để nâng cao hiệu
năng của hệ thống. Với mục tiêu này, nội dung nghiên cứu của luận án là:


2
-

Nghiên cứu các hệ thống đánh giá hiệu năng của CSDL HĐT trong môi trường tập trung
và phân tán

-

Nghiên cứu các thuật toán phân mảnh và cấp phát đối tượng. Đề xuất thuật toán phân
mảnh và cấp phát đối tượng phân tán mới.

-


Nghiên cứu các thuật toán tối ưu hóa truy vấn có chứa biểu thức đường dẫn trong CSDL
HĐT. Đề xuất thuật toán tối ưu hóa biểu thức đường dẫn mới trong CSDL HĐT PT.

Đối tượng nghiên cứu của luận án là CSDL HĐT PT, các thư viện đánh giá hiệu năng, các
thuật toán phân mảnh, cấp phát và tối ưu hóa truy vấn đã có.
Phạm vi nghiên cứu của luận án là bài toán phân mảnh và cấp phát các lớp, tối ưu hóa biểu
thức đường dẫn.
Phương pháp nghiên cứu là nghiên cứu lý thuyết, xây dựng các thuật toán và đánh giá độ
phức tạp các thuật toán, cài đặt thực nghiệm các thuật toán, kiểm tra trên các bộ dữ liệu để so sánh
đánh giá.
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ư Versant 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 hai thuật toán cho việc phân mảnh và cấp phát trong CSDL HĐT: (1) Thuật
toán phân mảnh dọc các lớp đối tượng dựa trên tương quan thuộc tính. (2) Thuật toán
heuristic thực hiện phân mảnh dọc và cấp phát đồng thời các lớp đối tượng dựa trên
chi phí.
 Đề xuất thuật toán truyền dữ liệu để thực hiện truy vấn biểu thức đường dẫn trong
CSDL HĐT PT bằng bộ lọc Bloom. Đề xuất thuật toán tối ưu hóa biểu thức đường dẫn
trong CSDL HĐT PT bằng quy hoạch động sử dụng cơ chế sinh cây con cảm sinh và
cơ chế truyền dữ liệu bằng bộ lọc Bloom.
Luận án được tổ chức thành phần mở đầu, ba chương nội dung và kết luận.
Chương I giới thiệu các khái niệm cơ bản trong CSDL HĐT và CSDL HĐT PT. Phần cuối
chương tập trung phân tích thư viện OO7, cài đặt thư viện này để đánh giá hiệu năng của các hệ
quản trị CSDL HĐT PT.
Chương II trình bày các thông tin đầu vào và cách biến đổi các tham số đầu vào của bài toán
phân mảnh và cấp phát theo các quan hệ trong CSDL HĐT PT. Tiếp theo, đề xuất thuật toán phân

mảnh dựa trên tương quan thuộc tính và thuật toán heuristic để phân mảnh dọc và cấp phát lớp một
cách đồng thời.
Chương III nghiên cứu các vấ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.

Trạm 5

Trạm 1

Trạm 2

Mạng truyền
dữ liệu

Trạm 3
Trạm 4

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


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.
Quản lý thư mục

Xử lý truy vấn

Thiết kế CSDL
phân tán

Độ tin cậy

Sao chép
Điều khiển tương tranh

Quản lý khóa gài
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.


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ả

NumModule

Số lượng module

NumCompPerModule
NumAtomicPerComp

Small

Medium

Large

1

1

10

Số lượng đối tượng phức hợp của
một module

500


500

500

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 Ci 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
a


i
j

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.

m ij

Phương thức thứ j của lớp Ci.

Qi

Tập các truy vấn vào lớp Ci.

q ij

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

f ji

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(𝑚𝑗𝑖 ) ∗ 𝑄𝑆𝐹 𝑖 (𝑞𝑙𝑖 , 𝑠𝑘 )
qil  Qi 𝑠𝑘  S 𝑚𝑗𝑖  𝑀𝑖
(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//Ch kế thừa Ci
for (each

q hk  Qh) do //mỗi truy vấn trên lớp Ch
h

if ( q k uses methods

m ij

of class Ci) then

begin
h
//Thêm 1 dòng tương ứng q k vào QMUi và QSFi;
h


AddRow( q k , QMUi, QSFi);
h
end {if q k }
h
end {for q k }

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
𝑚|𝑄𝐴𝑈(𝑞𝑚
𝑚 𝑙
𝑗

𝑖
𝑖
∑ 𝑟𝑒𝑓(𝑞𝑚
, 𝑠𝑘 )𝑄𝑆𝐹(𝑞𝑚
, 𝑠𝑘 )

(2.2)

𝑘

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.



16
2.5.1. Mô hình chi phí

m ij

Chi phí truy cập một phương
thức
ở một trạm sk là tổng tần suất truy cập của các truy vấn
m ij
có sử dụng phương thức
trên trạm sk, chi phí này được kí hiệu request và thiết lập như sau:

request i (s k , m ij ) 


q il  Q i

QSFi (q il , s k ) * QMUi (q il , m ij )

(2.7)

Để 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.
i

m

Chi phí khi định vị một phương thức j vào một trạm sk là chi phí truy cập vào phương thức

m
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:
i
j

payi (s k , m ij )  
request i (s k , m ij ) * SSC (s k , s l )
sl  S

(2.8)

Để 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
m ij
toán đềi nghịi là một thuật toán heuristic, mục tiêu của thuật toán là định vị
vào trạm sk mà giá
pay (s k , m j )
trị
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ấpi phát đề xuất theo hướng tiếp cận heuristic như sau: Dựa vào ma
m
trận payi, định vị phương thức j 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


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.
10000000,0
9000000,0
8000000,0
7000000,0
6000000,0
5000000,0
4000000,0
3000000,0
2000000,0
1000000,0
,0
Phương án Phương án Phương án Phương án Phương án Phương án
1
2/s1
2/s2
2/s3
2/s4
3


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.


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ô ̣ lo ̣c Bloom là xác đinh
̣
mô ̣t 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 lo ̣c qua bô ̣ lo ̣c Bloom trả về kế t quả “không” thì không cầ n thực hiê ̣n viê ̣c tìm kiế m
nữa, nế u trả về kế t quả “có thể có” thì thực hiê ̣n 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 𝑛 = −
. Khi chọn p là một
(𝑙𝑛2)2
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.
DeTai (1)
chuNhiem
CanBo (2)
ToChuc (3)

coQuan

tacGiaSach
Sach (4)

diaChi

theLoai

DiaChi (1)

LoaiSach (4)


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


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; jfor (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; jTransPlant(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
𝑛−1
đỉnh là 𝐶𝑖−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
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.

250000,0
200000,0
150000,0
100000,0

50000,0
,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

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.


×