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

Một số thuật toán tối ưu hóa truy vấn trong cơ sở dữ liệu phân tán (Luận văn thạc sĩ)

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 (726.01 KB, 28 trang )

1

ĐẠI HỌC THÁI NGUYÊN
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ
TRUYỀN THÔNG

VŨ ĐỨC MẠNH

MỘT SỐ THUẬT TOÁN TỐI ƢU HÓA TRUY
VẤN TRONG
CƠ SỞ DỮ LIỆU PHÂN TÁN

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY
TÍNH
Thái Nguyên - 2016

Số hóa bởi Trung tâm Học liệu – ĐHTN



2

ĐẠI HỌC THÁI NGUYÊN
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ
TRUYỀN THÔNG

VŨ ĐỨC MẠNH

MỘT SỐ THUẬT TOÁN TỐI ƢU HÓA TRUY
VẤN TRONG
CƠ SỞ DỮ LIỆU PHÂN TÁN


CHUYÊN NGÀNH: KHOA HỌC MÁY TÍNH
Mã số: 60480101

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
NGƯỜI HƯỚNG DẪN KHOA HỌC
PGS TS ĐOÀN VĂN BAN

Thái Nguyên - 2016
Số hóa bởi Trung tâm Học liệu – ĐHTN



3

MỞ ĐẦU
Sở Giáo dục và Đào tạo (GD&ĐT) tỉnh Yên Bái hiện đang
quản lý trực tiếp 9 phòng Giáo dục và Đào tạo, 24 trường Trung học
phổ thông, 6 trung tâm, 2 trường chuyên nghiệp, với đội ngũ cán bộ
quản lý, giáo viên và nhân viên lên tới hàng trăm nghìn người. Hiện
nay tất cả các đơn vị trên đều đang sử dụng mạng internet.
Do trong một năm học, việc thống kê tình hình nhân sự của Sở
GD&ĐT đối với các đơn vị được thực hiện cố định theo định kì đầu,
giữa và cuối năm học, mà dữ liệu về nhân sự luôn thay đổi, nên khó
khăn trong việc cập nhật dữ liệu thường xuyên nên mô hình cơ sở tập
trung sẽ gặp khó khăn về vấn đề máy chủ, băng thông đường truyền,
tính sẵn sàng của hệ thống.
Xuất phát từ thực tế nhu cầu công việc, tôi nhận thấy có thể ứng
dụng cơ sở dữ liệu phân tán để giải quyết những khó khăn ở trên;
chính vì vậy tôi chọn nghiên cứu đề tài "Một số thuật toán tối ưu hóa
truy vấn trong cơ sở dữ liệu phân tán” làm luận văn tốt nghiệp.

Luận văn gồm có 3 chương: Chương 1 trình bày khái quát về cơ
sở dữ liệu phân tán, tìm hiểu các phương pháp thiết kế cơ sở dữ liệu
phân tán, tập trung nghiên cứu các kỹ thuật phân mảnh: phân mảnh
ngang, phân mảnh dọc và phân mảnh hỗn hợp. Chương 2 trình bày
chi tiết các bước trong quy trình xử lý câu truy vấn; trình bày các
thuật toán tối ưu hóa câu truy vấn cơ sở dữ liệu phân tán như:
INGRES phân tán, R*, DP-ACO. Chương 3 cài đặt thực nghiệm 2
thuật toán INGRES phân tán và R* và đưa ra nhận xét đánh giá.

Số hóa bởi Trung tâm Học liệu – ĐHTN



4
Chƣơng 1
KHÁI QUÁT VỀ CƠ SỞ DỮ LIỆU PHÂN TÁN
1.1. Cơ sở dữ liệu phân tán.
1.1.1. Khái niệm cơ sở dữ liệu phân tán
Một cơ sở dữ liệu (CSDL) phân tán là một tập dữ liệu có quan
hệ logic với nhau, được phân bố trên các máy tính của một mạng
máy tính [1].
1.1.2. Hệ quản trị cơ sở dữ liệu phân tán
Hệ quản trị CSDL phân tán (DDBMS) là một hệ thống phần
mềm cho phép quản lý các CSDL phân tán (tạo lập và điều khiển các
truy nhập cho các hệ CSDL phân tán) và làm cho việc phân tán trở
nên trong suốt với người sử dụng [1].
1.1.3. Ưu điểm của cơ sở dữ liệu phân tán
- Cho phép quản lý dữ liệu theo nhiều mức trong suốt.
- Tăng độ tin cậy và khả năng sẵn sàng.
- Cải thiện hiệu năng.

- Tổ chức dữ liệu phân tán kinh tế hơn so với tổ chức dữ liệu tập
trung.
- Dễ dàng mở rộng.
1.1.4. Nhược điểm của cơ sở dữ liệu phân tán
- Độ phức tạp thiết kế và cài đặt hệ thống tăng.
- Tăng chi phí.
- Bảo mật khó khăn.
- Kiểm soát tính toàn vẹn khó khăn hơn.
1.2. Đặc điểm của cơ sở dữ liệu phân tán
1.2.1. Chia sẻ tài nguyên
Việc chia sẻ tài nguyên của hệ phân tán được thực hiện thông
qua mạng truyền thông.

Số hóa bởi Trung tâm Học liệu – ĐHTN



5
1.2.2. Tính mở
Tính mở của hệ phân tán được xem xét theo mức độ bổ sung vào
các dịch vụ dùng chung tài nguyên mà không phá hỏng hay nhân đôi
các dịch vụ đang tồn tại.
1.2.3. Khả năng song song
Hệ phân tán hoạt động trên một mạng truyền thông có nhiều máy
tính, mỗi máy có thể có một hay nhiều CPU. Trong cùng một thời
điểm nếu có N tiến trình cùng tồn tại, ta nói chúng thực hiện đồng thời.
Việc thực hiện tiến trình có thể theo cơ chế song (nhiều CPU).
1.2.4. Khả năng mở rộng
Khả năng mở rộng được đặc trưng bởi tính không thay đổi phần
mềm hệ thống và phần mềm ứng dụng khi hệ thống được mở rộng.

