Do đó, tối ưu truy vấn đóng một vai trong quan trọng trong hệ thống quản trị cơ sở dữ liệu, thực hiện tối ưu truy vấn trên cơ sở của ba thành phần quan trọng gồm không gian tìm kiếm, mô
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Trang 2LỜI CẢM ƠN
Xin chân thành cảm ơn Phòng Đào tạo Sau Đại học, Bộ môn Khoa học và Kỹ thuật thông tin, Trường Đại học Công nghệ thông tin TPHCM đã chấp nhận và tạo điều kiện để đề tài luận văn cao học này được thực hiện
Đặc biệt, xin bày tỏ lòng biết ơn sâu sắc đến PGS TS Nguyễn Đình Thuân, Trưởng Khoa Hệ thống thông tin, Trường Đại học Công nghệ Thông tin TP.HCM đã tận tình hướng dẫn, chỉ bảo, giúp đỡ, định hướng cho đề tài trong suốt thời gian luận văn được thực hiện Đồng thời, xin chân thành cảm ơn các Quý Thầy Cô đã tận tình giảng dạy, trang bị, bổ sung thêm nhiều kiến thức quý báu trong suốt thời gian khóa học
Mặc dù rất nỗ lực để hoàn thành luận văn, tuy nhiên trong quá trình thực hiện
đề tài luận văn không tránh khỏi sai sót, kinh mong nhận được sự nhận xét, góp ý từ Quý Thầy Cô Xin chân thành cảm ơn
Học viên
Hồ Phú Cường
10/2017
Trang 3LỜI CAM ĐOAN
Tôi xin cam đoan luận văn “Tối ưu truy vấn trong cơ sở dữ liệu phân tán” tuân thủ các quy định hiện hành của pháp luật về sở hữu trí tuệ Các số liệu sử dụng trong luận văn là trung thực Các kết quả nguyên cứu trong luận văn là kết quả lao động chính của tôi, chưa được người khác công bố trong bất cứ một công trình nghiên cứu nào
Nếu phát hiện có bất kỳ sự gian lận nào tôi xin hoàn toàn chịu trách nhiệm về nội dung luận văn của mình
Học viên
Hồ Phú Cường
Trang 4DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT
Ký hiệu/
Chữ viết tắt
điểm bất kỳ trong đồ thị đều tồn tại một đường đi
CSDL Cơ sở dữ liệu
DP Dynamic Programming Quy hoạch động
IDP Iterative Dynamic
Programming
Quy hoạch động lặp
cận
CSDL phân tán của SQL Server SDD-1 System for Distributed
T-SQL Transact-SQL Ngôn ngữ lập trình CSDL hướng
thủ tục của Microsoft sử dụng trong SQL Server
Trang 5DANH MỤC CÁC BẢNG
Bảng 4.1: Mô tả các quan hệ trong CSDL thực nghiệm 53Bảng 4.2: Mô tả phân tán quan hệ trong CSDL thực nghiệm 56
Trang 6DANH MỤC CÁC HÌNH ẢNH
Hình 1.1: Ví dụ hoạt động của semi-join 7
Hình 2.1: Môi trường hệ thống CSDL phân tán [10] 14
Hình 2.2: Mô hình kiến trúc client-server [26] 15
Hình 2.3: Quy trình tối ưu truy vấn 17
Hình 2.4: Cấu trúc của cây kết nối 18
Hình 2.5: Công thức xác định tổng thời gian [27] 19
Hình 2.6: Thuật toán tối ưu quy hoạch động cổ điển [28] 22
Hình 3.1: Thuật toán tối ưu IDP [8] 29
Hình 3.3: Biểu đồ kết của truy vấn 34
Hình 3.4: Các phương án có 2 quan hệ 34
Hình 3.5: Các phương án có 3 quan hệ 34
Hình 3.6: Phương án có 3 quan hệ được chọn 34
Hình 3.7: Các phương án có 2 quan hệ trong lần lặp thứ hai 35
Hình 3.8: Các phương án có 3 quan hệ trong lần lặp thứ hai 35
Hình 3.9: Phương án có 3 quan hệ được chọn trong lần lặp thứ hai 35
Hình 3.10: Các phương án có 2 quan hệ trong lần lặp thứ ba 36
Hình 3.11: Phương án tối ưu sau cùng 36
Hình 4.1: Các thành phần của hệ tối ưu truy vấn 40
Hình 4.2: Sơ đồ quan hệ của dữ liệu thống kê 41
Hình 4.3: Sơ đồ quan hệ của phương án thực thi truy vấn, phép kết và quan hệ 43
Hình 4.4: Một phương án thực thi truy vấn được lưu trong hệ thống mô phỏng 43
Hình 4.5: Phương án thực thi khi được biểu diễn dưới dạng cây nhị phân 43
Hình 4.6: Một phương án thực thi truy vấn hoàn chỉnh được lưu trong Danh mục 45 Hình 4.7: Module thực thi phương án truy vấn đặt tại các trạm 45
Hình 4.8 Đoạn mã sử dụng hoạt động sao chép số lượng lớn 46
Hình 4.9: Giao diện Thực nghiệm 1 47
Hình 4.10: Giao diện Thực nghiệm 2 48
Hình 4.11: Ví dụ một phương án thực thi truy vấn hoàn chỉnh được tạo ra 49
Hình 4.12: Phương án thực thi truy vấn dưới dạng cây nhị phân 50
Hình 4.13 : Cấu trúc truy vấn hình chuỗi 51
Hình 4.14 : Cấu trúc truy vấn hình sao 51
Hình 4.15: Cấu trúc truy vấn clique 51
Trang 7Hình 4.16: Cấu trúc truy vấn 53
Hình 4.17: Ví dụ cấu trúc truy vấn 53
Hình 4.18: Sơ đồ quan hệ của CSDL thực nghiệm 55
Hình 4.19: Sơ đồ kết nối giữa các trạm 56
Hình 4.20: Kết quả chạy thuật toán với n=10, biểu đồ kết hình chuỗi 59
Hình 4.21: Kết quả chạy thuật toán với n=10, biểu đồ kết hình sao 59
Hình 4.22: Kết quả chạy thuật toán với n=10, biểu đồ kết hình clique 59
Hình 4.23: So sánh thuật toán IDP+ với thuật toán tối ưu tham lam, biểu đồ kết hình chuỗi 60
Hình 4.24: So sánh thuật toán IDP+ với thuật toán tối ưu tham lam, biểu đồ kết hình sao 60
Hình 4.25: So sánh thuật toán IDP+ với thuật toán tối ưu tham lam, biểu đồ kết hình clique 61
Hình 4.26: Kết quả chạy thuật toán với n=15, biểu đồ kết hình chuỗi 61
Hình 4.27: Kết quả chạy thuật toán với n=15, biểu đồ kết hình sao 62
Hình 4.28: Kết quả chạy thuật toán với n=15, biểu đồ kết hình clique 62
Hình 4.29: Kết quả chạy thuật toán với n=20, biểu đồ kết hình chuỗi 62
Hình 4.30: Kết quả chạy thuật toán với n=20, biểu đồ kết hình sao 63
Hình 4.31: Kết quả chạy thuật toán với n=20, biểu đồ kết hình clique 63
Hình 4.32: Thời gian tối ưu và thời gian thực thi phương án của IDP, IDP+ 65
Hình 4.33: Thời gian trả về kết quả truy vấn cho người dùng 65
Hình 4.34: Thời gian tối ưu và thời gian thực thi phương án của IDP, IDP+ 66
Hình 4.35: Thời gian trả về kết quả truy vấn cho người dùng 67
Hình 4.36: Giao diện chương trình mô phỏng thực hiện tối ưu truy vấn 67
Trang 8MỤC LỤC
LỜI CẢM ƠN i
LỜI CAM ĐOAN ii
DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT iii
DANH MỤC CÁC BẢNG iv
DANH MỤC CÁC HÌNH ẢNH v
MỤC LỤC vii
MỞ ĐẦU 1
CHƯƠNG 1 TỔNG QUAN VỀ TỐI ƯU TRUY VẤN CƠ SỞ DỮ LIỆU PHÂN TÁN 4
1.1 Giới thiệu về tối ưu truy vấn: 4
1.2 Các nghiên cứu về tối ưu truy vấn cơ sở dữ liệu phân tán: 5
CHƯƠNG 2: CÁC THÀNH PHẦN QUAN TRỌNG TRONG TỐI ƯU TRUY VẤN CƠ SỞ DỮ LIỆU PHÂN TÁN 13
2.1 Giới thiệu: 13
2.2 Kiến trúc hệ thống cơ sở dữ liệu phân tán: 14
2.3 Xử lý truy vấn trong cơ sở dữ liệu phân tán: 16
2.4 Tối ưu truy vấn cơ sở dữ liệu phân tán: 17
2.4.1 Không gian tìm kiếm: 17
2.4.2 Mô hình chi phí: 19
2.4.3 Thuật toán tối ưu quy hoạch động: 21
CHƯƠNG 3: ỨNG DỤNG THUẬT TOÁN IDP VỚI SỰ CẢI TIẾN CÁCH TIẾP CẬN 26
3.1 Giới thiệu: 26
3.2 Thuật toán tối ưu IDP và cách tiếp cận cải tiến: 27
3.2.1 Mô tả thuật toán tối ưu IDP: 27
3.2.2 Cách tiếp cận đề xuất cải tiến thuật toán IDP: 31
3.2.3 Lưu đồ thuật toán IDP+: 33
3.2.4 Ví dụ minh họa hoạt động của thuật toán IDP+: 33
3.2.5 Độ phức tạp thuật toán IDP+: 36
CHƯƠNG 4: HỆ THỐNG MÔ PHỎNG ỨNG DỤNG THUẬT TOÁN IDP + TỐI ƯU TRUY VẤN CSDL PHÂN TÁN VÀ KẾT QUẢ THỰC NGHIỆM 40
4.1 Hệ thống mô phỏng ứng dụng thuật toán IDP+ trong tối ưu truy vấn CSDL phân tán: 40
Trang 94.1.1 Môi trường ứng dụng: 40
4.1.2 Mô tả hệ thống: 40
4.1.3 Các chức năng chính của hệ thống mô phỏng: 46
4.2 Dữ liệu mô phỏng: 51
4.3 Kết quả thực nghiệm: 58
4.3.1 Thực nghiệm 1: 58
4.3.2 Thực nghiệm 2: 64
4.2.3 Đánh giá: 67
CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 69
5.1 Kết luận: 69
5.2 Hướng phát triển: 69
TÀI LIỆU THAM KHẢO 71
Trang 10MỞ ĐẦU
Hiện nay, quy mô hoạt động, sản xuất, kinh doanh của các tổ chức, doanh nghiệp được mở rộng một cách mạnh mẽ, cơ cấu tổ chức không còn tập trung mà phân tán trên phạm vi rộng, hệ thống thông tin của họ cũng được đầu tư tương ứng Với sự phát triển của hệ thống mạng truyền thông, cơ sở dữ liệu phân tán ngày càng được triển khai phổ biến, tận dụng những ưu điểm của dữ liệu phân tán nhằm đáp ứng nhu cầu khai thác dữ liệu từ nhiều chi nhánh khác nhau của các tổ chức, doanh nghiệp Cùng với sự lớn mạnh về quy mô của tổ chức, doanh nghiệp, kích thước cơ sở
dữ liệu cũng tăng lên Các truy vấn dữ liệu ngày càng phức tạp khi số lượng các quan
hệ và số lượng các phép kết trong truy vấn tăng lên Do đó, tối ưu truy vấn đóng một vai trong quan trọng trong hệ thống quản trị cơ sở dữ liệu, thực hiện tối ưu truy vấn trên cơ sở của ba thành phần quan trọng gồm không gian tìm kiếm, mô hình chi phí, các chiến lược tìm kiếm, giúp tìm ra các phương án thực thi truy vấn với chi phí thấp Tối ưu truy vấn trong một môi trường cơ sở dữ liệu phân tán là một vấn đề khó khăn
để giải quyết
Nhiều nghiên cứu về các chiến lược tìm kiếm trong tối ưu truy vấn đã được thực hiện, trong đó chiến lược tìm kiếm đầy đủ, mà điển hình là thuật toán tìm kiếm dựa trên quy hoạch động có thể giúp tìm ra một phương án thực thi truy vấn có chi phí thấp nhất trong số tất cả các phương án trong không gian tim kiếm, tuy nhiên khi phải tối ưu truy vấn có nhiều quan hệ, quy hoạch động tốn rất nhiều thời gian và tài nguyên
bộ nhớ cho việc tối ưu Một chiến lược tìm kiếm khác được dùng trong tối ưu truy vấn đó là chiến lược tìm kiếm heuristic, cụ thể là giải thuật tham lam có thể giúp tìm
ra phương án thực thi trong thời gian nhanh chóng, tuy nhiên chiến lược tìm kiếm này hay đưa ra các quyết định thay đổi hướng đi và không xem xét lại các quyết định
cũ, do đó có thể bỏ sót các phương án tốt và thường không tìm ra được phương án tối
ưu
Một thuật toán đã được Donald Kossmann và Konrad Stocker [12] đề xuất với
tên gọi Iterative Dynamic Programming được xem như một sự kết hợp của quy hoạch
động và heuristic tham lam bởi vì nó kết hợp các ưu điểm của cả hai: có thể tìm ra phương án thực thi truy vấn tốt như quy hoạch động đối với các truy vấn đơn giản,
Trang 11và khi cần tối ưu truy vấn phức tạp liên quan đến nhiều quan hệ một cách nhanh chóng thì thuật toán có thể tìm ra phương án có chất lượng ở mức chấp nhận được như khi sử dụng ý tưởng của thuật toán heuristic tham lam, hoặc cân bằng giữa hai yếu tố: thời gian dành cho tối ưu và chất lượng phương án Ý tưởng chính của IDP là
áp dụng nhiều lần quy hoạch động trong quá trình tối ưu một truy vấn Ở mỗi bước lặp lại quy hoạch động, thuật toán sẽ chọn một phương án con tốt nhất tại thời điểm
đó để tiếp tục ở bước lặp tiếp theo, xóa đi các phương án không cần thiết và tiếp tục cho đến khi tìm ra kết quả cuối cùng
Tuy nhiên, do sử dụng cách tiếp cận tham lam nên ở mỗi bước lặp quy hoạch động, thuật toán IDP chỉ đánh giá chỉ đánh giá hướng đi một cách cục bộ bằng cách chọn một phương án con tốt nhất tại mỗi bước lặp, mà không có sự ước lượng, đánh giá về kết quả toàn cục Đôi khi, điều này có thể khiến cho thuật toán IDP sai lầm khi chọn những phương án cục bộ tốt nhưng lại dẫn đến kết quả sau cùng không tối ưu.Trong luận văn này, một hệ tối ưu được xây dựng để có thể tối truy vấn kết trong cơ sở dữ liệu phân tán bằng cách ứng dụng thuật toán IDP đã được Donald Kossmann và Konrad Stocker đề xuất, với một sự cải tiến ở cách tiếp cận khác với cách tiếp cận tham lam đã được sử dụng, giúp cho thuật toán có sự đánh giá kết quả toàn cục ở mỗi bước lặp lại quy hoạch động Hệ thống tối ưu này gồm các thành phần chính: phân tích truy vấn, khởi tạo input, tối ưu truy vấn, viết lại phương án hoàn
chỉnh và thực thi phương án Hệ thống nhận một truy vấn kết được viết dưới dạng
T-SQL, chuyển đổi truy vấn thành các dữ liệu đầu vào của thuật toán và tiến hành tối
ưu bằng cách ứng dụng thuật toán IDP với cách tiếp cận mới để tạo nên một phương
án thực thi truy vấn Sau đó hệ thống sẽ thực thi phương án này để trả về kết quả cho truy vấn cho người dùng Ngoài ra, trong hệ tối ưu này, một tùy chọn việc thực thi truy vấn không sử dụng kỹ thuật tối ưu nào cũng được tạo ra để có thể so sánh hiệu quả tối ưu Các kết quả trong phần thực nghiệm sẽ chứng minh rằng việc áp dụng thuật toán IDP với cách tiếp cận mới để tối ưu truy vấn CSDL phân tán mang lại hiệu quả tốt hơn so với khi sử dụng cách tiếp cận cũ, cũng như khi không sử dụng phương pháp tối ưu truy vấn nào
Trang 12Nội dung báo cáo này gồm 5 chương như sau:
Chương 1: Tổng quan về tối ưu truy vấn CSDL phân tán
Chương 2: Các thành phần quan trọng trong tối ưu truy vấn CSDL phân tán
Chương 3: Ứng dụng thuật toán IDP với sự cải tiến cách tiếp cận
Chương 4: Hệ thống mô phỏng ứng dụng thuật toán IDP+ tối ưu truy vấn CSDL phân tán và kết quả thực nghiệm
Chương 5: Kết luận và hướng phát triển
Trang 13CHƯƠNG 1 TỔNG QUAN VỀ TỐI ƯU TRUY VẤN
CƠ SỞ DỮ LIỆU PHÂN TÁN 1.1 Giới thiệu về tối ưu truy vấn:
Mỗi truy vấn của người dùng thường tồn tại nhiều phương án thực thi truy vấn khác nhau, mỗi phương án mô tả cách thức mà truy vấn có thể được thực thi để trả
về kết quả cho người dùng Các phương án này trả về cùng một kết quả truy vấn, tuy nhiên, chi phí của chúng thường khác nhau Hệ tối ưu truy vấn là một thành phần rất quan trọng của hệ quản trị CSDL, giúp mang lại một phương án thực thi truy vấn tối
ưu trong số rất nhiều phương án Các kỹ thuật tối ưu truy vấn có thể được chia ra theo hai kỹ thuật chính: tối ưu tĩnh và tối ưu động
Tối ưu tĩnh sẽ được thực hiện trước thời điểm truy vấn được thực thi, việc thực thi truy vấn sẽ dựa vào một phương án là kết quả của quá trình tối ưu truy vấn Bởi
vì kích thước của các kết quả trung gian trong mỗi phương án thực thi truy vấn không được biết trước cho đến khi nó được thực hiện, do đó, cần thiết phải ước lượng kích thước các kết quả trung gian và chi phí của chúng thông qua một mô hình chi phí, sử dụng các thông số thống kê của CSDL Những sai sót trong quá trình ước lượng nêu trên có thể dẫn đến việc lựa chọn một phương án không tối ưu, thậm chí là một phương án sai lầm Các chiến lược tìm kiếm thường được sử dụng trong tối ưu tĩnh
đó là tìm kiếm đầy đủ, tìm kiếm heuristic và tìm kiếm ngẫu nhiên
Kỹ thuật tối ưu động sẽ kết hợp hai giai đoạn tối ưu và thực thi truy vấn lại với nhau, tức việc tối ưu sẽ được thực hiện ngay lúc thực thi truy vấn Tại tất cả các điểm trong quá trình thực thi truy vấn, việc lựa chọn hoạt động tốt nhất tiếp theo có thể được dựa vào những hiểu biết chính xác của kết quả từ hoạt động trước đó Do đó, các thông số thống kê về CSDL là không cần thiết để ước lượng kích thước của các kết quả trung gian, và mô hình chi phí sẽ không được sử dụng Tuy nhiên, các thông
số thống kê này vẫn có thể hữu dụng để chọn hoạt động đầu tiên Lợi thế chính của tối ưu truy vấn động so với tối ưu tĩnh đó là kích thước của các quan hệ trung gian là sẵn có, thay vì phải ước lượng bằng mô hình chi phí như ở kỹ thuật tối ưu tĩnh, từ đó giảm đi khả năng dẫn đến một lựa chọn sai lầm
Trang 14Chương 1: Tổng quan về tối ưu truy vấn cơ sở dữ liệu phân tán
Ngoài ra, có một dạng tối ưu lai giữa tối ưu tĩnh và tối ưu động bằng cách kết hợp hai kỹ thuật tĩnh và động lại với nhau nhằm tận dụng những lợi thế của tối ưu tĩnh, đồng thời hạn chế những sai sót trong quá trình ước lượng kích thước và chi phí của các quan hệ trung gian Kỹ thuật tối ưu hybrid này cơ bản dựa trên tối ưu tĩnh, tuy nhiên, khi có sự khác biêt lớn giữa kích thước thực tế của các quan hệ trung gian
so với kích thước được ước lượng, tối ưu động sẽ được thực hiện tại thời điểm này
1.2 Các nghiên cứu về tối ưu truy vấn cơ sở dữ liệu phân tán:
Một thuật toán tối ưu truy vấn CSDL phân tán sử dụng phương pháp tối ưu động đó là thuật toán INGRESS phân tán, là phiên bản mở rộng của thuật toán tối ưu INGRES [28, 20] cho CSDL tập trung Thuật toán INGRES phân nhỏ truy vấn thành các thành phần nhỏ hơn và cố gắng làm giảm kích thước của các kết quả trung gian
Đầu tiên, một truy vấn q gồm n quan hệ sẽ được phân rã thành n truy vấn con q 1 →
độc lập để cố gắng làm giảm kích thước của kết quả trung gian Hai kỹ thuật được sử
dụng cho việc phân rã truy vấn là tách và thay thế bộ Giả sử ta có truy vấn q như
với A i , A’ i là danh sách các thuộc tính của quan hệ R i , P 1 là vị từ liên quan đến các
thuộc tính của quan hệ R 1 , P 2 là vị từ liên quan đến các các thuộc tính của các quan
quan hệ chung R’ 1 là kết quả của truy vấn q’
q’: SELECT R 1 A 1 INTO R’ 1
FROM R 1 WHERE P 1 (R 1 A’ 1 ) q'’: SELECT R 2 A 2 , R 3 A 3 , , R n A n
FROM R’ 1 , R 2 , , R n WHERE P 2 (R 1 A 1 , R 2 A 2 , , R n A n )
Trang 15Chương 1: Tổng quan về tối ưu truy vấn cơ sở dữ liệu phân tán
Việc phân nhỏ truy vấn q như trên sẽ làm giảm kích thước của kết quả trung
gian R’ 1, từ đó có thể giảm chi phí truyền thông trong mạng
Đối với các truy vấn đa quan hệ mà không thể tối giản được nữa, kỹ thuật thay
thế bộ có thể được sử dụng để chuyển đổi về dạng truy vấn đơn quan hệ Việc này
được thực hiện bằng cách chọn một quan hệ R 1 trong q để thay thế bộ, với mỗi bộ trong R 1 , thay thế các thuộc tính trong R bởi các giá trị thực tế của nó Cách này sẽ tạo ra một tập hợp các truy vấn con q’ có n - 1 quan hệ, tức là q(R 1 , R 2 , …, R n) được thay thế bởi {𝑞′(𝑡1𝑖, 𝑅2, … , 𝑅𝑛), 𝑡1𝑖 ∈ 𝑅1}
Thuật toán INGRES phân tán hoạt động rất giống với thuật toán INGRES cho
môi trường tập trung, với sự bổ sung quá trình phân rã mỗi truy vấn q i thành các truy vấn con mà thực thi trên các phân mảnh, tuy nhiên, chỉ có phân mảnh ngang được xử
lý Thuật toán INGRES phân tán tối ưu với mối quan hệ kết hợp giữa chi phí truyền thông và thời gian phản hồi
Thuật toán INGRES phân tán được đặc trưng bởi một sự tìm kiếm hạn chế trong không gian tìm kiếm, một quyết định tối ưu được thực hiện cho mỗi bước mà không xem xét hệ quả của quyết định này đối với kết quả tối ưu toàn cục Hướng tiếp cận tìm kiếm đầy đủ mà trong đó tất cả các phương án trong không gian tìm kiếm đều được đánh giá để xác định phương án tốt nhất là một sự thay thế cho hướng tiếp cận tìm kiếm hạn chế [26]
Một ý tưởng khác được đưa ra là tìm cách làm giảm tối đa kích thước dữ liệu được truyền tải giữa các trạm, và semi-join [14] có thể giúp thực hiện ý tưởng này Semi-join làm việc như một toán tử rút gọn kích thước của một quan hệ trước khi
truyền Khi kết hai quan hệ R và S trên thuộc tính A, lưu tại trạm 1 và trạm 2 tương
ứng, có thể thực hiện phép kết bằng cách truyền một trong hai quan hệ (hoặc cả hai quan hệ) đến trạm mà truy vấn được thực thi và trả về kết qua truy vấn Một cách khác để thực hiện phép kết này là làm giảm kích thước của một hoặc cả hai quan hệ
sử dụng semi-join trước khi truyền chúng đi, sử dụng quy tắc:
Trang 16Chương 1: Tổng quan về tối ưu truy vấn cơ sở dữ liệu phân tán
𝑅 ⋈𝐴 𝑆 (R A S) ⋈𝐴S R⋈𝐴(S A R) (R A S) ⋈𝐴(S A R) (1.1)
với R A S: S semi-join R trên thuộc tính A Ví dụ sau sẽ minh họa cho cách thức hoạt
động của semi-join:
Hình 1.1: Ví dụ hoạt động của semi-join
Trong ví dụ trên, hai quan hệ R và S sẽ thực hiện phép kết trên thuộc tính A tại trạm 2, thay vì phải truyền quan hệ R từ trạm 1 về trạm 2, semi-join sẽ giúp làm giảm kích thước quan hệ R trước khi truyền về trạm 2, các bước thực hiện như sau:
Thực hiện phép chiếu đối với quan hệ S trên thuộc tính A tạo thành S’, truyền
S’ sang trạm 1
Thực hiện phép kết giữa R với S’, tạo thành R’, truyền R’ sang trạm 2 Khi
đó, R’ là kết quả của việc loại bỏ các bộ trong R mà không liên quan đến truy vấn giữa R và S, giúp giảm chi phí truyền thông
Cuối cùng, thực hiện phép kết giữa S và R’ và trả về kết quả truy vấn
Thuật toán tối ưu được sử dụng trong SDD-1 [21], hay còn được gọi là thuật toán SDD-1, dựa trên giải thuật tối ưu leo đồi, thực hiện các phép kết dựa trên semi-join Thuật toán SDD-1 đánh giá chi phí và lợi ích của tất cả các semi-join, trong đó,
chi phí được nhắc đến là chi phí truyền tải các giá trị thuộc tính semi-join, lợi ích là
chi phí nếu truyền tải các bộ không liên quan đến phép kết, lần lượt được biểu diễn
bằng hai đại lượng C và B như sau:
Trang 17Chương 1: Tổng quan về tối ưu truy vấn cơ sở dữ liệu phân tán
với T MSG là thời gian truyền các thông điệp phục vụ semi-join, T TR là thời gian truyền
một đơn vị dữ liệu của quan hệ, SF SJ (S.A) là tỉ lệ các giá trị riêng biệt của thuộc tính
A chứa trong S trên miền giá trị của thuộc tính A
Thuật toán chọn một semi-join có hiệu số (B – C) lớn nhất, thực hiện nó và cập
nhật thông tin về số lượng các giá trị riêng biệt của quan hệ mà đã được rút gọn kích thước bởi semi-join Quá trình này được lặp lại cho đến khi không còn semi-join nào
có (B – C) lớn hơn 0 Cuối cùng, thuật toán chọn trạm nào chứa lượng dữ liệu nhiều nhất (trạm mà sẽ cho ra chi phí truyền thông nhỏ nhất nếu truyền tải tất cả các quan
hệ còn lại về đây) và truyền tải tất cả các quan hệ còn lại về trạm này và thực hiện
các phép kết để tạo ra kết quả cuối cùng của truy vấn Mặc dù thuật toán SDD-1 có thể cắt giảm chi phí truyền thông một cách hiệu quả, nó vẫn có một số hạn chế, ví dụ như độ phức tạp thuật toán Khi số lượng các bản ghi là rất lớn, thì chi phí cho việc tìm kiếm và thực thi truy vấn sẽ tăng lên một cách nhanh chóng Hơn nữa, việc thực hiện tuần tự các semi-join sẽ làm tăng thời gian phản hồi của truy vấn [8]
Với kỹ thuật tối ưu tĩnh, có sự tách biệt rõ ràng giữa quá trình tối ưu tạo ra một phương án thực thi truy vấn và quá trình thực thi truy vấn dựa vào phương án này Vì thế, một mô hình chi phí chính xác sẽ giúp dự đoán chi phí của các phương án trong không gian tìm kiếm Nhiều nghiên cứu khác nhau liên quan đến tối ưu tĩnh cũng đã được thực hiện, tập trung vào việc tối ưu chi phí truyền thông giữa các trạm trong hệ thống phân tán Một thuật toán tối ưu tĩnh được sử dụng trong hầu hết các CSDL thương mại là thuật toán tối ưu dựa trên quy hoạch động được sử dụng đầu tiên trong
dự án IBM’s System R [10, 22], hay còn được gọi là thuật toán System R, là một thuật toán tìm kiếm đầy đủ Thuật toán này tạo ra tất cả các phương án thực thi truy vấn, mỗi phương án sẽ có một chi phí thực thi được ước lượng dựa vào mô hình chi phí, và phương án có chi phí nhỏ nhất sẽ được tìm thấy Các phương án thực thi nói trên được tạo ra bằng cách hoán vị thứ tự các phép kết của các quan hệ có trong truy vấn Thách thức mà thuật toán tối ưu này phải đối mặt cũng chính là việc lựa chọn thứ tự thực hiện phép kết khi xây dựng phương án thực thi truy vấn, được chứng minh
là một NP-Khó [29], tức là không thể tìm ra phương án tối ưu cho truy vấn có kích
Trang 18Chương 1: Tổng quan về tối ưu truy vấn cơ sở dữ liệu phân tán
thước bất kỳ trong một khoảng thời gian đa thức Trong môi trường phân tán, thuật toán System R* được sử dụng để tối ưu, là sự mở rộng của thuật toán System R Ưu điểm của thuật toán quy hoạch động là tìm ra phương án tốt nhất có thể có, tuy nhiên, nhược điểm của là nó có độ phức tạp 𝓞(3𝑛) [11], với n là số lượng quan hệ trong truy
vấn Do đó, với các truy vấn có số lượng quan hệ đủ lớn, thuật toán quy hoạch động mất rất nhiều thời gian để tìm ra phương án tối ưu Hơn nữa, trong hệ thống CSDL phân tán, độ phức tạp của thuật toán quy hoạch động còn tăng lên đáng kể khi có sự tồn tại của các bản sao của các quan hệ được đặt tại các trạm khác nhau trong hệ thống phân tán
Một số thuật toán tối ưu dựa vào Heuristic tham lam được nêu trong các nghiên cứu [13, 19, 23] có độ phức tạp đa thức, có thể nhanh chóng tìm ra phương án thực thi cho truy vấn có nhiều quan hệ, tuy nhiên chúng thường tạo ra các phương án có chi phí cao hơn so với phương án được tìm ra bởi thuật toán tìm kiếm đầy đủ, ví dụ như thuật toán dựa trên quy hoạch động, thậm chí, đôi khi Heuristic tham lam có thể dẫn đến phương án sai lầm
Trong nghiên cứu [9], các tác giả đã cải tiến thuật toán đàn kiến để áp dụng vào bài toán tối ưu truy vấn nhằm tìm ra giải pháp tối ưu Trong các thực nghiệm được nêu trong nghiên cứu, giải thuật tối ưu đàn kiến cải tiến được so sánh với giải thuật dựa trên Heuristic tham lam và giải thuật tối ưu đàn kiến nguyên bản, các kết quả thực nghiệm cho thấy giải thuật tối ưu đàn kiến cải tiến có thời gian xử lý truy vấn nhanh hơn, đồng thời giúp rút ngắn thời gian phản hồi kết quả truy vấn đến người dùng so với hai giải thuật trong so sánh
Trong nghiên cứu [24], các tác giả đã cải tiến giải thuật di truyền để khắc phục thiếu sót về sự hội tụ sớm, tạo ra một giải thuật mới bằng cách kết hợp tìm kiếm cục
bộ của giải thuật di truyền với tìm kiếm tổng quát của giải thuật SA (simulated
annealing) Các kết quả thực nghiệm được trình bày trong nghiên cứu cho thấy giải
thuật mới cần nhiều thời gian hơn để tạo ra phương án thực thi truy vấn, tuy nhiên nó thường trả về phương án có chất lượng tốt hơn, do đó thời gian phản hồi truy vấn được rút ngắn so với giải thuật di truyền
Trang 19Chương 1: Tổng quan về tối ưu truy vấn cơ sở dữ liệu phân tán
Một số nghiên cứu đã được thực hiện để tạo ra giải pháp tối ưu cho việc lựa
chọn thứ tự thực hiện các phép kết của truy vấn Các thuật toán ngẫu nhiên được xem
xét trong [15] có thể làm giảm chi phí của việc tối ưu truy vấn, nhưng chúng gặp vấn
đề khi có sự cố định về một lượng bộ nhớ rất nhớ cần cho quá trình tìm kiếm và chạy chậm hơn so với heuristic Thuật toán Two-Phase Optimization được nêu trong nghiên cứu [16] thực hiện việc tìm kiếm ngẫu nhiên các phương án khác nhau trong không gian tìm kiếm, nó tạo ra một phương án tối ưu nhưng lại làm gia tăng lượng
bộ nhớ cần cho việc tối ưu truy vấn
Trong nghiên cứu [12], các tác giả giới thiệu một thuật toán tìm kiếm mới mà
họ gọi là Iterative Dynamic Programming Thuật toán IDP này có thể được xem như
một sự kết hợp của quy hoạch động và heuristic tham lam bởi vì nó kết hợp các ưu điểm của cả hai: có thể tìm ra phương án thực thi truy vấn rất tốt như quy hoạch động,
và khi cần tìm kiếm nhanh hơn có thể tìm ra phương án ở mức chấp nhận được như khi sử dụng heuristic tham lam Ý tưởng chính của IDP là áp dụng nhiều lần quy hoạch động trong quá trình tối ưu một truy vấn Ở mỗi bước lặp quy hoạch động, thuật toán sẽ chọn một phương án con tốt nhất để tiếp tục ở bước lặp tiếp theo và xóa
đi các phương án con không cần thiết Điều này sẽ giúp giảm đáng kể lượng bộ nhớ cần để lưu tất cả các phương án IDP có độ phức tạp thuật toán không quá cao và có thể tối ưu truy vấn trong những trường hợp mà quy hoạch động là không khả thi vì
độ phức tạp cao của nó Nếu truy vấn đơn giản, IDP có thể tạo ra một phương án tối
ưu như quy hoạch động và trong cùng thời gian như quy hoạch động Nếu truy vấn quá phức tạp mà quy hoạch động không xử lý được, IDP có thể tạo ra các phương án con tối ưu mà tất cả các phương án con tối ưu này sẽ tạo thành một phương án thực thi truy vấn có chất lượng ở mức chấp nhận được tương ứng với mức độ yêu cầu rút ngắn thời gian cần cho việc thực hiện tối ưu Hay nói cách khác, đối với các truy vấn
có liên quan đến số lượng lớn các quan hệ, IDP vẫn có thể thực hiện tối ưu để đạt được sự cân bằng giữa chất lượng phương án và thời gian dành cho việc thực hiện tối
ưu Một ưu điểm khác của IDP là nó có thể được tích hợp một cách dễ dàng vào một
hệ tối ưu đang có sẵn mà đang dựa trên quy hoạch động thông qua việc thay đổi một
số ít mã nguồn của hệ thống tối ưu cũ Một số thành phần phức tạp của hệ thống cũ
Trang 20Chương 1: Tổng quan về tối ưu truy vấn cơ sở dữ liệu phân tán
hệ thống tối ưu sử dụng IDP mà không cần thay đổi Tuy nhiên, do sử dụng cách tiếp cận tham lam, ở mỗi bước lặp lại quy hoạch động, thuật toán IDP chọn một phương
án con tốt nhất tại thời điểm đó mà không có sự đánh giá nào về kết quả toàn cục Do
đó, thuật toán IDP vẫn có thể mắc sai lầm khi chọn các phương án con mà dẫn đến kết quả cuối cùng không tốt
Tại Việt Nam, đã có một số nghiên cứu, luận văn về tối ưu hóa truy vấn trong
cơ sở dữ liệu phân tán Trong các báo cáo đề tài luận văn [1-7], các báo cáo này giới thiệu về các thuật toán tối ưu và một số trong đó có ứng dụng nguyên bản các thuật toán INGRES phân tán, SDD – 1 hoặc System R* được trình bày phần trên để tối ưu truy vấn mà không có sự cải tiến nào Các kết quả trong các báo cáo trên đã chứng minh được hiệu quả của các thuật toán tối ưu, tuy nhiên các truy vấn được sử dụng
để mô phỏng thuật toán thường đơn giản, số lượng quan hệ trong truy vấn không nhiều Do đó, nghiên cứu ứng dụng thuật toán IDP vào tối ưu truy vấn CSDL phân tán còn khá mới mẻ, khác biệt so với các báo cáo luận văn nêu trên
Với những phân tích trên, mục tiêu của đề tài luận văn là xây dựng một hệ tối
ưu truy vấn kết cơ sở dữ liệu phân tán bằng cách ứng dụng có cải tiến thuật toán
IDP đã được Donald Kossmann và Konrad Stocker đề xuất trong công trình
nghiên cứu [12], với một cách tiếp cận mới cho phép thuật toán đánh giá về kết quả toàn cục ở mỗi bước lặp, giúp mang lại kết quả tốt hơn Hệ tối ưu dựa trên
thuật toán IDP có khả năng tạo ra các phương án có chất lượng tốt nhất đối với các truy vấn đơn giản, đồng thời có thể thực hiện tối ưu các truy vấn có số lượng lớn các quan hệ (từ 10 đến 20 quan hệ) với chất lượng phương án thực thi truy vấn ở mức tốt hoặc chấp nhận được tương ứng với thời gian tối ưu được rút ngắn mà các thuật toán tìm kiếm đầy đủ hoặc heuristic khác có thể gặp khó khăn về thời gian tối ưu hoặc chất lượng phương án, đồng thời không sử dụng quá nhiều tài nguyên bộ nhớ trong quá trình tối ưu bởi khả năng loại bỏ các phương án không còn cần thiết trong quá trình tìm kiếm Phương án thực thi truy vấn được trả về bởi hệ tối ưu sẽ được thực thi để
có thể rút ngắn thời gian trả về kết quả truy vấn cho người dùng Hệ tối ưu dựa trên thuật toán IDP này cũng sẽ được nghiên cứu cài đặt để có thể tối ưu các truy vấn liên quan đến các quan hệ được nhân bản tại nhiều trạm khác nhau trong hệ thống phân
Trang 21Chương 1: Tổng quan về tối ưu truy vấn cơ sở dữ liệu phân tán
tán Trong giới hạn thời gian để thực hiện đề tài luận văn, trường hợp dữ liệu của các quan hệ được phân mảnh không được xử lý trong hệ tối ưu này do không đủ thời gian
để xây dựng một hệ thống tiền xử lý dữ liệu phân mảnh
Trong chương 2 và chương 3, kiến trúc, mô hình chi phí, các giải thuật được ứng dụng trong hệ thống tối ưu truy vấn cơ sở dữ liệu phân tán và một cách tiếp cận mới sẽ được trình bày Chương 4 sẽ trình bày về hệ thống mô phỏng việc ứng dụng thuật toán IDP để tối ưu truy vấn CSDL phân tán
Trang 22CHƯƠNG 2: CÁC THÀNH PHẦN QUAN TRỌNG TRONG TỐI ƯU
TRUY VẤN CƠ SỞ DỮ LIỆU PHÂN TÁN 2.1 Giới thiệu:
Một cơ sở dữ liệu phân tán là một tập hợp của nhiều CSDL có liên quan về mặt logic được phân bố trên một mạng máy tính Một hệ quản trị CSDL phân tán là một
hệ thống phần mềm mà cho phép quản trị CSDL phân tán và làm cho sự phân tán trở nên trong suốt đối với người dùng Thuật ngữ hệ thống CSDL phân tán thường được dùng để chỉ sự kết hợp giữa CSDL phân tán và hệ quản trị CSDL phân tán Một cách hiểu đơn giản, một CSDL phân tán bao gồm một số lượng các quan hệ được đặt ở các trạm có vị trí vật lý khác nhau Việc phân tán dữ liệu ở nhiều trạm khác nhau đem lại lợi ích rõ rệt cho các tổ chức có quy mô lớn sở hữu nhiều văn phòng và lực lượng lao động được phân bố ở nhiều ví trí khác nhau Một lợi ích khác của việc phân tán dữ liệu đó là giúp gia tăng tính sẵn sàn của dữ liệu Chẳng hạn, trong môi trường dữ liệu tập trung, khi máy chủ bị lỗi thì toàn bộ hệ thống sẽ không thể truy cập được dữ liệu Việc nhân bản dữ liệu ở một số trạm khác nhau trong hệ thống phân tán có thể giúp tránh được trường hợp này bằng cách cung cấp khả năng truy cập đến các bản sao của dữ liệu được lưu đồng thời ở các trạm khác khi một trạm trong hệ thống phân tán
bị lỗi Ở một khía cạnh khác, việc nhân bản dữ liệu cũng có thể giúp giảm tải truy cập đến trạm chứa dữ liệu bằng cách tạo ra các bản sao của dữ liệu ở những nơi có nhu cầu sử dụng cao, giúp tăng tốc hiệu suất hệ thống tại những nơi đó Một số đặc trưng quan trọng trong cấu trúc và chức năng của CSDL phân tán như sau:
Một CSDL phân tán được tổ chức theo một lược đồ xác định cấu trúc của của
dữ liệu được phân tán và các mối quan hệ giữa dữ liệu Lược đồ được định nghĩa theo
một số mô hình dữ liệu, thường là mô hình dữ liệu quan hệ hoặc hướng đối tượng
Một hệ quản trị CSDL phân tán có đầy đủ chức năng của một hệ quản trị CSDL Nó cung cấp khả năng truy vấn mức độ cao, quản lý giao dịch (điều khiển
cạnh tranh và phục hồi), và thực thi toàn vẹn
Một hệ quản trị CSDL phân tán cung cấp sự truy cập một cách trong suốt đến
dữ liệu cho người dùng Các quan hệ có thể được nhân bản hoặc được phân mảnh ở các trạm khác nhau trong hệ thống phân tán, bên cạnh việc chúng được phân bố trên
Trang 23Chương 2: Các thành phần quan trọng trong tối ưu truy vấn CSDL phân tán
nhiều trạm Tất cả các điều này đều không được nhìn thấy bởi người dùng, đây là một
sự mở rộng của khái niệm về sự độc lập dữ liệu, vốn là một khái niệm quan trọng trong CSDL tập trung Điều này dẫn đến yêu cầu tối ưu truy vấn để xác định cần lấy
dữ liệu từ những trạm nào, thực thi truy vấn ở đâu, theo thứ tự nào,… Một mô hình chi phí xem xét các giá trị chi phí nhập xuất, chi phí xử lý vi xử lý, chi phí truyền thông,… có thể giúp lựa chọn một phương án thực thi truy vấn tối ưu nhằm rút ngắn
thời gian trả về kể quả truy vấn cho người dùng
2.2 Kiến trúc hệ thống cơ sở dữ liệu phân tán:
Môi trường hệ thống CSDL phân tán bao gồm một tập (có thể rỗng) các trạm
phát sinh truy vấn và một tập không rỗng các trạm chứa dữ liệu Trong đó, trạm phát
ra truy vấn thì không chứa dữ liệu Bên cạnh đó, cần có một hệ thống mạng cung cấp khả năng truy cập đến dữ liệu cũng như truyền thông giữa các trạm
Hình 2.1: Môi trường hệ thống CSDL phân tán [20]
Có một số mô hình kiến trúc có thể được sử dụng cho việc xây dựng một hệ quản trị CSDL phân tán, bao gồm mô hình khách-chủ [25], nơi mà trạm phát ra truy vấn đóng vai trò là máy khách trong khi trạm chứa dữ liệu đóng vai trò máy chủ; và
mô hình ngang hàng nơi mà không có sự phân biệt giữa máy khách và máy chủ
Hệ thống CSDL phân tán truyền thống thường sử dụng mô hình kiến trúc
khách-chủ, trong đó máy khách và máy chủ có một sự tách biệt rõ ràng về nhiệm vụ Các
máy chủ cung cấp khả năng truy cập đến dữ liệu cục bộ được lưu tại trạm đó cho các
Trang 24Chương 2: Các thành phần quan trọng trong tối ưu truy vấn CSDL phân tán
máy khách Các máy khách cung cấp các ứng dụng và giao diện để người dùng có thể tương tác và dữ liệu được lưu trữ trong hệ thống Trong kiến trúc này máy chủ thực hiện hầu hết các công việc quản lý dữ liệu Điều này có nghĩa rằng tất cả các quy trình tối ưu và thực thi truy vấn, quản lý giao dịch và quản lý lưu trữ đều được thực hiện ở máy chủ Trong khi đó, ngoài ứng dụng và giao diện người dùng, máy khách cần có các mô-đun nhận nhiệm vụ quản lý, sắp xếp các dữ liệu được trả về theo yêu cầu của người dùng
Hình 2.2: Mô hình kiến trúc client-server [25]
Đối với mô hình ngang hàng, không có sự phân biệt giữa máy khách và máy chủ, mỗi trạm trong hệ thống có thể thực hiện cùng một chức năng Trong trường hợp này, dữ liệu được lưu trữ tại tất cả các trạm và có thể xảy ra trường hợp một trạm nhận được truy vấn liên quan đến dữ liệu mà không được lưu cục bộ tại trạm đó Trong trường hợp này, trạm nhận được truy vấn có thể yêu cầu được truy cập đến dữ liệu được lưu ở các trạm khác và sẽ hợp tác với các trạm thích hợp cho đến khi truy vấn được hoàn thành
Trang 25Chương 2: Các thành phần quan trọng trong tối ưu truy vấn CSDL phân tán
2.3 Xử lý truy vấn trong cơ sở dữ liệu phân tán:
Để xử lý truy vấn CSDL phân tán, ngoài chi phí nhập/xuất dựa vào số lượng truy cập đĩa cứng (đọc/ghi), hệ thống CSDL phân tán thêm vào hệ thống CSDL tập trung một số chi phí xử lý truy vấn do có sự bổ sung thiết kế về phần cứng lẫn phần mềm Chi phí này là chi phí truyền dữ liệu trên mạng, có thể là dữ liệu của các quan
hệ được lưu tại các trạm, các kết quả trung gian, hoặc kết quả cuối cùng được truyền
về trạm ban đầu mà nhận được yêu cầu truy vấn Do đó, các nhà thiết kế CSDL quan tâm đến việc tối ưu truy vấn, với mục tiêu là tối thiểu hóa chi phí truyền dữ liệu trên mạng Đối với các truy vấn kết, việc xử lý truy vấn trong môi trường phân tán cần xem xét các vấn đề quan trọng sau:
Chi phí truyền thông
Nếu quan hệ được nhân bản ở nhiều trạm, cần xác định sẽ lấy dữ liệu của quan hệ được lưu ở trạm nào
Kích thước lượng dữ liệu được truyền tải giữa các trạm
Tốc độ nhập/xuất tương đối tại mỗi trạm
Tốc độ truyền tải tương đối một đơn vị dữ liệu giữa các trạm
Trong hệ thống CSDL tập trung, mỗi truy vấn thường có nhiều cách để thực thi, điều này cũng tương tự trong hệ thống phân tán Sẽ có nhiều phương án thực thi cho cùng một truy vấn do dữ liệu có thể được lưu ở nhiều trạm khác nhau, tài nguyên hệ thống và thời gian phản hồi của các phương án này cũng sẽ khác nhau Tối ưu truy vấn CSDL phân tán giúp tìm ra một phương án thực thi có chi phí nhỏ nhất, trong đó, chi phí phải bao gồm chi phí truyền thông, bên cạnh chi phí nhập/xuất, chi phí vi xử
lý, nhằm giúp giảm thời gian thực thi, trả lại kết quả truy vấn cho người dùng trong thời gian nhanh nhất có thể Ở đây, hai đại lượng thời gian cần được xem xét đó là: tổng thời gian và thời gian phản hồi Tổng thời gian là tổng các khoảng thời gian tốn hao bởi mỗi vi xử lý, cho dù chúng có thể xảy ra đồng thời Thời gian phản hồi là khoảng thời gian từ khi bắt đầu cho đến khi truy vấn được hoàn thành Một trong hai đại lượng thời gian này có thể được chọn là tiêu chí để đánh giá các phương án thực thi truy vấn
Trang 26Chương 2: Các thành phần quan trọng trong tối ưu truy vấn CSDL phân tán
Trong hệ thống phân tán, chi phí truyền thông được phát sinh khi có sự trao đổi
dữ liệu giữa các trạm Do đó, chi phí truyền thông phụ thuộc vào một số yếu tố như kích thước lượng dữ liệu được truyền tải giữa các trạm, việc lựa chọn các trạm thích hợp để lấy dữ liệu trong trường hợp quan hệ được phân mảnh hoặc nhân bản cũng như lựa chọn trạm để thực thi truy vấn và dữ liệu các thông điệp dùng cho việc thiết lập kết nối giữa các trạm Trong trường hợp hệ thống phân tán sử dụng mạng diện rộng, chi phí truyền thông là yếu tố chiếm ưu thế và việc tối ưu chi phí vi xử lý và chi phí nhập/xuất có thể được bỏ qua Đối với trường hợp mạng cục bộ, việc tối ưu các chi phí xử lý cục bộ (chi phí vi xử lý và chi phí nhập/xuất) trở nên có tầm quan trọng lớn hơn
2.4 Tối ưu truy vấn cơ sở dữ liệu phân tán:
2.4.1 Không gian tìm kiếm:
Tối ưu truy vấn là một quy trình mà hệ tối ưu sử dụng một chiếc lược tìm kiếm kết hợp cùng với một mô hình chi phí để tìm ra một phương án thực thi truy vấn tối
ưu, mô tả cách thức mà truy vấn sẽ được thực thi để trả về kết quả cho người dùng Quá trình tìm kiếm phương án tối ưu này được thực hiện trên một tập hợp được gọi
là không gian tìm kiếm
Hình 2.3: Quy trình tối ưu truy vấn [20]
Không gian tìm kiếm là một tập hợp chứa tất cả các phương án mà có thể trả về cùng một kết quả truy vấn, nhưng khác nhau về thứ tự thực hiện các toán tử cũng như cách mà các toán tử được thực hiện, và do đó, hiệu quả thực thi truy vấn của các phương án này cũng khác nhau Mỗi phương án thực thi truy vấn có dạng một cây
Trang 27Chương 2: Các thành phần quan trọng trong tối ưu truy vấn CSDL phân tán
nhị phân (cây kết nối) bao gồm các quan hệ và các phép kết, mỗi nút lá đại diện cho
một quan hệ và mỗi nút trong đại diện cho một phép kết Với mỗi truy vấn được đưa
ra, một không gian tìm kiếm gồm tất cả các cây kết nối này có thể được tạo ra bằng các luật biến đổi, hoán vị thứ tự các quan hệ và các phép kết Với một truy vấn phức tạp gồm nhiều quan hệ, số lượng các cây kết nối được tạo ra là rất lớn Cụ thể, với
truy vấn gồm n quan hệ, số lượng các cây kết nối được tạo ra bằng cách áp dụng luật
giao hoán và kết hợp là 𝓞(𝑛!) [20] Việc liệt kê và đánh giá tất cả các phương án trong không gian tìm kiếm kích thước lớn để tìm ra phương án tốt nhất khiến cho việc tối ưu truy vấn tốn một khoảng thời gian, có thể được gọi là thời gian tối ưu, đôi khi thời gian tối ưu này còn lớn hơn cả thời gian cần cho việc thực thi truy vấn tối ưu tìm được Do đó, với các truy vấn phức tạp, hệ tối ưu thường sẽ tìm cách giảm kích thước không gian tìm kiếm bằng nhiều phương pháp khác nhau, ví dụ như sử dụng các giải thuật tìm kiếm heuristic
Hình 2.4: Cấu trúc của cây kết nối
Một phương pháp khác để có thể làm giảm kích thước không gian tìm kiếm là xem xét khía cạnh về cấu trúc của các cây kết nối, thường được phân thành hai dạng
là tuyến tính (a) và rậm rạp-bushy (b) (Hình 2.4) Cấu trúc tuyến tính là một cây nhị
phân mà mỗi nút cha (phép kết) phải có ít nhất một quan hệ là nút con Cấu trúc bushy
thì có thể có các nút cha không có nút con nào là quan hệ (cả hai nút con của nó đều
là kết quả trung gian của phép kết khác) Cấu trúc tuyến tính thường giúp tận dụng
các lợi thế về chỉ mục khi thực hiện phép kết, nếu chỉ xem xét các cây truy vấn có cấu trúc tuyến tính, có thể giảm kích thước không gian tìm kiếm về mức 𝓞(2𝑛) [20] Tuy nhiên, cần lưu ý rằng trong hệ thống CSDL phân tán, cấu trúc bushy lại thường
là phương án tốt hơn do nó có thể được xử lý song song
Trang 28Chương 2: Các thành phần quan trọng trong tối ưu truy vấn CSDL phân tán
2.4.2 Mô hình chi phí:
Để có thể tìm ra được phương án tối ưu trong quá trình tối ưu truy vấn, các thuật toán tìm kiếm của hệ tối ưu cần phải sử dụng một mô hình chi phí để có thể ước lượng chi phí của các của các phương án thực thi trong không gian tìm kiếm dựa vào các dữ liệu thống kê về CSDL, các công thức để có thể xác định kích thước các kết quả trung gian Thuật ngữ chi phí được dùng trong báo cáo này là tổng thời gian thực thi của một phương án thực thi truy vấn Một công thức tổng quát để xác định tổng thời gian được mô tả như sau:
𝑇ổ𝑛𝑔_𝑡ℎờ𝑖_𝑔𝑖𝑎𝑛 = 𝑇𝐶𝑃𝑈∗ #𝑖𝑛𝑠𝑡𝑠 + 𝑇𝐼/𝑂 ∗ #𝐼/𝑂𝑠 + 𝑇𝑀𝑆𝐺 ∗ #𝑚𝑠𝑔𝑠 + 𝑇𝑇𝑅 ∗
Hình 2.5: Công thức xác định tổng thời gian [18]
Trong công thức này, hai đại lượng đo lường thời gian xử lý cục bộ gồm T CPU
là thời gian của một chu kỳ vi xử lý và T I/O là thời gian thực hiện một lượt nhập/xuất trên đĩa Trong hai đại lượng này, thời gian dành cho việc nhập/xuất trên đĩa sẽ được tập trung chính, vì đây là yếu tố ảnh hưởng chủ yếu đến thời gian xử lý cục bộ Nguyên nhân là do các vi xử lý hiện tại có kiến trúc đa nhân, có tốc độ xử lý rất cao, trong khi thiết bị lưu trữ dữ liệu chủ yếu vẫn là ổ đĩa cứng vì sự đắt đỏ của ổ cứng thể rắn, hiện tượng nghẽn cổ chai khi truy xuất và xử lý dữ liệu nếu có xảy ra chủ yếu vẫn nằm ở thiết bị lưu trữ
Hai đại lượng đo lường thời gian dành cho truyền thông gồm T MSG là thời gian
từ lúc gửi và nhận một thông điệp mà nhằm hỗ trợ cho mục tiêu chính của truyền thông là truyền tải dữ liệu các quan hệ, các kết quả trung gian giữa các trạm, với giá
trị T TR là thời gian truyền tải một đơn vị dữ liệu (trong báo cáo này sử dụng đơn vị dữ
liệu là trang bộ nhớ đệm (page), kích thước 8KB) Trong CSDL phân tán, các truy
vấn phức tạp thường đòi hỏi một lượng lớn dữ liệu cần trao đổi giữa các trạm, kích thước dữ liệu dành cho việc gửi và nhận thông điệp thường nhỏ hơn rất nhiều so với kích thước dữ liệu thực tế được trao đổi giữa các trạm và hoàn toàn có thể bỏ qua được
Trang 29Chương 2: Các thành phần quan trọng trong tối ưu truy vấn CSDL phân tán
Trong báo cáo này, hai phương thức thực hiện phép kết trong xử lý cục bộ được
tập trung xem xét là Sort-merge-join và Hash-Join, bởi vì phương thức kết còn lại là
Nested-loop-join chỉ phù hợp đối với các quan hệ có số lượng bộ nhỏ vì độ phức tạp
cao của nó
Sort-merge-join bao gồm 2 bước: sắp xếp các bộ theo thứ tự thuộc tính kết và
trộn các bộ của 2 quan hệ có giá trị thuộc tính kết giống nhau Giả sử sort-merge-join
được sử dụng để thực hiện phép kết 𝑅 ⋈𝑎=𝑏 𝑆, với R có kích thước M page, S có kích thước N page Nếu R và S đã được sắp xếp ở thuộc tính chung tương ứng là a và b,
việc sắp xếp sẽ được bỏ qua Nếu không, hai quan hệ này sẽ được sắp xếp Số lần nhâp/xuất dành cho việc sắp xếp này sẽ là 𝑀𝑙𝑜𝑔𝑀 + 𝑁𝑙𝑜𝑔𝑁 Ở bước trộn, mỗi quan
hệ R và S sẽ được đọc các bộ theo từng cặp và so sánh với nhau, nếu chúng có giá trị
thuộc tính kết bằng nhau thì tạo ra kết quả, nếu không nó loại bộ có giá trị thuộc tính kết nhỏ hơn và đọc tới bộ tiếp theo của quan hệ đó và tiếp tục quá trình Với phương
thức kết này, hai quan hệ R và S sẽ được đọc từ đầu và cùng tiến về cuối song song với nhau Số lần nhâp/xuất dành cho việc quét R và S ở bước trộn này sẽ là 𝑀 + 𝑁 Như vậy, tổng số nhập/xuất khi thực hiện Sort-merge-join là:
Sort-merge-join thích hợp để thực hiện phép kết với 2 quan hệ có số lượng bộ
lớn và đã được sắp xếp theo thuộc tính kết
Ở phương thức kết còn lại, Hash-join cũng trải qua 2 bước: tạo bảng băm và dò
tìm Ở bước tạo bảng băm, một quan hệ sẽ được quét và các bộ trong quan hệ sẽ được
áp dụng hàm băm ở thuộc tính kết để tạo thành một bảng băm và ghi vào bộ nhớ Ở bước dò tìm, từng bộ của quan hệ còn lại cũng sẽ được áp dụng hàm băm để tạo thành giá trị băm và dùng giá trị băm này để dò tìm trong bảng băm được tạo trước đó, nếu
khớp thì sẽ tạo thành kết quả Chi phí của hash-join rất nhỏ nếu toàn bộ bảng băm
được lưu trong bộ nhớ, tuy nhiên sẽ cần một lượng bộ nhớ rất lớn, và chi phí này sẽ tăng lên nếu bảng băm được lưu phân mảnh trên đĩa cứng
Để làm giảm chi phí hash-join cũng như lượng bộ nhớ cần sử dụng, cách thực hiện hash-join thường được áp dụng là phân nhóm giá trị thuộc tính kết của cả hai
Trang 30Chương 2: Các thành phần quan trọng trong tối ưu truy vấn CSDL phân tán
quan hệ R và S bằng cách sử dụng hàm băm, tạm gọi là h 1 , tạo thành hai Bảng phân
nhóm và ghi ra đĩa Điều này giúp tìm ra các bộ trong một nhóm giá trị của R sẽ chỉ
tương ứng với các bộ trong một nhóm giá trị của S Giả sử tìm được k nhóm giá trị khớp nhau giữa R và S, khi đó việc thực hiện hash-join ban đầu sẽ trở thành thực hiện
k lần hash-join độc lập Mỗi hash-join độc lập này được thực hiện bằng cách đọc mỗi nhóm của R và áp dụng một hàm băm h2 cho các bộ trong nhóm và tạo thành bảng băm, tiếp theo sẽ đọc lần lượt các bộ trong nhóm tương ứng của S, áp dụng hàm băm h2 và so sánh với bảng băm, nếu khớp sẽ tạo thành kết quả
Ở bước phân nhóm, chi phí cho đọc và ghi hai quan hệ là 2(M+N), ở bước so khớp tiếp theo, mỗi quan hệ được đọc một lần với chi phí là (M+N) Vậy tổng chi phí
Hash-join phù hợp với các phép kết mà hai quan hệ có số lượng bộ lớn nhưng
không được sắp xếp theo thứ tự của thuộc tính kết
Một thành phần quan trọng nữa trong việc ước lượng chi phí của các phương án thực thi truy vấn đó là việc ước lượng kích thước của các kết quả trung gian, được tính dựa vào công thức:
2.4.3 Thuật toán tối ưu quy hoạch động:
2.4.3.1 Mô tả thuật toán:
Chiến lược tìm kiếm phổ biến nhất được sử dụng bởi các hệ tối ưu là quy hoạch động, là một phương pháp tìm kiếm có hệ thống Nó thực hiện bằng cách xây dựng các phương án thực thi truy vấn từ các quan hệ, kết thêm một quan hệ vào phương án
Trang 31Chương 2: Các thành phần quan trọng trong tối ưu truy vấn CSDL phân tán
tại mỗi bước cho đến khi đạt được các phương án có đầy đủ tất cả các quan hệ tham gia vào truy vấn Quy hoạch động xây dựng tất cả các phương án có thể có, ưu tiên xây dựng theo chiều rộng, và cuối cùng chọn ra một phương án tốt nhất
Đầu vào của thuật toán là một truy vấn kết q liên quan đến các quan hệ R1,R2,…,
Rn; Đầu ra của thuật toán là một phương án thực thi cho truy vấn q dưới dạng một
cây nhị phân
Thuật toán 1: Quy hoạch động cổ điển (Classic Dynamic Programming)
1: Đầu vào: {Truy vấn kết q liên quan đến n quan hệ R 1,
R 2 ,…,R n;}
2: Đầu ra: {Một phương án thực thi cho truy vấn q}
//khởi tạo các phương án thực thi truy vấn
Hình 2.6: Thuật toán tối ưu quy hoạch động cổ điển [27]
Thuật toán này hoạt động theo cách tiếp cận từ dưới lên như sau Đầu tiên, thuật
Trang 32Chương 2: Các thành phần quan trọng trong tối ưu truy vấn CSDL phân tán
án truy cập đến mỗi quan hệ trong truy vấn, mà được gọi là accessplans (dòng 3 đến dòng 6), với hai phương pháp thông dụng đó là quét bảng để đọc cả bảng và quét-
index để đọc một phần bảng sử dụng chỉ mục Từ dòng 7 đến dòng 16, thuật toán liệt
kê và xem xét tất cả các phương án có thể có để kết các quan hệ Ở bước đầu tiên, nó
liệt kê và xem xét tất cả các phương án có 2 quan hệ bằng cách gọi hàm joinPlans để kết các quan hệ trong accessPlans mà có mối liên hệ với nhau Sau đó, nó tiếp tục tạo
tất cả các phương án có 3 quan hệ bằng cách cố gắng kết các phương án có 2 quan hệ
vừa được tạo với một trong số các quan hệ trong accessPlans Để tạo phương án có
4 quan hệ, thuật toán có thể kết 2 phương án có 2 quan hệ lại với nhau, hoặc kết 1
phương án có 3 quan hệ với 1 quan hệ trong accessPlans Tương tự như vậy, thuật
toán quy hoạch động có thể tạo ra các phương án có 5 quan hệ, 6 quan hệ, …, và
cuối cùng là phương án có n quan hệ Tất cả các phương án đều được so sánh, và cuối cùng, thuật toán sẽ chọn ra một phương án thực thi truy vấn gồm n quan hệ có chi phí
nhỏ nhất
Một đặc điểm rất hay ở thuật toán quy hoạch động đó là nó sẽ loại bỏ các phương
án con không tốt ở mỗi bước xây dựng phương án, việc này được thực hiện bởi hàm
prunePlans Giả sử khi thuật toán liệt kê và xem xét 2 phương án có 2 quan hệ,
phương án 𝑅1 ⋈ 𝑅2 có chi phí thấp hơn so với 𝑅2 ⋈ 𝑅1, trong khi cả hai phương án trả về cùng một kết quả như nhau, việc sử dụng phương án 𝑅1 ⋈ 𝑅2 để xây dựng các
phương án lớn hơn có chứa {R 1 , R 2 } vẫn sẽ có chi phí thấp hơn so với khi sử dụng
𝑅2 ⋈ 𝑅1 Do đó, phương án 𝑅2 ⋈ 𝑅1 sẽ được loại bỏ, và phương án 𝑅1 ⋈ 𝑅2 được
giữ lại như là optPlan({R 1 , R 2 }), và sẽ được sử dụng để xây dựng các phương án có 3
hoặc 4 quan hệ có liên quan đến {R 1 , R 2 }
Thuật toán tối ưu quy hoạch động nêu trên khi áp dụng cho CSDL phân tán sẽ được bổ sung, chỉnh sửa một số điểm như sau:
Chi phí truyền thông phải được tính vào chi phí của phương án thực thi truy vấn, điều này là rất quan trọng, vì chi phí truyền thông thường chiếm một tỷ lệ lớn trong môi trường phân tán
Nếu một quan hệ nào đó trong truy vấn được nhân bản ở nhiều trạm trong hệ thống phân tán, khi xây dựng phương án thực thi truy vấn thì phải so sánh chi phí khi
Trang 33Chương 2: Các thành phần quan trọng trong tối ưu truy vấn CSDL phân tán
lấy bản sao của quan hệ ở từng trạm mà quan hệ được nhân bản để thêm vào phương
án, và chọn trạm nào có chi phí nhỏ nhất
Khi hàm joinPlans (dòng 11) tạo ra một phương án, phải xem xét vị trí của
trạm mà phép kết sẽ được thực hiện, so sánh chi phí giữa các trạm và chọn ra trạm có chi phí nhỏ nhất Tuy nhiên, có thể xem xét áp dụng việc ưu tiên trạm mà sẽ thực hiện phép kết, chẳng hạn như trạm nhận được yêu cầu truy vấn ban đầu (cũng là trạm mà kết quả truy vấn được trả về) có thể được ưu tiên để thực hiện phép kết, để có thể tạo
ra một phương án toàn cục có chi phí nhỏ hơn, tránh một số trường hợp mà dữ liệu được gửi từ trạm nhận truy vấn sang các trạm khác để xử lý, sau đó một phần hoặc
toàn bộ dữ liệu này (nằm trong các kết quả trung gian hoặc kết quả cuối cùng của
truy vấn) lại được gửi lại trạm nhận truy vấn để trả về kết quả cho người dùng, làm
tăng chi phí truyền thông
Nếu phép kết cuối cùng của phương án trả về không được thực hiện ở trạm
nhận truy vấn, thì phải bổ sung thêm một số thao tác để gửi kết quả truy vấn về trạm
nhận truy vấn Điều này có thể làm gia tăng chi phí của phương án nếu kết quả truy vấn có kích thước lớn và có thể được hạn chế xảy ra nếu xem xét việc ưu tiên trạm
mà phép kết được thực hiện vừa nêu ngay trên
2.4.3.2 Độ phức tạp thuật toán tối ưu quy hoạch động:
Độ phức tạp của thuật toán quy hoạch động được chứng minh trong [11] là ở mức 𝓞(3𝑛), với n là số lượng quan hệ trong truy vấn Do đó, khi mở rộng thuật toán
này để áp dụng cho môi trường CSDL phân tán thì độ phức tạp của thuật toán sẽ tăng lên, do có thể có sự tồn tại việc các quan hệ được nhân bản tại một số trạm
Trong môi trường CSDL tập trung, mỗi optPlan(O) bất kỳ chỉ bao gồm một phương án thực thi truy vấn duy nhất và hàm joinPlans(optPlan(O), optPlan(S–O))
ở dòng lệnh thứ 11 của thuật toán quy hoạch động chỉ tạo ra một phương án duy nhất Tuy nhiên, trong môi trường CSDL phân tán, trường hợp xấu nhất, giả sử rằng
không có phương án nào được loại bỏ trong quá trình thực hiện hàm prunePlans, thì ứng với mỗi cấu trúc phương án thực thi trong optPlan(O) bất kỳ có thể gồm tối đa s biến thể khác nhau, tương ứng với s trạm mà ở đó, kết quả của phương án có thể được
Trang 34Chương 2: Các thành phần quan trọng trong tối ưu truy vấn CSDL phân tán
tạo ra, tức là trạm mà phép kết sau cùng của phương án được thực hiện Do đó, hàm
joinPlans(optPlan(O), optPlan(S–O)) trong môi trường phân tán có thể tạo ra tối đa
s 3 phương án, ứng với s biến thể của optPlan(O), s biến thể của optPlan(S–O), s trạm
mà phương án có thể được thực thi tại đó Như vây, trong môi trường CSDL phân
tán, thuật toán quy hoạch động sẽ phải xem xét số lượng phương án nhiều hơn s 3 số lượng phương án trong môi trường CSDL tập trung Do đó, độ phức tạp của thuật toán quy hoạch trong môi trường CSDL phân tán là: 𝓞(3𝑛 ∗ 𝑠3), với s là số trạm trong hệ thống phân tán
Trang 35CHƯƠNG 3: ỨNG DỤNG THUẬT TOÁN IDP VỚI SỰ CẢI TIẾN CÁCH TIẾP CẬN
3.1 Giới thiệu:
Như đã trình bày trong phần trước, hạn chế lớn nhất của thuật toán tìm kiếm
đầy đủ, cụ thể trong báo cáo này là quy hoạch động, là khi giá trị n đại diện cho số
lượng các quan hệ trong truy vấn kết đủ lớn, sẽ có sự gia tăng nhanh chóng kích thước không gian tìm kiếm của thuật toán quy hoạch động, thuật toán cần một lượng rất lớn
bộ nhớ để lưu trữ tất cả các phương án thực thi truy vấn, thời gian cần để hoàn thành thuật toán cũng rất lớn, do phải liệt kê và xem xét tất cả các phương án đó để tìm ra một phương án có chi phí nhỏ nhất Trong thử nghiệm thực tế được thực hiện trong phần mô phỏng thuật toán, với một truy vấn kết liên quan đến 16 quan hệ, thuật toán quy hoạch động cần đến cả giờ để tìm ra phương án thực thi truy vấn có chi phí nhỏ nhất Thời gian này còn lớn hơn nhiều so với thời gian để thực thi một phương án bất
kỳ trong số tất cả các phương án thực thi truy vấn thuộc không gian tìm kiếm của thuật toán Trong trường hợp này, thuật toán quy hoạch động không đáp ứng được yêu cầu tối ưu thời gian thực thi truy vấn
Bên cạnh đó, với một truy vấn được đưa ra, thường có nhiều phương án khả thi
có thể giúp mang lại kết quả Thay vì tốn rất nhiều chi phí để liệt kê, xem xét tất cả các phương án trong không gian tìm kiếm và tìm ra phương án tốt nhất bằng cách sử dụng thuật toán quy hoạch động, chúng ta có thể sử dụng một vài phương pháp tìm kiếm heuristic để làm giảm kích thước không gian tìm kiếm, và nhanh chóng tìm ra một phương án thực thi truy vấn có chi phí ở mức chấp nhận được, mà vẫn giúp thời gian phản hồi kết quả truy vấn lại cho người dùng với thời gian nhanh hơn
Do đó, thuật toán IDP được đề xuất để giải quyết các hạn chế về sự bùng nổ
kích thước không gian tìm kiếm và thời gian trả về kết quả của thuật toán quy hoạch động Ý tưởng chính của thuật toán IDP là lặp lại nhiều lần thuật toán quy hoạch động trong quá trình tìm kiếm phương án thực thi truy vấn khả thi có chi phí thấp, và có thể được xem như một sự kết hợp của của thuật toán quy hoạch động và thuật toán Heuristic tham lam.Có nhiều biến thể của thuật toánIDP, tuy nhiên trong khuôn khổ
Trang 36Chương 3: Ứng dụng thuật toán IDP với sự cải tiến cách tiếp cận
của luận văn này, biến thể Standard-Best-Plan của thuật toán IDP với một sự cải tiến
về cách tiếp cận sẽ được áp dụng để áp dụng vào luận văn, với mục tiêu chính là tối
ưu truy vấn kết trong môi trường CSDL phân tán
3.2 Thuật toán tối ưu IDP và cách tiếp cận cải tiến:
Về cơ bản, thuật toán IDP được đề xuất trong [12] sau đây hoạt động gần giống như thuật toán quy hoạch động, tuy nhiên có điểm khác biệt quan trọng của thuật toán IDP so với thuật toán quy hoạch động là giảm kích thước không gian tìm kiếm, giảm lượng bộ nhớ cần cho thuật toán, và có thể hạn chế thời gian dùng cho việc tối ưu truy vấn
3.2.1 Mô tả thuật toán tối ưu IDP:
Để hiểu cách thức mà thuật toán IDP hoạt động, hãy xem xét trong trường hợp
mà người dùng muốn tối ưu một truy vấn kết q liên quan đến n quan hệ chứa trong tập R={R 1, R 2 ,…, R n}, giả sử rằng: người dùng không muốn tốn quá nhiều thời gian cho việc thực hiện tối ưu; hoặc bộ nhớ của máy tính chỉ đủ để lưu tất cả các phương
án thực thi truy vấn có tối đa k quan hệ, với k < n, có thể liệt kê như: các phương án
có 2 quan hệ, các phương án có 3 quan hệ,…, các phương án có k quan hệ Trong
trường hợp này, nếu sử dụng tối ưu truy vấn dựa trên thuật toán quy hoạch động, thì
khi thuật toán xem xét đến phương án thực thi truy vấn có k quan hệ, máy tính sẽ không đủ bộ nhớ để tiếp tục tạo và xem xét các phương án có k + 1 quan hệ, kết quả tối ưu truy vấn là một phương án thực thi có n quan hệ sẽ không được trả về Tuy
nhiên, thuật toán tối ưu truy vấn IDP có thể giúp tránh được trường hợp này
Trang 37Chương 3: Ứng dụng thuật toán IDP với sự cải tiến cách tiếp cận
Thuật toán 2: Iterative Dynamic Programming
1: Đầu vào: {Truy vấn kết q liên quan đến n quan hệ R 1,
19: Tìm P, V với P ∈ optPlan(V), V ⊆ toDo, |V| = k mà
g(P) = min(g(P’) | P’ ∈ optPlan(W), W ⊆ toDo,
|W|=k)
20: Tạo một biến mới: 𝓣
21: optPlan({𝓣}) = {P}
Trang 38Chương 3: Ứng dụng thuật toán IDP với sự cải tiến cách tiếp cận
Hình 3.1: Thuật toán tối ưu IDP [12]
Đầu vào của thuật toán bao gồm:
Truy vấn kết q liên quan đến các quan hệ R 1 ,R 2 ,…, R n;
Tham số k đại diện cho kích thước của phương án thực thi truy vấn con Đầu ra của thuật toán là một phương án thực thi cho truy vấn q dưới dạng một
cây kết nối
Ở các bước đầu tiên, thuật toán IDP hoạt động tương tự như thuật toán quy
hoạch động, sẽ tạo ra accessPlans, tạo và xem xét các phương án có 2 quan hệ, các phương án có 3 quan hệ, …, các phương án có k quan hệ Ở bước tiếp theo, thay vì tiếp tục tạo và xem xét các phương án có k + 1 quan hệ như thuật toán quy hoạch động, thuật toán IDP không tạo ra các phương án có k + 1 quan hệ này, mà sẽ so sánh tất cả các phương án có k quan hệ với nhau, sau đó chọn ra một phương án P có tổng thời gian thực thi ước lượng nhỏ nhất và tập hợp V chứa tất cả các quan hệ đã xây dựng nên phương án P
Tiếp theo, thuật toán tạo ra một biến tạm 𝓣 đại diện cho tất cả các quan hệ được
chứa trong V, phương án thực thi với V sẽ được sao chép thành phương án thực thi
với 𝓣, xóa các quan hệ chứa trong V ra khỏi tập các quan hệ toDo dùng để xây dựng
phương án và thêm 𝓣 vào toDo, xem 𝓣 như một quan hệ mới
Lúc này, đặc biệt không chỉ các phương án chứa các các quan hệ thuộc tập con
𝑂 ⊆ 𝑉 có thể được loại bỏ như ở dòng lệnh thứ 23 trong thuật toán nêu trên (Duyệt
tất cả O ⊆ V do delete(optPlan(O))), mà các phương án chỉ cần chứa bất kỳ một hoặc
nhiều quan hệ nào thuộc V đều có thể được loại bỏ để giảm dung lượng bộ nhớ được
Trang 39Chương 3: Ứng dụng thuật toán IDP với sự cải tiến cách tiếp cận
sử dụng cho thuật toán, vì các phương án này không còn được dùng đến trong quá trình tạo và xem xét các phương án ở các bước tiếp theo
Ví dụ, với R = {R 1 , R 2 , , R 6 }, k = 3, giả sử T 1 đại diện cho {R 1 , R 2 , R 3} trong phương án thực thi được chọn ở bước đầu tiên, thì ở lần lặp quy hoạch động tiếp theo,
chỉ có các phương án liên quan đến các quan hệ thuộc tập toDo={T 1 , R 4 , R 5 , R 6} được
xem xét, các phương án chỉ cần chứa bất kỳ một quan hệ trong số R 1 , R 2 , R 3 như
R 1 ⋈R 2 , R 2 ⋈R 3 , R 3 ⋈R 4 , R 1 ⋈(R 2 ⋈ R 3 ), R 3 ⋈(R 4 ⋈ R 5 ), R 3 ⋈(R 5 ⋈ R 6), …, đều không cần thiết được lưu trong bộ nhớ nữa và cần được loại bỏ, thay vì chỉ xóa các phương
án chứa các quan hệ là tập con của tập {R 1 , R 2 , R 3 } như R 1 , R 2 , R 3 , R 1 ⋈ R 2 , R 2 ⋈ R 3,
R 1 ⋈(R 2 ⋈ R 3), …
Do đó, để loại bỏ tất cả các phương án không cần thiết, báo cáo này đề xuất
thay đổi dòng lệnh thứ 23 trong thuật toán IDP là
Duyệt tất cả O ⊆ V do delete(optPlan(O))
trở thành
Ở ví dụ trên với n=6, k=3, giả sử truy vấn có dạng hình clique, trong bước chọn phương án có k quan hệ lần lặp đầu tên, việc thay đổi này sẽ giúp xóa đi 33 phương
án không cần thiết thay vì 15 phương án
Tiếp tục quay lại quá trình chạy thuật toán, quy trình tạo các phương án có 2
quan hệ, …, các phương án có k quan hệ như trên sẽ được lặp lại tương tự cho đến khi kích thước của tập toDo bằng 1, và phương án thực thi cuối cùng sẽ được trả về
Thuật toán IDP được xem là sự kết hợp của thuật toán quy hoạch động và
Heuristic tham lam, với k < n thuật toán IDP cần từ 2 lần lặp quy hoạch động trở lên
để tìm ra kết quả cuối cùng, k càng lớn thì kết quả trả thường sẽ tốt hơn, vì ở mỗi
bước lặp, số lượng các phương án được tạo và xem xét sẽ nhiều hơn, việc xác định một phương án tối ưu được chọn để chuyển sang lần lặp tiếp theo được xem xét kỹ lưỡng hơn, giảm bớt rủi ro chọn phải một con đường sai lầm dẫn đến một kết quả cuối cùng không tốt, và tất nhiên đi kèm với kết quả tốt hơn, thời gian cần để thuật
Trang 40Chương 3: Ứng dụng thuật toán IDP với sự cải tiến cách tiếp cận
toán trả về kết quả cũng sẽ lớn hơn Khi k ≥ n, thuật toán IDP chỉ cần 1 lần lặp, và sẽ
hoạt động tương tự thuật toán quy hoạch động
3.2.2 Cách tiếp cận đề xuất cải tiến thuật toán IDP:
Thuật toán IDP đã kết hợp thành công thuật toán tối ưu quy hoạch động và heuristic tham lam, có thể tìm ra phương án thực thi rất tốt đối với các truy vấn đơn giản và cũng có thể thực hiện tối ưu các truy vấn phức tạp với nhiều quan hệ trong thời gian ngắn, với chất lượng phương án thường tỉ lệ thuận với thời gian tối ưu Khi
số lượng các quan hệ trong mỗi phương án con (k) nhỏ, chi phí của phương án trả về thường có giá trị lớn, và khi k tăng lên, thuật toán thường trả về kết quả truy vấn là
một phương án có chi phí thấp hơn, nhưng sẽ mất nhiều thời gian hơn cho việc tối
ưu Thuật toán IDP sử dụng cách tiếp cận tham lam, ở mỗi bước thực hiện tối ưu, các phương án con tốt nhất được chọn một cách cục bộ dựa vào chi phí của phương án con tại thời điểm hiện tại mà không có sự ước lượng, đánh giá về kết quả toàn cục khi chọn phương án con này Điều này làm cho khả năng lựa chọn nhầm phương án con dẫn đến kết quả sau cùng không tốt là hiện hữu, chất lượng của các phương án
có độ chênh lệch với nhau lớn ứng với mỗi giá trị k, làm cho việc xác định giá trị k
để cân bằng giữa hai giá trị thời gian tối ưu và tổng thời gian của phương án để trả về kết quả truy vấn cho người dùng trong thời gian ngắn là rất khó khăn, vì các truy vấn
có thể thay đổi liên tục tùy theo nhu cầu của người dùng, đặc biệt với các truy vấn có
số lượng quan hệ lớn
Do đó, để thuật toán IDP có sự đánh giá về kết quả toàn cục ở mỗi bước lặp lại quy hoạch động, báo cáo luận văn này đề xuất một cách tiếp cận mới thay thế cho cách tiếp cận tham lam, đó là kết hợp cách tiếp cận heuristic được sử dụng trong thuật toán A* vào thuật toán IDP, và gọi là thuật toán IDP+ Tại mỗi bước lặp lại quy hoạch động, cách tiếp cận heuristic này không chỉ đánh giá chi phí của phương án con đang được xem xét, mà còn sử dụng một hàm đánh giá heuristic để ước lượng chi phí cần thiết để kết quả truy vấn có thể trả về cho người dùng, thông qua công thức:
với g(P) là chi phí của phương án con P đang được xem xét, h(P) là hàm đánh giá heuristic về chi phí nhỏ nhất cần thiết để trả về kết quả truy vấn nếu P được chọn