Điều này chỉ đạt được mức độ nào đó với hệ phân tán hiện tại. Yêu
cầu việc mở rộng không chỉ là sự mở rộng về phần cứng, về mạng
mà nó trải trên các khía cạnh khi thiết kế hệ phân tán.
1.2.5. Khả năng thứ lỗi
Việc thiết kế khả năng thứ lỗi của các hệ thống máy tính dựa trên
hai giải pháp: Dùng khả năng thay thế để đảm bảo sự hoạt động liên
tục và hiệu quả; Dùng các chương trình hồi phục khi xảy ra sự cố.
1.2.6. Tính trong suốt
Tính trong suốt của một hệ phân tán được hiểu như là việc che
khuất đi các thành phần riêng biệt của hệ đối với người sử dụng và
những người lập trình ứng dụng, bao gồm: Tính trong suốt về vị trí,
về việc sử dụng, về việc phân chia, về sự trùng lặp.
1.2.7. Đảm bảo tin cậy và nhất quán
Sự bí mật của dữ liệu phải được bảo vệ, các chức năng khôi
phục hư hỏng phải được đảm bảo. Ngoài ra, yêu cầu của hệ thống về
tính nhất quán cũng rất quan trọng trong thể hiện: không được có
mâu thuẫn trong nội dung dữ liệu.

Số hóa bởi Trung tâm Học liệu – ĐHTN



6
1.3. Các đặc trƣng trong suốt của cơ sở dữ liệu phân tán
1.3.1. Trong suốt phân tán
1.3.2. Trong suốt giao dịch
1.3.3. Trong suốt thất bại
1.3.4. Trong suốt thao tác
1.3.5. Trong suốt về tính không thuần nhất
1.4. Kiến trúc cơ bản của cơ sở dữ liệu phân tán

Mô hình kiến trúc CSDL phân tán gồm: Lược đồ tổng thể, lược
đồ phân mảnh, lược đồ định vị và lược đồ ánh xạ cục bộ
1.5. Các kĩ thuật xây dựng cơ sở dữ liệu phân tán
Có 3 chiến lược phân tán dữ liệu cơ bản: Sao lặp dữ liệu, phân
mảnh dữ liệu và phương pháp hỗn hợp.
 Sao lặp dữ liệu: CSDL được nhân thành nhiều bản từng phần
hoặc đầy đủ và được đặt ở nhiều trạm trên mạng.
 Phân mảnh dữ liệu: CSDL được chia thành các mảnh nhỏ
liên kết với nhau (không trùng lặp). Mỗi phần dữ liệu được đưa đến
các trạm thích hợp để sử dụng.
 Phương pháp hỗn hợp: CSDL được chia thành nhiều phần:
quan trọng và không quan trọng. Phần ít quan trọng được lưu trữ một
nơi, phần quan trọng được lưu trữ ở nhiều nơi khác nhau.
1.5.1. Phân mảnh dữ liệu
Sự phân mảnh là chia dữ liệu trong các bảng dữ liệu thành các bộ
hoặc các bảng dữ liệu con. Có ba kiểu phân mảnh một quan hệ tổng
thể: Phân mảnh ngang, phân mảnh dọc, phân mảnh hỗn hợp [1].
Một sự phân mảnh là đúng đắn nếu tuân thủ 3 quy tắc sau: Tính
đầy đủ; tính phục hồi; tính tách biệt.
1.5.1.1. Phương pháp phân mảnh ngang
Phân mảnh ngang là chia quan hệ thành nhiều các nhóm bộ. Kết
quả của quá trình phân mảnh ngang là các quan hệ con, số lượng quan
hệ con phụ thuộc vào điều kiện ràng buộc của các thuộc tính. Các bộ

Số hóa bởi Trung tâm Học liệu – ĐHTN



7
trong các quan hệ con là tách biệt nhau. Phân mảnh ngang thực chất là

phép chọn quan hệ thỏa mãn một biểu thức điều kiện cho trước.
Có hai loại phân mảnh ngang: Phân mảnh ngang nguyên thủy và
phân mảnh ngang dẫn xuất.
a. Phân mảnh ngang nguyên thủy
Phân mảnh ngang nguyên thuỷ được định nghĩa bằng một phép
toán chọn trên các quan hệ đích của một lược đồ của CSDL. Vì thế,
cho biết quan hệ R, các mảnh ngang của R là các Ri: Ri = σFi (R),
1 ≤ i ≤ n. Trong đó, Fi là biểu thức đại số quan hệ hội sơ cấp có dạng
chuẩn hội.
b. Phân mảnh ngang dẫn xuất
Phân mảnh ngang dẫn xuất là sự phân chia một quan hệ ban đầu
thành các quan hệ thứ hai khác mà các quan hệ đó liên hệ với quan
hệ ban đầu bằng một khoá ngoài. Điều này như là liên hệ dữ liệu
giữa quan hệ ban đầu và quan hệ thứ hai được phân mảnh trong cùng
một cách.
1.5.1.2. Phương pháp phân mảnh dọc
Phân mảnh dọc cho một quan hệ R sinh ra các mảnh R1, R2,..,
Rr, mỗi mảnh chứa một tập con thuộc tính của R và khoá của R.
Một phân mảnh dọc là đúng đắn nếu thỏa mãn ba quy tắc sau:
- Tính đầy đủ: Nếu một thuộc tính xuất hiện trong một quan hệ
tổng thể thì nó cũng phải xuất hiện trong một mảnh dọc nào đó.
- Tính phục hồi: Cần phải thêm vào mỗi mảnh khoá chính, do đó
việc xây dựng lại được là nhờ vào phép kết nối các mảnh dọc
theo các thuộc tính chung.
- Tính tách biệt: Ít nhất khoá phải được lặp lại trên tất cả các
mảnh để đảm bảo cho phép xây dựng lại, nên ở đây không thể xem là
rời nhau hoàn toàn được.

Số hóa bởi Trung tâm Học liệu – ĐHTN




8
1.5.1.3. Phương pháp phân mảnh hỗn hợp.
Phân mảnh hỗn hợp là sự kết hợp giữa phương pháp phân mảnh
ngang và phân mảnh dọc.
1.5.2. Nhân bản dữ liệu
a. Nhân bản dữ liệu đầy đủ: Toàn bộ CSDL sẽ được tạo trên
tất cả mỗi trạm.
b. Không có nhân bản dữ liệu: Mỗi phân mảnh chỉ được lưu
trữ trên một trạm, phương án này còn được gọi là định vị không
dư thừa dữ liệu.
c. Nhân bản dữ liệu từng phần: Một vài phân mảnh có thể được
tạo bản sao và có thể một số phân mảnh sẽ không có bản sao.
1.5.3. Định vị dữ liệu
Là quá trình gán từng phân mảnh, từng bản sao của phân mảnh
cho một trạm cụ thể trong hệ thống phân tán.
1.6. Kết luận chƣơng 1
CSDL phân tán rất quan trọng vì nhiều lý do khác nhau, nó có
thể được cài đặt trên các mạng máy tính diện rộng và các mạng cục
bộ nhỏ. Có hai lý do về tổ chức và kỹ thuật đối với sự phát triển
CSDL phân tán đó là: CSDL phân tán được xây dựng để khắc phục
các thiếu sót của cơ sở dữ liệu tập trung và nó phù hợp hơn trong cấu
trúc phân quyền của nhiều tổ chức. Kỹ thuật CSDL phân tán được mở
rộng và phát triển từ kỹ thuật của CSDL truyền thống. Trong môi
trường mới này, một số vấn đề kỹ thuật đòi hỏi các giải pháp khác và
một số giải pháp hoàn toàn mới. Tính trong suốt phân tán cung cấp sự
độc lập của các chương trình khỏi sự phân tán của CSDL. Các mức
trong suốt phân tán khác nhau có thể được cung cấp bởi một hệ quản
trị CSDL phân tán; Tại mỗi mức, tính trong suốt làm cho người lập

trình ứng dụng không biết được sự phân tán dữ liệu.

Số hóa bởi Trung tâm Học liệu – ĐHTN



9
Chƣơng 2
TỐI ƢU HÓA TRUY VẤN CƠ SỞ DỮ LIỆU PHÂN TÁN
2.1. Vấn đề tối ƣu hóa xử lý truy vấn
2.1.1. Bài toán xử lý truy vấn
Chức năng chính của bộ xử lý truy vấn là chuyển đổi một truy
vấn mức cao (phép tính quan hệ) sang một truy vấn tương đương (đại
số quan hệ). Quá trình chuyển đổi cùng cho một kết quả như nhau [4].
Có hai phương pháp tối ưu cơ bản: Phương pháp biến đổi một
câu truy vấn mức cao thành câu truy vấn tương đương ở mức thấp
hơn dưới dạng biểu thức đại số quan hệ và phương pháp chọn lựa
trong số các câu truy vấn dạng biểu thức đại số quan hệ tương đương
một biểu thức có chi phí thời gian thực hiện và chi phí sử dụng tài
nguyên là ít nhất.
Tối ưu hóa truy vấn là một vấn đề quan trọng trong việc xử lý
truy vấn. Có nhiều phép biến đổi một truy vấn mức cao trên CSDL
phân tán thành nhiều giải pháp thực hiện dưới dạng ngôn ngữ mức
thấp, nhưng trong đó chỉ có một giải pháp thực hiện có hiệu quả, tối
ưu về chi phí sử dụng tài nguyên của mạng, bao gồm chi phí sử dụng
bộ nhớ, thời gian xử lý và thời gian truyền dữ liệu.
Trong môi trường CSDL phân tán, chỉ số đánh giá tối ưu hóa
truy vấn có thể dựa vào tổng chi phí giảm thiểu sử dụng bộ nhớ, chi
phí thời gian cần thiết khi thực hiện các thao tác vào/ra dữ liệu trong
bộ nhớ và chi phí cần thiết để trao đổi dữ liệu giữa các bên tham gia

vào trong quá trình xử lý truy vấn. Chi phí truyền thông là một trong
các nhân tố quan trọng, được quan tâm trong CSDL phân tán.
2.1.2. Các quy tắc biến đổi cây đại số quan hệ
2.1.2.1. Tính chất giao hoán của các phép toán hai ngôi
2.1.2.2. Tính kết hợp của các phép toán hai ngôi

Số hóa bởi Trung tâm Học liệu – ĐHTN



10
2.1.2.3. Tính lũy đẳng của các phép toán đơn ngôi
2.1.2.4. Giao hoán phép chọn với phép chiếu
2.1.2.5. Giao hoán phép chọn với các phép toán hai ngôi
2.1.2.6. Giao hoán phép chiếu với phép toán hai ngôi
2.2. Quá trình xử lý truy vấn
Quá trình xử lý truy vấn bao gồm 4 tầng: phân rã truy vấn, cục
bộ hóa dữ liệu, tối ưu hóa toàn cục và tối ưu hóa cục bộ [2].
2.2.1. Phân rã truy vấn
Phân rã truy vấn là giai đoạn đầu tiên của quá trình xử lý câu
truy vấn, thực hiện việc biến đổi câu truy vấn ở dạng ngôn ngữ bậc
cao thành câu truy vấn ngôn ngữ bậc thấp thực thi cho kết quả tương
đương. Phân rã truy vấn có thể xem như bốn bước liên tiếp nhau:
Chuẩn hoá, phân tích, loại bỏ dư thừa, viết lại câu truy vấn.
2.2.1.1. Chuẩn hóa: Các câu truy vấn bằng các phép tính quan hệ
được viết lại dưới dạng chuẩn tắc thích hợp cho các bước tiếp theo.
Sự chuẩn hóa một câu truy vấn bao gồm đặt các lượng tử và lượng tử
hóa truy vấn bằng cách áp dụng độ ưu tiên các toán tử logic.
2.2.1.2. Phân tích: Câu truy vấn đã chuẩn hóa được phân tích về
mặt ngữ nghĩa nhằm loại bỏ các câu truy vấn sai càng sớm càng tốt.

Tìm ra truy vấn sai chỉ tồn tại với một tập con các phép tính quan hệ.
Thông thường sử dụng một loại đồ thị để nắm bắt ngữ nghĩa của câu
truy vấn.
2.2.1.3. Loại bỏ dư thừa: Câu truy vấn đúng được đơn giản hóa
bằng cách loại bỏ các phụ thuộc dư thừa. Truy vấn dư thừa chỉ xuất
hiện khi một truy vấn là kết quả của việc biến đổi hệ thống được áp
dụng cho truy vấn của người sử dụng.
2.2.1.4. Viết lại câu truy vấn: Câu truy vấn phép tính quan hệ
được xây dựng lại dưới dạng truy vấn đại số quan hệ bằng các quy
tắc biến đổi.

Số hóa bởi Trung tâm Học liệu – ĐHTN



11
2.2.2. Cục bộ hóa dữ liệu phân tán
Cục bộ hóa dữ liệu chịu trách nhiệm dịch câu truy vấn đại số
trên quan hệ toàn cục sang câu truy vấn đại số quan hệ trên các mảnh
vật lý. Cục bộ hóa có sử dụng các thông tin được lưu trong một lược
đồ phân mảnh.
Tầng này xác định xem những mảnh nào cần cho câu truy vấn
và biến đổi câu truy vấn phân tán thành câu truy vấn trên các mảnh.
Tạo ra câu truy vấn trên mảnh được thực hiện qua hai bước:
- Truy vấn phân tán được ánh xạ thành truy vấn trên mảnh bằng
cách thay thế mỗi quan hệ phân tán bằng chương trình xây dựng lại
có chứa các phép toán đại số quan hệ thao tác trên mảnh.
- Truy vấn trên mảnh được đơn giản hoá và xây dựng lại để tạo
ra một truy vấn khác tốt hơn. Quá trình đơn giản hoá và xây dựng lại
có thể được thực hiện theo những quy tắc được sử dụng trong tầng

phân rã.
2.2.2.1. Rút gọn cho phân mảnh ngang nguyên thủy
Để giảm các thao tác truy vấn trên quan hệ đã được phân mảnh
ngang, trước hết phải xác định rõ cần thao tác trên mảnh nào và sau
đó xây dựng lại cây con, xem xét loại bỏ các quan hệ rỗng. Phân
mảnh ngang sẽ được sử dụng để làm đơn giản hóa các phép chọn và
phép kết nối.
Rút gọn phép chọn: Chọn trên các mảnh có lượng từ mâu thuẫn
với lượng từ hoá của quy tắc phân mảnh sẽ sinh ra quan hệ rỗng, ta
loại bỏ chúng.
Rút gọn với phép kết nối: Phép kết nối thực hiện trên các phân
mảnh ngang có thể đơn giản khi kết nối dựa theo các thuộc tính kết
nối, bằng cách phân phối kết nối trên các hợp và sau đó loại bỏ các
kết nối không tác dụng. Việc phân phối các kết nối trên phép hợp

Số hóa bởi Trung tâm Học liệu – ĐHTN



12
được phát biểu như sau: ( R1  R2)

S = (R1

S)  (R2

S)

Trong đó, Ri là các mảnh của R và S là một quan hệ.
2.2.2.2. Rút gọn cho phân mảnh ngang dẫn xuất

Phân mảnh ngang dẫn xuất là một cách để phân phối hai quan
hệ mà nhờ đó có thể cải thiện khả năng xử lý các điểm giao nhau
giữa phép chọn và phép nối.
Nếu quan hệ R phải phân mảnh dẫn xuất theo quan hệ S, các
mảnh của R và S giống nhau ở thuộc tính kết nối sẽ nằm cùng vị trí.
Ngoài ra, S có thể được phân mảnh theo vị từ chọn.
2.2.2.3. Rút gọn cho phân mảnh dọc.
Phân mảnh dọc phân tán một quan hệ dựa trên các thuộc tính
chiếu. Vì vậy, phép kết nối sẽ là phép toán tái xây dựng các phân
mảnh dọc. Chương trình cục bộ hoá cho một quan hệ phân mảnh dọc
bao gồm các kết nối của các mảnh theo thuộc tính chung. Cũng như
phân mảnh ngang, các câu truy vấn trên các mảnh dọc được rút gọn
bằng cách xác định các quan hệ trung gian vô dụng và loại bỏ các
cây con đã sinh ra chúng.
2.2.2.4. Rút gọn cho phân mảnh hỗn hợp
Câu truy vấn trên các mảnh hỗn hợp có thể được rút gọn bằng
cách tổ hợp các quy tắc tương ứng đã được dùng trong các phân mảnh
ngang nguyên thuỷ, phân mảnh dọc, phân mảnh ngang dẫn xuất.
Quy tắc:
1/ Loại bỏ các quan hệ rỗng được tạo ra bởi các phép toán chọn
mâu thuẫn nahu trên các mảnh ngang.
2/ Loại bỏ các quan hệ vô dụng được tạo ra bởi các phép chiếu
trên các mảnh dọc.
3/ Phân phối các kết nối cho các phép hợp nhằm cô lập và loại
bỏ các kết nối vô dụng.

Số hóa bởi Trung tâm Học liệu – ĐHTN




13
2.2.3. Tối ưu hóa toàn cục
Bước này sẽ xác định thứ tự thực thi truy vấn các mảnh, trạm
nào hiệu quả để truyền dữ liệu, nơi mà từng phần của câu truy vấn sẽ
được thực thi.
2.2.4. Tối ưu hóa cục bộ
Khi các truy vấn con được gửi đến một trạm cụ thể, nó sẽ được
thực thi và tối ưu cục bộ trên trạm đó sử dụng các kỹ thuật tối ưu hóa
tập trung.
2.3. Tối ƣu hóa truy vấn phân tán
Mục tiêu của tối ưu hóa truy vấn là làm sao tìm ra một chiến
lược gần tối ưu để thực thi câu truy vấn.
2.3.1. Không gian tìm kiếm
Đối với một câu truy vấn đã cho, không gian tìm kiếm có thể
được định nghĩa như một tập các cây toán tử tương đương, có được
bằng cách áp dụng các quy tắc biến đổi.
2.3.2. Chiến lược tìm kiếm
Có hai chiến lược cơ bản:
- Chiến lược xác định (Deterministic Strategy): Chiến lược này
tiến hành bằng cách xây dựng các kế hoạch, bắt đầu từ các quan hệ
cơ sở, sau đó nối thêm một hoặc nhiều quan hệ ở mỗi bước cho đến
khi thu được mọi kế hoạch khả hữu. Có hai cách: Theo chiều rộng xây dựng tất cả các kế hoạch có thể trước khi chọn kế hoạch tốt nhất
(Quy hoạch động (Dynamic Programming)), theo chiều sâu – chỉ xây
dựng một kế hoạch (Greedy).
- Chiến lược ngẫu nhiên (Randomized Strategy): Tiến hành tìm
kiếm giải pháp tối ưu xung quanh một số điểm cụ thể. Chiến lược
này không đảm bảo kế hoạch tối ưu nhưng tránh chi phí cao trong tối
ưu hóa về bộ nhớ và thời gian thực hiện. Chiến lược này áp dụng tốt

Số hóa bởi Trung tâm Học liệu – ĐHTN




14
hơn với câu truy vấn có 5 - 6 quan hệ trở lên. Hai kỹ thuật tiêu biểu
là Interative Improvement và Simulated Annealing [4].
2.3.3. Mô hình chi phí
Mô hình chi phí của bộ tối ưu hóa gồm có các hàm chi phí để dự
đoán chi phí của các toán tử, số liệu thống kê, dữ liệu cơ sở và các
công thức để ước lượng kích thước các kết quả trung gian.
 Hàm chi phí
- Tổng thời gian là tổng của tất cả các thành phần thời gian, còn
thời gian trả lời tính từ lúc bắt đầu đến lúc kết thúc câu truy vấn:
Total_time = TCPU *#insts+TI/O *#I/Os+TMSG *#msgs+TTR * #bytes
Trong đó:
Total_cost: Tổng thời gian;
TCPU: Thời gian của một lệnh CPU;
TI/O: Thời gian cho một thao tác truy xuất/nhập đĩa;
TMSG: Thời gian cố định của việc khởi hoạt và nhận một thông báo;
TTR: Thời gian cần để truyền một đơn vị dữ liệu từ trạm này tới
trạm khác, ta xem CTR là hằng số;
#insts, #I/Os, #msgsm, #byte: Tương ứng là tổng trên các trạm
của tất cả các số lệnh CPU, số lần truy xuất/ nhập đĩa, số thông báo,
kích thước của tất cả các thông báo.
- Thời gian trả lời của câu truy:
Response_time = TCPU * seq_#insts + TI/O * seq_#I/Os
+ TMSG * seq_#msgs + TTR * seq_#bytes
Trong đó: seq_#x (x có thể là các lệnh CPU, I/O, các thông
báo, các byte) là số lớn nhất của x phải được thực hiện tuần tự đối
với sự thực thi của câu truy vấn.

 Số liệu thống kê CSDL
Tác nhân chính ảnh hưởng đến hiệu quả hoạt động của một chiến

Số hóa bởi Trung tâm Học liệu – ĐHTN



15
lược thực thi là kích thước các quan hệ trung gian đã được tạo ra. Khi
một phép toán tiếp theo nằm tại một vị trí khác, quan hệ trung gian phải
được di chuyển đến đó. Đó chính là điều khiến chúng ta phải ước lượng
kích thước của các kết quả trung gian của các phép toán đại số quan hệ
nhằm giảm thiểu lượng dữ liệu phải truyền. Việc ước lượng này dựa
trên các thông tin thống kê về các quan hệ cơ sở và các công thức để dự
đoán lực lượng của các kết quả.
 Lực lƣợng của các kết quả trung gian
Dữ liệu thống kê rất có ích khi đánh giá lực lượng của các kết
quả trung gian. Lực lượng của các kết quả trung gian sẽ được ước
lượng theo các phép toán đại số cơ bản: phép chọn, chiếu, tích Đề
các, kết nối, phép nối nửa, phép hợp, hiệu.
2.3.4. Thứ tự kết nối
Một số thuật toán tối ưu hoá thứ tự của các phép kết nối một
cách trực tiếp không sử dụng phép nửa kết nối như thuật toán
INGRES phân tán và R*.
Xét truy vấn có kết nối R

S, trong đó R và S là hai quan hệ

được lưu trữ trên các trạm khác nhau. Sự lựa chọn hiển nhiên là sẽ
truyền quan hệ nhỏ hơn tới trạm của quan hệ lớn hơn, làm phát sinh 2

khả năng, thể hiện trong Hình 2.18.

Hình 2.18. Truyền các toán hạng trong phép toán hai ngôi.
2.4. Các thuật toán tối ƣu hóa truy vấn phân tán
Việc tối ưu hóa truy vấn có thể thực hiện theo 4 phương pháp:
Phương pháp tĩnh: Việc tối ưu hóa truy vấn tĩnh được thực hiện
tại thời điểm biên dịch truy vấn. Thuật toán tiêu biểu: R*.

Số hóa bởi Trung tâm Học liệu – ĐHTN



16
Phương pháp động: Việc tối ưu hóa động được thực hiện vào
thời gian thực hiện truy vấn. Thuật toán tiêu biểu: INGRES phân tán.
Phương pháp dựa trên phép nửa kết nối (semijoin): Phương pháp
này sẽ sử dụng phép nửa kết nối thay cho phép kết nối để giảm kích
thước của các kết quả trung gian, giảm chi phí truyền thông, từ đó
giảm tổng thời gian truy vấn. Thuật toán tiêu biểu: SDD-1, AHY.
Phương pháp tối ưu hóa truy vấn hỗn hợp có các ưu điểm của tối
ưu hóa truy vấn tĩnh, tránh được các vấn đề được tạo ra bởi các đánh
giá không chính xác gây ra. Về cơ bản phương pháp này là tĩnh
nhưng quá trình truy vấn động có thể xảy ra lúc chạy khi phát hiện có
sự khác biệt lớn giữa kích thước dự đoán và kích thước thực tế của
các quan hệ trung gian. Thuật toán tối ưu truy vấn 2 pha sử dụng
phương pháp này.
Ưu điểm của phương pháp động so với phương pháp tĩnh là kích
thước thực sự của các quan hệ trung gian là phù hợp cho bộ xử lý truy
vấn. Vì vậy, sẽ giảm thiểu xác suất cho việc lựa chọn một giải pháp
tồi. Nhược điểm của phương pháp động là các thao tác tối ưu hóa có

chi phí cao, lặp lại nhiều lần cho mỗi thao tác. Vì vậy, phương pháp
này sẽ rất phù hợp cho một số câu truy vấn đặc biệt.
Phần này sẽ trình bày một số thuật toán tối ưu hóa truy vấn cơ
bản trong CSDL phân tán như thuật toán INGRES phân tán, thuật
toán R* và một thuật toán mới, kết hợp giữa thuật toán quy hoạch
động (Dynamic Programming) và thuật toán đàn kiến (Ant Colony
Optimization) được gọi là DP-ACO.
2.4.1. Thuật toán INGRES phân tán
Input: MRQ: Câu truy vấn có nhiều quan hệ.
Output:Kết quả của câu truy vấn con cuối cùng.
Begin
For mỗi ORQi có thể tách ra in MRQ do

Số hóa bởi Trung tâm Học liệu – ĐHTN



17
{ORQi là truy vấn một biến}
Run(ORQi);
MRQ‘_list  REDUCE (MRQ) {MRQ‘ chứa n truy vấn không
thể rút gọn}
While n ≠ 0 do
{Chọn truy vấn không thể rút gọn tiếp theo
liên quan đến mảnh nhỏ nhất}
MRQ‘  SELECT_QUERY (MRQ‘_list);
{Xác định mảnh để truyền và trạm xử lý cho MRQ‘}
Fragment-site-list  SELECT_STRATEGY (MRQ‘);
{Chuyển các mảnh đã chọn đến trạm xử lý đã chọn}
For mỗi cặp (F,S) trong Fragment-site-list do

Chuyển mảnh F tới trạm xử lý S;
Thực thi MRQ‘;
n n-1;
{ kết quả đầu ra là kết quả của MRQ‘ cuối cùng}
End.
2.4.2. Thuật toán R*
Input: QT: Cây truy vấn của câu truy vấn có n quan hệ.
Output: strat: Chiến lược thực thi tối ưu (có chi phí nhỏ nhất)
Begin
For mỗi quan hệ Ri thuộc QT do
For mỗi đường truy cập APij tới Ri do
Tính chi phí của APij;
best_APi  APij có chi phí nhỏ nhất;
For mỗi thứ tự (Ri1, Ri2,....,Rin) do {i= 1,...., n!}
Xây dựng chiến lược(...((best APi1 Ri2)
Ri3)
.. Rin);
Tính chi phí của chiến lược này;
strat  Chiến lược có chi phí tốt nhất;
For mỗi trạm k chứa một quan hệ trong QT do
LSk Chiến lược cục bộ (chiến lược, k); {Xác định chiến lược
tối ưu cục bộ LSk tại trạm k}
Send (LSk, trạm k);
End.

Số hóa bởi Trung tâm Học liệu – ĐHTN



18

2.4.3. Thuật toán DP-ACO
2.4.3.1. Thuật toán tối ưu đàn kiến (ACO Metaheuristic)[10]
Thuật toán dựa trên hành vi của đàn kiến thực trong việc thiết
lập đường đi ngắn nhất giữa thức ăn và tổ của nó. Kiến có thể giao
tiếp với nhau thông qua các hóa chất phát ra từ chúng trên đường đi
từ tổ tới chỗ thức ăn và ngược lại, gọi là pheromone. Như vậy, đường
đi ngắn hơn là đường có lượng pheromone cao hơn, kiến sẽ có xu
hướng chọn con đường ngắn hơn này.
Thuật toán tối ưu đàn kiến: Trong ACO, một con kiến nhân tạo
sẽ xây dựng giải pháp bằng cách đi qua đồ thị kết nối đầy đủ GC
(V,E), trong đó V là tập các đỉnh, E là tập các cạnh. Theo Dorigo,
kiến nhân tạo sẽ di chuyển từ đỉnh tới đỉnh dọc theo các cạnh của đồ
thị để xây dựng giải pháp thành phần (partial solution). Thuật toán
ACO metaheuristic, lặp 3 giai đoạn sau:
- ConstructAntSolution: Một tập m con kiến nhân tạo xây dựng
giải pháp từ các thành phần của một tập hữu hạn các giải pháp có sẵn.
Ban đầu tập này rỗng.
- ApplyLocalSearch: Khi các giải pháp đã được xây dựng và
trước khi cập nhật pheromone, chức năng này sẽ cải thiện các giải
pháp thu được bởi các con kiến thông qua tìm kiếm cục bộ. Bước này
không bắt buộc.
- UpdatePheromones: Nó làm tăng giá trị pheromone gắn liền
với giải pháp tốt và làm giảm với các giải pháp xấu. Điều này đạt
được bằng:
+ Giảm tất cả các giá trị pheromone qua việc bốc hơi
pheromone
+ Tăng mức pheromone với tập các giải pháp tốt được chọn.

Số hóa bởi Trung tâm Học liệu – ĐHTN




19
ACO có một số hạn chế như sự hình thành ban đầu do ACO
không có cách bắt đầu một cách có hệ thống. Tốc độ hội tụ của ACO
thấp ở giai đoạn đầu do lượng pheromone trên các đường đi khác
nhau rất ít.
2.4.3.2. Quy hoạch động (DP)[5]
DP hoạt động theo cách từ dưới lên và xây dựng tất cả các kế
hoạch con có thể. Giải pháp tối ưu cho bất kỳ kế hoạch con nào cũng
được tính toán duy nhất một lần và không được tính lại. Đầu tiên, thuật
toán xây dựng các kế hoạch truy cập cho mọi quan hệ trong câu truy
vấn và liệt kê tất cả các kế hoạch có hai kết nối trong giai đoạn 2. DP
tiếp tục cho đến khi nó đã liệt kê tất cả các kế hoạch n kết nối. Một kế
hoạch hiệu quả có thể tỉa các kế hoạch khác với cùng kết quả đầu ra.
DP sẽ liệt kê (A

B) và (B

A) là hai kế hoạch thay thế nhưng chỉ

có kế hoạch tốt hơn trong hai được giữ lại sau khi cắt tỉa. Các kế hoạch
thực thi được trừu tượng hóa trong PT (Processing Trees). Đầu vào của
các vấn đề tối ưu hóa được đưa ra như một đồ thị truy vấn. Đồ thị truy
vấn này bao gồm tất cả các quan hệ được kết nối như là các nút lá. PT
là một cây nhị phân đơn giản. Lá tương ứng với các quan hệ cơ bản và
các nút tương ứng bên trong tham gia các phép kết nối. Các cạnh thể
hiện luồng của kết quả thành phần từ nút lá về gốc của cây. Mỗi kế
hoạch sẽ có một chi phí thực hiện. Mục đích của tối ưu hóa là tìm kế
hoạch với chi phí thấp nhất có thể. Nếu quan hệ trong của mỗi kết nối

là một quan hệ cơ bản, PT đc gọi là left-deep tree. Sẽ có n! cách để
phân bổ n quan hệ cơ bản tới các lá của loại PT này. Nếu ko có hạn chế
về PT thì nó đc gọi là bushy tree. Trong nghiên cứu này, sẽ sử dụng
left-deep tree.
Mô hình chi phí dựa trên tổng thời gian xử lý (CPU time + I/O
time) được sử dụng.

Số hóa bởi Trung tâm Học liệu – ĐHTN



20
Quy hoạch động tạo ra những thiết kế tốt nhất có thể nhưng có
thời gian thực hiện dài và yêu cầu bộ nhớ rất lớn khi kích thước của
các quan hệ và số lượng kết nối tăng lên trong truy vấn.
2.4.3.3. Kết hợp thuật toán tối ưu đàn kiến và quy hoạch động
để tối ưu hóa truy vấn trong CSDL phân tán [5]
Khi kết hợp với quy hoạch động, chúng ta mô phỏng các hoạt
động của kiến trên đồ thị của PT (Processing Trees). Mỗi quá trình
tính toán thời gian chạy của một kế hoạch thực hiện sẽ được coi là
một con kiến trong thuật toán. Các giải pháp đại diện cho thức ăn.
Kiến có được thức ăn càng sớm thì lượng pheromone chúng tiết ra
trên đường đi của giải pháp càng nhiều. Càng cần nhiều thời gian cho
một con kiến đi theo đường này thì thời gian bay hơi càng nhiều.
Kiến kiếm ăn liên tục tìm kiếm kế hoạch thực hiện tốt hơn. Các
đường đi là những lựa chọn thay thế tổ hợp cho các kế hoạch của DP
ở mỗi mức. Nếu có 5 trạm trong phép kết nối của (A
B
C), sẽ
có 5 đường đi khác nhau. A

B là một trong các truy vấn con trong
kế hoạch này. Với 5 trạm, chúng ta phải kiểm tra thời gian trả lời của
từng trạm. Nếu có thể tìm ra giải pháp tối ưu ở trạm 2 thì tăng
pheromone của nó trong khi các giải pháp khác của (A
B) bị giảm
pheromone do bị bay hơi. Thuật toán sử dụng một tham số giới hạn
không gian tìm kiếm (SSL-search space limit) để kiểm soát độ phức
tạp thời gian và không gian của thuật toán. Không gian tìm kiếm sẽ
được thu gọn bằng cách sử dụng pheromone của mỗi kế hoạch con.
Nếu ko có quá trình thu gọn (cắt tỉa) này thì DP-ACO sẽ hoạt động
giống DP. Tăng giá trị SSL sẽ làm tăng theo cấp số nhân yêu cầu về
thời gian và không gian của thuật toán. Pheromone của mỗi đường
được đánh giá theo phương trình:
SSL

Pheromone (k) = ( ∑ Best_time (i) x (1/ Response_time (k)))
i

Số hóa bởi Trung tâm Học liệu – ĐHTN



21
Đường đi quyết định có thể được tính toán theo công thức sau:
α
ij

k

p ij =


. ηβij
ταil . ηβil



l ϵ subsolutions

Trong đó pkij là xác suất dịch chuyển của con kiến thứ k chuyển
từ giải pháp con thứ i sang giải pháp con thứ j. l là một thành phần
của các giải pháp con. Các giải pháp con này được sắp đặt như câu
lệnh SQL, α và β kiểm soát sự quan trọng tương đối của pheromone
τij với các thông tin heuristic ηij.
DP-ACO đã được chứng minh là giải pháp khả thi bằng việc tạo
ra các kế hoạch thực thi tốt với các câu truy vấn 15 nối trong thời
gian giới hạn và không gian bộ nhớ hạn chế. Một ưu điểm khác của
DP-ACO là có thể dễ dàng thích ứng với bộ tối ưu hóa truy vấn đang
tồn tại sử dụng thuật toán dựa trên DP
2.5. Kết luận chƣơng 2
Chương này đã trình bày những vấn đề cơ bản về xử lý câu truy
vấn, các thành phần chính của tối ưu hóa truy vấn, các thuật toán tối
ưu cơ bản như Distributed INGRES, System R*, DP-ACO. Mỗi
phương pháp tối ưu đều có ưu điểm, nhược điểm của nó. Phương
pháp tối ưu phân tán tĩnh, động có ưu nhược điểm giống như trong hệ
thống tập trung, phương pháp tối ưu dựa trên phép nửa kết nối sử
dụng tốt nhất với mạng chậm, phương pháp hỗn hợp là tốt nhất trong
môi trường động ngày nay vì nó trì hoãn các quyết định quan trọng
như lựa chọn sao chép và phân phối các truy vấn con đến các trạm tại
thời điểm khởi động truy vấn. Vì vậy, nó có thể tăng tính sẵn sàng và
cân bằng tải của hệ thống tốt hơn.


Số hóa bởi Trung tâm Học liệu – ĐHTN



22
Chƣơng 3
ỨNG DỤNG THUẬT TOÁN TỐI ƢU HÓA TRUY VẤN CƠ SỞ
TRONG DỮ LIỆU PHÂN TÁN
3.1. Giới thiệu về bài toán quản lý nhân sự
Xét CSDL quản lý nhân sự tại Sở Giáo dục và Đào tạo tỉnh Yên
Bái gồm các bảng dữ liệu như sau:

3.2. Mô hình phân tán CSDL, công cụ, ngôn ngữ lập trình
- CSDL được phân tán trên 3 trạm, sử dụng DBMS SQL Server
2008.
+ Trạm 1 chứa bảng CanBo (20005 bản ghi).
+ Trạm 2 chứa 2 bảng: DienBienNgachBac (101627 bản ghi) và
dmNgach (105183 bản ghi).
+ Trạm 3 chứa bảng DienBienChucVu (2273 bản ghi)
- Chương trình được viết trên ngôn ngữ lập trình C#.

Số hóa bởi Trung tâm Học liệu – ĐHTN



23
3.3. Thuật toán áp dụng
Chương trình sẽ cài đặt thử nghiệm thuật toán INGRES phân
tán và R* được trình bày ở mục 2.4.1 và 2.4.2.

3.4. Kết quả thực nghiệm
Xét câu truy vấn
SELECT
dbo.CanBo.SoHieu, dbo.CanBo.HoTen,
dbo.CanBo.TenGoiKhac, dbo.CanBo.NgaySinh,
dbo.CanBo.CoQuanQuanLyID, dbo.CanBo.CoQuanSuDungID,
dbo.CanBo.GioiTinh, dbo.CanBo.NoiSinhID,
dbo.CanBo.QueQuanID, dbo.CanBo.DanTocID,
dbo.CanBo.TonGiaoID, dbo.CanBo.HKTT, dbo.CanBo.NoiO,
dbo.CanBo.NgheNghiepID, dbo.CanBo.NgayTD,
dbo.DienBienNgachBac.BacLuong,
dbo.DienBienNgachBac.NgayHuong,
dbo.DienBienNgachBac.NgayKetThuc,
dbo.DienBienNgachBac.ThoiHanNangBac,
dbo.DienBienNgachBac.DaVuotKhung,
dbo.DienBienNgachBac.HSCLBL, dbo.DienBienNgachBac.HeSo
dbo.DienBienNgachBac.PhuCapVuotKhung,
dbo.dmNgach.MaNgach, dbo.dmNgach.TenNgach,
dbo.dmNgach.LoaiNgach, dbo.dmNgach.PCVK
dbo.DienBienChucVu.ChucVuID,
dbo.DienBienChucVu.PhuCapChucVu,
dbo.DienBienChucVu.NgayBoNhiem,
dbo.DienBienChucVu.SoQuyetDinh
FROM dbo.CanBo INNER dbo.DienBienChucVu,
dbo.DienBienNgachBac
WHERE
dbo.CanBo.ID = dbo.DienBienChucVu.CanBoID AND
dbo.CanBo.ID =.CanBoID AND dbo.DienBienNgachBac.NgachID =
dbo.dmNgach.ID AND CLS.CLS_ID=CLSKhamBenh.CLS_ID


Số hóa bởi Trung tâm Học liệu – ĐHTN



24

- Kết quả thực hiện tại trạm 1:
+ Tổng số bản ghi kết quả: 3379
+ Thời gian thực hiện truy vấn khi áp dụng Thuật toán
INGRES phân tán: 125 ms
+ Thời gian thực hiện truy vấn khi áp dụng Thuật toán R*:
140 ms.
- Kết quả thực hiện tại trạm 2:
+ Tổng số bản ghi kết quả: 3379.
+ Thời gian thực hiện truy vấn khi áp dụng Thuật toán
INGRES phân tán: 140 ms.
+ Thời gian thực hiện truy vấn khi áp dụng Thuật toán R*:
156 ms.
- Kết quả thực hiện tại trạm 3:
+ Tổng số bản ghi kết quả: 3379
+ Thời gian thực hiện truy vấn khi áp dụng Thuật toán
INGRES phân tán: 187 ms
+ Thời gian thực hiện truy vấn khi áp dụng Thuật toán R*:
130 ms.
Bảng so sánh kết quả thời gian thực hiện của 2 thuật toán:
Tên trạm

INGRES phân tán

R*


Trạm 1

125 ms

140 ms

Trạm 2

140 ms

156 ms

Trạm 3

187 ms

130 ms

3.5. Kết luận chƣơng 3
Chương 3 trình bày về bài toán quản lý nhận sự và chương
trình cài đặt 2 thuật toán INGRES phân tán và R* bao gồm: Thiết kế
CSDL phân tán, lựa chọn ngôn ngữ lập trình, hệ quản trị CSDL và

Số hóa bởi Trung tâm Học liệu – ĐHTN



25
kết quả thực nghiệm chạy một câu truy vấn để so sánh thời gian chạy

khi truy vấn tối ưu sử dụng 2 thuật toán trên các trạm khác nhau. Qua
kết quả thực nghiệm ta thấy các giải pháp thực hiện trên các trạm là
như nhau với cả hai thuật toán nhưng thời gian thực hiện là khác
nhau. Cụ thể, thời gian thực hiện truy vấn ở trạm 1 nhanh hơn trạm 2
và trạm 3 với cả hai thuật toán. Trong trường hợp câu truy vấn này,
thuật toán R* và thuật toán INGRES phân tán có thời gian thực hiện
chênh lệch không đáng kể và tùy thuộc vào tốc độ CPU của mỗi
trạm. Thuật toán INGRES phân tán và R* đều có ưu, nhược điểm
riêng, thuật toán R* không hỗ trợ hệ thống phân tán theo kiểu phân
mảnh và bản sao, thuật toán INGRES phân tán có hỗ trợ phân mảnh
nhưng chỉ với phân mảnh ngang. Do đó, tùy vào cách thiết kế hệ
thống phân tán mà ta lựa chọn thuật toán áp dụng cho phù hợp.

Số hóa bởi Trung tâm Học liệu – ĐHTN



×