Cơ sở dữ liệu quan hệ
Cơ sở dữ liệu (CSDL) là tập hợp dữ liệu có cấu trúc, phản ánh các hiện tượng thực tế mà chúng ta muốn mô hình hóa Trong số các loại CSDL, CSDL quan hệ được tổ chức theo dạng bảng, giúp quản lý và truy xuất dữ liệu một cách hiệu quả.
Về hình thức quan hệ (relation) là một tập con của tích Descartes của một hoặc nhiều miền trị (domain) xác định trên tập các thuộc tính (attributes)
Một quan hệ r xác định trên tập thuộc tính Ω ={A 1 ,A 2 , A n }, khi đó :
Mỗi hàng của quan hệ được gọi là một bộ (tuple), như vậy quan hệ r là một tập hợp các n-bộ có dạng:
Trong đó Dom(A i ) là miền giá trị của thuộc tính A i
Số thuộc tính của quan hệ gọi là bậc của quan hệ
Quan hệ r có thể bị thay đổi theo thời gian do việc thực hiện các phép toán cập nhật trên r (thêm vào, loại bỏ, sửa đổi các bộ)
Lược đồ quan hệ (relation scheme) Một lược đồ quan hệ R là một cặp có thứ tự
R là một quan hệ trong cơ sở dữ liệu, với Ω là tập hữu hạn các thuộc tính và F là tập hợp các điều kiện giữa các thuộc tính, được gọi là tập các ràng buộc toàn vẹn.
Một ràng buộc trên tập các thuộc tính {A 1 ,A 2 , ,A n }là một tính chất trên tập tất cả các quan hệ xác định trên tập thuộc tính này
Khi đề cập đến lược đồ quan hệ, chúng ta chỉ tập trung vào việc mô tả cấu trúc của một quan hệ mà không quan tâm đến bộ cụ thể.
Với R là tên của quan hệ, A 1 ,A 2 , ,A n là danh sách tên các thuộc tính
Lược đồ quan hệ R mô tả cấu trúc và ràng buộc toàn vẹn của nhiều quan hệ theo thời gian Mỗi quan hệ này được gọi là một thể hiện của lược đồ R Tại mỗi thời điểm, lược đồ quan hệ sẽ có một thể hiện quan hệ cụ thể, phản ánh cấu trúc của mối quan hệ đó.
Khóa trong lược đồ quan hệ là tập con nhỏ nhất của các thuộc tính không rỗng, giúp xác định duy nhất mỗi bộ trong quan hệ Các thuộc tính có mặt trong ít nhất một khóa được gọi là thuộc tính khóa Tập hợp chứa khóa được gọi là siêu khóa (superkey).
Trong lược đồ quan hệ R=, một tập con K ⊆ Ω được gọi là khóa của lược đồ quan hệ R nếu nó đáp ứng hai điều kiện chính Thứ nhất, đối với bất kỳ hai bộ khác nhau t1 và t2 thuộc r, trong đó r là một thể hiện của R, luôn có sự khác biệt giữa chúng.
1 K t K t ≠ ii Không tồn tại K ' ⊂ K thỏa mãn điều kiện trên
Tập K sẽ là siêu khóa nếu chỉ thỏa mãn điều kiện (i).
Các dạng chuẩn
Chuẩn hóa là quá trình từng bước thay thế một tập quan hệ phức tạp bằng các tập quan hệ đơn giản và chuẩn tắc hơn, nhằm loại bỏ những bất thường trong quan hệ Quan hệ được chuẩn hóa đảm bảo rằng mỗi miền của thuộc tính chỉ chứa các giá trị nguyên tố, tức là không thể phân nhỏ hơn nữa, và do đó, mỗi giá trị trong quan hệ cũng là nguyên tố.
Theo lý thuyết ban đầu Codd đưa ra có 3 dạng chuẩn của quan hệ:
Boyce và Codd đã phát triển một phiên bản sửa đổi của dạng chuẩn 3NF, được biết đến là dạng chuẩn Boyce-Codd (BCNF) Sau đó, các dạng chuẩn 4NF và 5NF cũng được giới thiệu bởi Fagin vào năm 1977 và 1979.
Chuẩn hóa yêu cầu đảm bảo không mất mát thông tin khi thay thế một quan hệ bằng các quan hệ khác Nếu có thể kết nối các quan hệ kết quả để phục hồi quan hệ ban đầu, quá trình phân rã đó được gọi là phân rã không mất thông tin.
Một yêu cầu quan trọng trong quá trình chuẩn hóa cơ sở dữ liệu là bảo toàn phụ thuộc (dependency preservation), nghĩa là phân rã được xem là bảo toàn phụ thuộc nếu hợp của các phụ thuộc hàm trong các quan hệ phân rã tương đương với bao đóng (closure) của các phụ thuộc hàm trong quan hệ ban đầu Đối với định nghĩa dạng chuẩn 1NF, một lược đồ quan hệ R được coi là ở dạng chuẩn 1NF nếu tất cả các miền trong R chỉ chứa các giá trị nguyên tố.
Lược đồ quan hệ R được coi là ở dạng chuẩn 2NF nếu nó thỏa mãn điều kiện của chuẩn 1NF và mọi thuộc tính không khóa của R phụ thuộc hàm đầy đủ vào mỗi khóa Để đạt được chuẩn 3NF, lược đồ R cũng cần ở dạng chuẩn 1NF và mọi thuộc tính không khóa phải không phụ thuộc hàm bắc cầu vào bất kỳ khóa nào Chuẩn BCNF yêu cầu rằng nếu có phụ thuộc hàm X → A trên R và A không thuộc X, thì X phải là một siêu khóa của R Phụ thuộc hàm đầy đủ là khái niệm quan trọng trong việc xác định mối quan hệ giữa các thuộc tính trong lược đồ quan hệ R.
Trong lý thuyết thuộc tính, hai tập thuộc tính khác nhau được ký hiệu là X và Y, với X thuộc tập hợp Ω và Y cũng thuộc tập hợp Ω Y được coi là phụ thuộc hàm đầy đủ vào X nếu Y phụ thuộc hàm vào X nhưng không phụ thuộc vào bất kỳ tập con thực sự nào của X.
Ngôn ngữ dữ liệu quan hệ [4]
Ngôn ngữ thao tác dữ liệu (DML) cho mô hình quan hệ, hay còn gọi là ngôn ngữ truy vấn, được chia thành hai nhóm chính: ngôn ngữ dựa trên đại số quan hệ và ngôn ngữ dựa trên phép tính quan hệ Sự khác biệt giữa chúng nằm ở cách người dùng xây dựng câu truy vấn; đại số quan hệ là thủ tục, yêu cầu người dùng xác định các toán tử để đạt được kết quả, trong khi phép tính quan hệ là phi thủ tục, chỉ cần người dùng chỉ ra các mối liên hệ cần đảm bảo Cả hai đều do Codd phát triển và có khả năng diễn tả tương đương Đại số quan hệ thường được ưa chuộng trong nghiên cứu cơ sở dữ liệu phân tán do tính trực tiếp và mức độ thấp hơn, mặc dù phép tính quan hệ có thể được chuyển đổi thành đại số quan hệ Đại số quan hệ đóng vai trò quan trọng trong tối ưu hóa truy vấn, với một tập hợp các phép toán cho phép thực hiện việc truy vấn và cập nhật cơ sở dữ liệu quan hệ.
Có năm phép toán cơ bản trong lý thuyết tập hợp, bao gồm phép chọn (selection), chiếu (projection), hợp (union), trừ (set difference) và tích Descartes Trong số này, phép chọn và chiếu là các phép toán một ngôi, trong khi hợp, trừ và tích Descartes thuộc loại hai ngôi Ngoài ra, còn có năm phép toán bổ sung khác như giao (intersection), nối θ (θ-join), nối tự nhiên (natural join), nối nửa (semi join) và phép chia (division), trong đó toán hạng của các phép toán hai ngôi phải khả hợp.
Hai quan hệ được coi là khả hợp khi chúng có cùng bậc, nghĩa là số lượng thuộc tính của chúng bằng nhau Hơn nữa, để hai quan hệ này có thể hợp nhất, miền xác định của thuộc tính thứ i của quan hệ này phải trùng khớp với miền của thuộc tính thứ i của quan hệ kia.
Phép chọn trên quan hệ R với vị từ p là tập tất cả các bộ t của R thỏa p
Phép chiếu của quan hệ R trên tập thuộc tính X là một quan hệ được tạo ra bằng cách loại bỏ các thuộc tính không thuộc tập X trong quan hệ R Do đó, bậc của quan hệ kết quả sẽ luôn nhỏ hơn bậc của quan hệ gốc.
Phép hợp Hợp của hai quan hệ R và S, là tập tất cả các bộ thuộc R hoặc thuộc S hoặc thuộc cả hai Cần chú ý rằng R và S phải khả hợp
Phép trừ Hiệu của hai quan hệ R và S là tập tất cả các bộ của R không thuộc S
Tích Descartes của hai quan hệ R bậc n và S bậc m tạo ra tập hợp các bộ (n+m)-thành phần, trong đó mỗi bộ bao gồm n thành phần từ R và m thành phần từ S.
R {t|t có dạng (a 1 ,a 2 , a n ,b 1 ,b 2 , b m ) trong đó (a 1 ,a 2 , a n )∈R và
Phép giao giữa hai quan hệ R và S là tập hợp tất cả các bộ t thuộc cả hai quan hệ này Phép giao có thể được biểu thị thông qua các toán tử cơ bản.
Nối-θ là một phép nối được phát triển từ tích Descartes, với nhiều kiểu nối khác nhau Kiểu nối tổng quát nhất được gọi là nối-θ, thường được đơn giản hóa thành nối Trong đó, F được xác định là vị từ nối.
Nối tự nhiên là phép kết hợp hai quan hệ R và S có tập thuộc tính chung X Kết quả của phép nối tự nhiên tạo ra một quan hệ mới trên tập thuộc tính của R và các thuộc tính Y của S không nằm trong X Quan hệ này bao gồm tất cả các bộ t, được hình thành từ bộ r thuộc R và bộ s[Y] với điều kiện r[X] = s[X].
R>< = ∈ ∧ = ∧ ∈ ∧ Nối nửa của hai quan hệ R và S theo vị từ p cho kết quả là :
R>< p =∏ X >< p , với X là tập các thuộc tính của R
Phép chia Chia quan hệ R bậc n cho quan hệ S bậc m (trong đó n >m,vàm≠ 0) là tập các t bộ trên n−m thuộc tính sao cho với mọi bộ u∈S thì (t,u)∈R
R÷ =∏ A −∏ A ∏ A × − , với 'A là tập thuộc tính của R không thuộc S.
Hệ cơ sở dữ liệu phân tán [4]
Các khái niệm về CSDL PT
Ở mức phần cứng vật lý, những nhân tố chính phân biệt một hệ CSDL PT với một hệ CSDL tập trung là:
Nhiều máy tính được gọi là trạm hoặc nút (node) cần được kết nối qua một mạng truyền thông để trao đổi dữ liệu và lệnh giữa chúng.
Hình 1 1 CSDL trung tâm trên một mạng
Hình 1 2 Môi trường của hệ CSDL PT
Hệ quản trị cơ sở dữ liệu phân tán (CSDL PT) bao gồm một loạt phần mềm hệ thống, trong đó có phần mềm quản lý dữ liệu phân tán, phần mềm quản lý truyền thông, và các hệ quản trị CSDL địa phương được cài đặt tại từng trạm trong hệ thống CSDL PT.
Hệ quản trị cơ sở dữ liệu PT không chỉ đảm nhận các chức năng cơ bản của hệ quản trị cơ sở dữ liệu và phần mềm quản trị truyền thông, mà còn sở hữu những chức năng đặc biệt khác, nâng cao khả năng quản lý và xử lý thông tin.
Quản lý một từ điển dữ liệu tổng thể lưu trữ thông tin liên quan đến các dữ liệu phân tán Định nghĩa các dữ liệu phân tán
Kiểm tra ngữ nghĩa của các dữ liệu phân tán Định giá các câu truy vấn phân tán do người dùng đưa ra
Quản lý các giao tác phân tán
Bảo mật giao tác và dữ liệu
Phục hồi CSDL phân tán, cung cấp khả năng phục hồi dữ liệu từ những trạm (site) bị lỗi (sập)
Quản trị nhân bản dữ liệu
Một trong những tính chất quan trọng của các cơ sở dữ liệu phân tán (CSDL PT) là tính thuần nhất hay không thuần nhất CSDL PT thuần nhất (homogeneous DDB) được hình thành bằng cách chia một CSDL thành các CSDL cục bộ, mỗi cục bộ này được quản trị bởi cùng một hệ quản trị CSDL, thường là kết quả của thiết kế từ một CSDL tập trung Ngược lại, CSDL PT không thuần nhất (heterogeneous DDB) được tạo ra bằng cách tích hợp nhiều CSDL cục bộ, có thể được xây dựng từ các mô hình dữ liệu khác nhau và quản trị bởi các hệ quản trị CSDL khác nhau, thành một CSDL duy nhất.
Các mục tiêu của hệ quản trị CSDL PT
Sự độc lập dữ liệu và tính trong suốt phân bố là yếu tố quan trọng trong hệ quản trị cơ sở dữ liệu phân tán (CSDL PT) Người dùng thường không cần quan tâm đến việc dữ liệu được phân tán như thế nào, vì thông tin này được lưu trữ trong từ điển dữ liệu (catalog) Hệ quản trị CSDL PT sử dụng từ điển dữ liệu để định vị và truy xuất dữ liệu một cách hiệu quả, đảm bảo tính độc lập và trong suốt trong quá trình quản lý dữ liệu.
Độc lập dữ liệu giúp tăng cường khả năng thích ứng của ứng dụng với những thay đổi trong định nghĩa và tổ chức dữ liệu Điều này tạo ra sự đồng nhất giữa các ứng dụng hoạt động trên cơ sở dữ liệu tập trung và cơ sở dữ liệu phân tán.
Trong suốt quá trình phân mảnh, việc truy cập dữ liệu được xác định qua các quan hệ con, hay còn gọi là các mảnh (fragment), được tạo ra từ việc chia nhỏ các quan hệ gốc Phân mảnh, bao gồm phân mảnh ngang, dọc và hỗn hợp, giúp nâng cao hiệu năng, tính sẵn sàng và độ tin cậy của hệ thống cơ sở dữ liệu phân tán (CSDL PT) Hơn nữa, trong suốt quá trình này, sự phân đoạn được che giấu hoàn toàn đối với người dùng.
Trong suốt nhân bản là một giải pháp hiệu quả cho việc tăng cường độ tin cậy của dữ liệu thông qua việc tạo ra các bản sao dữ liệu Mỗi mảnh dữ liệu được sao lưu thành nhiều bản, lưu trữ trên các trạm khác nhau, giúp hệ CSDL PT nâng cao hiệu suất, độ tin cậy và tính sẵn sàng Tuy nhiên, việc nhân bản cũng gây ra khó khăn trong việc cập nhật CSDL, đồng thời việc duy trì và quản lý các bản sao trở nên phức tạp và tốn kém Quan trọng là quá trình này diễn ra một cách trong suốt, cho phép người dùng chỉ nhìn thấy các quan hệ không có nhân bản.
Tính trong suốt đối với hệ quản trị CSDL Cho phép che dấu đối vói người dùng việc các hệ quản trị CSDL cục bộ có thể khác nhau
Tính tự trị của các trạm là mục tiêu quan trọng, cho phép mỗi trạm quản lý và thao tác dữ liệu địa phương một cách độc lập, không phụ thuộc vào các trạm khác Điều này giúp nâng cao hiệu quả quản trị của cơ sở dữ liệu (CSDL).
PT có thể hoàn toàn phi tập trung
Tính mở rộng là khả năng mở rộng mạng lưới bằng cách thêm các trạm mới mà không làm ảnh hưởng đáng kể đến các cơ sở dữ liệu cục bộ và các ứng dụng hiện có.
Kiến trúc hệ quản trị CSDL PT
Có nhiều kiểu kiến trúc cơ sở dữ liệu (CSDL), bao gồm hệ CSDL client/server, phức hệ CSDL và CSDL trong môi trường phân tán đầy đủ, không phân biệt client và server, hay còn gọi là hệ phân tán ngang hàng Kiến trúc này sẽ được tập trung thảo luận trong phần này.
Các hệ phân tán ngang hàng yêu cầu một định nghĩa tổ chức dữ liệu vật lý cho mỗi trạm, được gọi là lược đồ trong cục bộ (LIS) Hệ thống cơ sở dữ liệu (CSDL) được mô tả bởi lược đồ khái niệm toàn cục (GCS), phản ánh cấu trúc logic của dữ liệu tại mọi vị trí Để quản lý phân mảnh và nhân bản, lược đồ khái niệm cục bộ (LCS) được sử dụng, mô tả tổ chức logic của dữ liệu tại từng trạm Trong kiến trúc này, lược đồ khái niệm toàn cục là sự kết hợp của các lược đồ khái niệm cục bộ.
Và các ứng dụng truy xuất dữ liệu thông qua lược đồ ngoài (ES), được định nghĩa là một tầng nằm trên lược đồ khái niệm toàn cục
Các khái niệm trên được mô tả trong hình 1.3
Hệ CSDL PT bao gồm hai thành phần chính: Bộ xử lý tiếp nhận người dùng (User Processor) chịu trách nhiệm xử lý tất cả các tương tác với người dùng, và Bộ xử lý dữ liệu (Data Processor) đảm nhiệm việc xử lý dữ liệu.
Hình 1 3 Kiến trúc tham chiếu CSDL PT
Thành phần đầu tiên bao gồm:
Bộ giao tiếp người dùng (user interface handler) có nhiệm vụ diễn dịch các lệnh từ người sử dụng và định dạng dữ liệu để cung cấp kết quả cho người dùng một cách hiệu quả.
Bộ kiểm soát dữ liệu ngữ nghĩa sử dụng các ràng buộc toàn vẹn và thông tin về quyền hạn để kiểm tra tính khả thi của các câu truy vấn Những thành phần này được định nghĩa trong lược đồ khái niệm toàn cục, đảm bảo rằng dữ liệu được xử lý một cách chính xác và hiệu quả.
Bộ tối ưu truy vấn toàn cục (Global query optimizer) đóng vai trò quan trọng trong việc xác định chiến lược hoạt động nhằm giảm thiểu chi phí truy vấn Nó phiên dịch các câu truy vấn toàn cục thành câu truy vấn cục bộ bằng cách sử dụng các lược đồ toàn cục, khái niệm cục bộ và thư mục toàn cục Đồng thời, bộ này cũng chịu trách nhiệm tạo ra chiến lược thực thi hiệu quả cho các phép nối phân tán.
Bộ theo dõi hoạt động toàn cục (Global Execution Monitor) có vai trò quan trọng trong việc điều phối và thực hiện phân tán các yêu cầu của người dùng, đồng thời được biết đến với tên gọi bộ quản lý giao dịch phân tán (Distributed Transaction Manager).
Thành phần thứ hai gồm:
Bộ tối ưu truy vấn cục bộ (Local query processor) chịu trách nhiệm chọn ra một đường truy xuất thích hợp nhất để truy xuất các dữ liệu
Bộ khôi phục cục bộ (Local recovery manager) đảm bảo cho các CSDL cục bộ duy trì được tính nhất quán khi có sự cố xảy ra
Bộ hỗ trợ thực thi (Runtime support processor) thực hiện truy xuất cơ sở dữ liệu dựa trên các lệnh trong lịch do bộ tối ưu vấn tin sinh ra Nó đóng vai trò là giao diện với hệ điều hành và bao gồm bộ quản lý vùng đệm cơ sở dữ liệu, chịu trách nhiệm quản lý vùng đệm cũng như việc truy xuất dữ liệu.
Hai thành phần này được phân chia về mặt tổ chức nhưng không bắt buộc phải cài đặt trên các trạm khác nhau Có gợi ý tách biệt các trạm chỉ thực hiện truy vấn khỏi hệ thống đầy đủ chức năng, với yêu cầu các trạm này chỉ cần có bộ xử lý tiếp nhận người dùng.
Hình 1 4 Các thành phần của một hệ quản trị CSDL PT
MỘT SỐ NGUYÊN LÝ CHUNG CỦA TỐI ƯU HÓA TRUY VẤN
Mục tiêu của bài toán xử lý truy vấn [4]
Bộ xử lý truy vấn có vai trò quan trọng trong việc phân tích và chuyển đổi các câu truy vấn cấp cao, thường được biểu diễn dưới dạng các phép tính quan hệ, thành các câu truy vấn tương đương ở cấp thấp hơn, cụ thể là dạng đại số quan hệ.
Việc cài đặt các chiến lược thực thi cho câu truy vấn cấp thấp là cần thiết, đảm bảo rằng biến đổi câu truy vấn không chỉ đúng đắn mà còn hiệu quả Một biến đổi được coi là đúng đắn khi câu truy vấn cấp thấp cho kết quả tương đương với câu truy vấn cấp cao Tuy nhiên, việc tìm ra chiến lược thực thi phù hợp để tối ưu hóa hiệu quả là một thách thức lớn, bởi một câu truy vấn cấp cao có thể chuyển đổi thành nhiều câu truy vấn cấp thấp khác nhau, mỗi chiến lược lại tiêu tốn tài nguyên hệ thống khác nhau Do đó, việc xác định chiến lược nhằm giảm thiểu tiêu thụ tài nguyên là rất quan trọng.
Xét CSDL đã cho ở thí dụ 1.1 Với câu truy vấn “Tìm tên các nhân viên đang quản lý một dự án có thời gian lớn hơn 37 tháng”
WHERE NHANVIEN.MSNV=PHANCONG.MSNV
AND TGIAN > 37 Với câu truy vấn trên chúng ta có thể có các biểu thức đại số quan hệ tương đương như sau:
( TGIAN 37 NHANVIEN MSNV PHANCONG MSNV NHANVIEN PHANCONG
Trong môi trường tập trung, chiến lược thực thi truy vấn có thể được mô tả bằng một mở rộng của đại số quan hệ Bộ xử lý truy vấn có nhiệm vụ chọn ra câu truy vấn dạng biểu thức đại số tốt nhất từ các câu truy vấn tương đương Do số lượng quan hệ lớn, bài toán này trở nên phức tạp, vì vậy mục tiêu chính là tìm ra một giải pháp tốt, gần tối ưu, để tối ưu hóa tài nguyên sử dụng.
Trong môi trường phân tán, các biểu thức đại số quan hệ không đủ để diễn tả chiến lược thực thi, vì cần bổ sung các phép toán trao đổi dữ liệu giữa các trạm Ngoài việc chọn các phép toán đại số quan hệ, bộ xử lý truy vấn phân tán cũng cần xác định các trạm tối ưu để xử lý dữ liệu Do đó, việc tìm ra giải pháp cho bài toán chiến lược thực thi trở nên phức tạp hơn.
Xét lại ví dụ trên trong môi trường phân tán:
Các mảnh được cấp phát tại các trạm 1, 2, 3, 4 và kết quả được truy xuất tại trạm 5
Ta có chiến lược A tại Trạm 5:
Và chiến lược B như sau:
) ( NHANVIEN 1 ∪ NHANVIEN 2 MSNV TGIAN 37 PHANCONG 1 ∪ PHANCONG 2
PHANCONG 1 PHANCONG 2 NHANVIEN 1 NHANVIEN 2 Để đánh giá được việc tiêu dùng tài nguyên của hai chiến lược này, ta dùng mô hình chi phí sau:
Giả sử độ lớn của quan hệ NHANVIEN và PHANCONG tương ứng là 400 và
1000 bộ (tuple) và chi phí truy xuất bộ (tuple access cost) tupacc là một đơn vị, chi phí truyền bộ (tuple transfer cost) tuptrans là 10 đơn vị
Với phương án A ta có:
2 Truyền PHANCONG’ đến vị trí chứa
4 Truyền NHANVIEN’ đến vị trí 5 (10+10)*tuptrans 200
Tổng chi phí 460 Đối với phương án B ta có:
1 Truyền NHANVIEN đến vị trí 5 400*tuptrans 4000
2 Truyền PHANCONG đến vị trí 5
Tổng chi phí 23000 Ở phương án B ta thấy rõ ràng là tổng chi phí lớn hơn rất nhiều so với phương án A
Mục tiêu của việc xử lý truy vấn trong môi trường phân tán là chuyển đổi câu truy vấn cấp cao trên cơ sở dữ liệu phân tán thành các câu truy vấn ở ngôn ngữ cấp thấp trên các cơ sở dữ liệu cục bộ.
Một yếu tố quan trọng trong việc xử lý truy vấn là tối ưu hóa Trong các chiến lược thực thi, chiến lược nào sử dụng tài nguyên hệ thống một cách hiệu quả nhất sẽ được ưu tiên giữ lại.
Chỉ số đánh giá mức sử dụng hệ thống là tổng chi phí (total cost) được tính toán như sau:
Tổng chi phí= chi phí xuất nhập + chi phí CPU + chi phí truyền
Với chi phí xuất nhập là chi phí/thời gian cần thiết cho các thao tác xuất nhập
Chi phí CPU là chi phí/thời gian phải trả khi thực hiện các thao tác trên dữ liệu trong bộ nhớ chính
Tuy nhiên cũng có cách đánh giá khác để đánh giá việc xử lý truy vấn là thời gian đáp ứng (response time)
Các yếu tố chi phí trong các môi trường phân tán có thể được đánh giá khác nhau Trong môi trường tập trung, hai thành phần đầu tiên là yếu tố chính trong việc tính toán chi phí của câu truy vấn Ngược lại, trong môi trường mạng WAN, yếu tố truyền tin trở nên quan trọng hơn do chi phí truyền thường cao hơn nhiều so với chi phí xử lý cục bộ Nghiên cứu gần đây đã chỉ ra rằng cần xem xét tổ hợp của cả ba thành phần này vì chúng đều đóng góp đáng kể vào tổng chi phí ước lượng của câu truy vấn.
Độ phức tạp của các phép toán đại số quan hệ
Đại số quan hệ là phương pháp cơ bản để biểu diễn kết quả của việc xử lý truy vấn, và sự phức tạp của phép toán đại số quan hệ ảnh hưởng trực tiếp đến thời gian xử lý Độ phức tạp được định nghĩa theo lực lượng của quan hệ (cardinality), không phụ thuộc vào cài đặt vật lý như phân mảnh và cấu trúc lưu trữ dữ liệu Việc lựa chọn cây thực thi dựa trên các nguyên tắc này sẽ mang lại lợi ích đáng kể Bảng so sánh độ phức tạp của các phép toán quan hệ cung cấp cái nhìn rõ ràng về vấn đề này.
Dựa trên bảng so sánh, có thể rút ra hai kết luận chính: Thứ nhất, độ phức tạp có tương quan với lực lượng của quan hệ, do đó các thao tác chọn lọc cần được ưu tiên thực hiện trước để giảm thiểu lực lượng cần thiết Thứ hai, các phép toán cần được sắp xếp theo độ phức tạp để tránh thực hiện tích Descartes hoặc để thực hiện sau.
Mô tả bộ xử lý truy vấn
Trong xử lý truy vấn trên các hệ cơ sở dữ liệu, ngôn ngữ chủ yếu được biểu diễn qua các phép tính quan hệ và được chuyển thành đại số quan hệ trong quá trình phân rã câu truy vấn Trong môi trường phân tán, ngôn ngữ đầu ra là một dạng đại số quan hệ kết hợp với các yếu tố truyền tin Việc xử lý truy vấn cần ánh xạ hiệu quả từ ngôn ngữ đầu vào sang ngôn ngữ đầu ra Tối ưu hóa truy vấn nhằm chọn chiến lược thực thi hiệu quả nhất trong không gian lời giải, nhưng không gian này thường rất lớn, dẫn đến việc tìm lời giải tối ưu tốn nhiều thời gian và tài nguyên Chi phí cao cho việc tìm lời giải tối ưu trở nên hợp lý khi chỉ cần tối ưu hóa một lần cho nhiều lần thực hiện câu truy vấn, thường sử dụng chiến lược vét cạn.
Để giảm chi phí cao trong tìm kiếm vét cạn, các chiến lược ngẫu nhiên hóa như Iteractive Improvement và Stimulated Annealing đã được đề xuất nhằm tìm ra giải pháp tốt mà không cần phải là tốt nhất, giúp tránh chi phí tối ưu hóa cao Một phương pháp khác để giảm chi phí là sử dụng thuật giải heuristic, giúp thu hẹp phạm vi tìm kiếm Trong các hệ phân tán, một heuristic quan trọng là thay thế các nối bằng tổ hợp của các nối nửa, góp phần làm giảm chi phí truyền dữ liệu.
Ullman J.D trong các kết quả nghiên cứu của mình đã trình bày những chiến lược tổng quan cho tối ưu hóa như sau:
Thực hiện phép chọn sớm nhất có thể: nhằm làm giảm kích thước của các kết quả trung gian
Tổ hợp phép chọn xác định với phép tích Descartes có thể chuyển thành phép kết nối, giúp giảm chi phí thực hiện Khi kết quả của tích Descartes RxS là đối số của phép chọn, và phép chọn liên quan đến việc so sánh các thuộc tính của R và S, ta có thể áp dụng phép kết nối để tối ưu hóa chi phí.
Trong toán học, các phép toán một ngôi như phép chọn và phép chiếu có thể được nhóm lại nếu kết quả của chúng phụ thuộc vào các bộ của một quan hệ độc lập Việc này giúp tối ưu hóa quy trình xử lý dữ liệu và nâng cao hiệu quả trong các ứng dụng phân tích.
Khi tìm các biểu thức con chung trong một biểu thức, nếu kết quả của biểu thức con chung xuất hiện nhiều lần và có thể được truy xuất từ bộ nhớ thứ cấp với thời gian ngắn, thì nên tính toán biểu thức đó chỉ một lần.
Tiền xử lý các tệp là bước quan trọng giúp sắp xếp và thiết lập chỉ số cho các tệp, từ đó cải thiện hiệu suất thực hiện các phép toán hai ngôi Để tối ưu hóa trình tự thực hiện các phép toán trong biểu thức, cần đánh giá chi phí của từng phép toán, bao gồm số phép tính, thời gian và dung lượng bộ nhớ dựa trên kích thước các quan hệ Việc này giúp lựa chọn phương án thực hiện có chi phí thấp nhất.
Thời điểm tối ưu hóa Việc tối ưu hóa câu truy vấn có thể thực hiện tại những thời điểm khác nhau
Tối ưu hóa kiểu tĩnh, như R*, được thực hiện trước khi thực thi truy vấn và diễn ra trong quá trình biên dịch Phương pháp này thích hợp cho các truy vấn được thực thi nhiều lần, giúp giảm chi phí qua các lần sử dụng Tuy nhiên, một thách thức lớn là xác định kích thước của các quan hệ kết quả trung gian, thường dựa vào số liệu thống kê của cơ sở dữ liệu.
Tối ưu hóa kiểu động, chẳng hạn như Distributed INGRESS, diễn ra trong thời gian thực thi truy vấn Trong mỗi giai đoạn của quá trình này, thao tác tiếp theo sẽ được chọn dựa trên thông tin chính xác về kết quả của các thao tác trước đó Phương pháp này có ưu điểm là xác định chính xác kích thước của quan hệ trung gian, tuy nhiên, nhược điểm là thao tác có thể phải lặp lại cho mỗi lần thực hiện truy vấn.
Các phương pháp hỗn hợp như MERMAID đã được thử nghiệm để kết hợp ưu điểm của phương pháp tĩnh, đồng thời giảm thiểu các vấn đề do đánh giá không chính xác Phương pháp này chủ yếu dựa vào phương pháp tĩnh, nhưng khi phát hiện lỗi trong việc xác định kích cỡ, nó sẽ chuyển sang sử dụng phương pháp động trong quá trình thực thi.
Số liệu thống kê đóng vai trò quan trọng trong việc tối ưu hóa truy vấn tĩnh và động trong cơ sở dữ liệu phân tán Chúng được tính toán theo từng mảnh, bao gồm kích thước, lực lượng, cũng như số lượng và kích thước các giá trị phân biệt của mỗi thuộc tính Để đảm bảo độ chính xác, số liệu thống kê cần được cập nhật định kỳ Đặc biệt, trong phương pháp tối ưu hóa tĩnh, sự thay đổi lớn trong số liệu thống kê có thể yêu cầu thực hiện lại quá trình tối ưu hóa.
Hệ thống ra quyết định có thể được chia thành ba phương pháp chính: tập trung, phân tán và hỗn hợp Phương pháp tập trung chỉ có một trạm đảm nhiệm việc ra quyết định, yêu cầu thông tin đầy đủ từ toàn bộ cơ sở dữ liệu Trong khi đó, phương pháp phân tán cho phép nhiều trạm tham gia ra quyết định với thông tin cục bộ Phương pháp hỗn hợp, như trong System R* [Williams et al., 1982], kết hợp cả hai cách tiếp cận, trong đó một trạm thực hiện các quyết định chính và các trạm khác đưa ra lựa chọn cục bộ.
Yếu tố cấu hình mạng, hay còn gọi là topology mạng, đóng vai trò quan trọng trong quá trình tối ưu hóa Đối với mạng WAN, với băng thông hạn chế và tốc độ truyền chậm, chi phí truyền dữ liệu trở thành yếu tố chính trong việc tính toán hàm chi phí Ngược lại, trong mạng LAN, nơi có băng thông lớn và tốc độ truyền cao, cần xem xét tất cả các chi phí liên quan để tính toán hàm chi phí một cách chính xác.
Trong cơ sở dữ liệu phân tán, việc nhân bản các mảnh dữ liệu giúp giảm số lần truyền và tối ưu hóa việc trao đổi thông tin giữa các trạm Phép nối nửa có vai trò quan trọng trong việc giảm kích thước quan hệ, từ đó giảm lượng dữ liệu cần trao đổi, đặc biệt hữu ích trong mạng có tốc độ chậm Tuy nhiên, phép nối nửa vẫn có giá trị trong bối cảnh mạng ngày càng nhanh hiện nay Do đó, nhiều thuật toán xử lý truy vấn gần đây đã tập trung vào việc tìm kiếm tổ hợp tối ưu giữa phép nối và phép nối nửa.
Bài toán xử lý truy vấn được phân rã thành nhiều bài toán con tương ứng với các tầng khác nhau trong xử lý vấn tin phân tán
Hình 2 2 Lược đồ tổng quát xử lý truy vấn phân tán
Quá trình xử lý truy vấn bắt nguồn từ câu truy vấn dạng phép tính trên các quan hệ phân tán, bao gồm các tầng phân tích như phân rã câu truy vấn, định vị dữ liệu, tối ưu hóa toàn cục và tối ưu hóa cục bộ Phân rã truy vấn và cục bộ hóa dữ liệu tương ứng với việc viết lại câu truy vấn Ba tầng đầu tiên được thực hiện bởi một trạm trung tâm sử dụng thông tin toàn cục, trong khi tầng thứ tư được thực hiện tại các trạm cục bộ Các tầng này sẽ được bàn luận chi tiết ở phần sau.
Phân rã truy vấn và định vị dữ liệu
Hai tầng phân rã truy vấn và định vị dữ liệu hoạt động liên tiếp, chịu trách nhiệm chuyển đổi câu truy vấn từ dạng phép tính quan hệ ban đầu thành câu truy vấn theo đại số quan hệ được định nghĩa trên các mảnh dữ liệu.
Phân rã câu truy vấn là quá trình chuyển đổi câu truy vấn phân tán dạng phép tính quan hệ thành câu truy vấn đại số trên quan hệ toàn cục Các kỹ thuật được áp dụng trong phần này chủ yếu là từ các hệ quản trị cơ sở dữ liệu tập trung Một câu truy vấn được coi là đạt “chất lượng” khi các tầng tiếp theo có thể sử dụng các thuật toán thông thường mà vẫn tránh được các thực hiện kém hiệu quả nhất.
Trong phần này, chúng ta giả định rằng câu truy vấn đã được nhập đúng về cú pháp Khi kết thúc giai đoạn này, câu truy vấn sẽ đảm bảo đúng ngữ nghĩa và đạt chất lượng cao Các bước phân rã truy vấn sẽ được thực hiện một cách hệ thống để tối ưu hóa kết quả.
1) Đưa về dạng chuẩn tắc
2.4.1.1 Đưa về dạng chuẩn tắc (normalization)
Chuẩn hóa có mục đích biến đổi câu truy vấn thành dạng chuẩn để xử lý hiệu quả Đối với các ngôn ngữ quan hệ như SQL, việc biến đổi quan trọng nhất là lượng từ hóa vấn tin, có thể là một vị từ phi lượng từ với độ phức tạp nhất định, đồng thời tất cả các lượng từ cần thiết được đặt ở phía trước.
Có hai dạng chuẩn có thể có cho vị từ:
Dạng chuẩn hội (conjunctive normal form) là hội của các tuyển:
Dạng chuẩn tuyển (disjunctive normal form) là tuyển của các hội: tương đương đã biết trong toán logic:
Câu truy vấn “Tìm tên các nhân viên đang làm việc ở dự án P1 trong 12 hoặc
24 tháng” Viết dưới dạng SQL:
WHERE NHANVIEN.MSNV=PHANCONG.MSNV
Viết dưới dạng chuẩn hội:
Viết dưới dạng chuẩn tuyển:
Việc phân tích câu truy vấn giúp chúng ta loại bỏ các câu truy vấn không đúng
Lý do có thể là do các thuộc tính bị sai kiểu hoặc sai nghĩa, dẫn đến việc áp dụng các phép toán không thích hợp trong lược đồ toàn cục.
WHERE TENNV>200 NV# không được khai báo trong lược đồ, phép so sánh MSNV>200 là không đúng kiểu với TENNV
Sai nghĩa trong phép tính quan hệ xảy ra khi các thành phần không tham gia vào việc tạo ra kết quả Trong ngữ cảnh này, chỉ có thể kiểm tra tính đúng đắn cho tập con của phép tính quan hệ, và thường không chứa các tuyển và phủ định Để xác định lỗi, người ta thường sử dụng cách biểu diễn câu truy vấn dưới dạng đồ thị, bao gồm đồ thị nối tương ứng (join graph) và đồ thị kết nối (connection graph), hay còn gọi là đồ thị truy vấn (query graph).
Trong đồ thị truy vấn, mỗi nút đại diện cho một quan hệ kết quả, trong khi các nút khác thể hiện các quan hệ toán hạng Các cạnh nối giữa các nút biểu thị cho các toán hạng, với cạnh nối tới nút kết quả thể hiện phép chọn.
WHERE NHANVIEN.MSNV=PHANCONG.MSNV
AND PHANCONG.MSDA=DUAN.MSDA
AND NNGH= “Lập trình viên”
Hình 2 3 Các đồ thị quan hệ
Trong đồ thị nối thì chỉ có các nối, đồ thị này có ích cho giai đoạn tối ưu hóa vấn tin
Nếu như đồ thị không liên thông thì câu truy vấn đó có lỗi
WHERE NHANVIEN.MSNV=PHANCONG.MSNV
AND NNGH= “Lập trình viên”
Hình 2 4 Đồ thị truy vấn không liên thông
Sau khi lượng từ hóa truy vấn, có thể xuất hiện các vị từ dư thừa Để loại bỏ những vị từ này, cần áp dụng quy tắc giản ước lượng từ hóa theo các qui tắc lũy đẳng.
WHERE (NOT(NNGH=”Lập trình viên”)
AND (NNGH=”Lập trình viên”
OR NNGH=”Kỹ sư điện”)
AND NOT(NNGH=”Kỹ sư điện”))
Với p 1 là ; p 2 là và p 3 là
Sử dụng cỏc quy tắc chuẩn húa, ta cú kết quả:ơp 1 ∧(p 1 ∨ p 2 )∧ơp 2 )∨ p 3 ỏp dụng cỏc quy tắc ở phần trờn ta cú: ơp 1 ∧(p 1 ∨ p 2 )∧ơp 2 )∨ p 3 ⇔ p 3
Như vậy câu truy vấn trên được đơn giản hóa như sau:
2.4.1.4 Viết lại truy vấn (restructuring)
Quá trình này được chia thành hai bước chính: đầu tiên, chuyển đổi câu truy vấn (query tree) sang dạng đại số quan hệ, và sau đó, cấu trúc lại câu truy vấn đại số để tối ưu hóa hiệu năng Câu truy vấn sẽ được biểu diễn dưới dạng cây toán tử, trong đó mỗi nút lá đại diện cho một quan hệ trong cơ sở dữ liệu, còn các nút không phải lá thể hiện các quan hệ hướng từ lá đến gốc, phản ánh kết quả của truy vấn.
“Tìm tên các nhân viên trừ V Dũng đã làm cho dự án CAD/CAM trong một hoặc hai năm”
WHERE NHANVIEN.MSNV=PHANCONG.MSNV
AND PHANCONG.MSDA=DUAN.MSDA
AND (TGIAN OR TGIAN$) Cây truy vấn có thể được biểu diễn như sau:
Hình 2 5 Thí dụ về cây truy vấn
Bằng cách sử dụng các quy tắc biến đổi (transformation rule) dưới đây ta có thể thu được nhiều cây tương đương từ cây trên
Quy tắc biến đổi (transformation rule):
1) Giao hoán của phép toán hai ngôi”
2) Kết hợp của phép toán hai ngôi:
3) Đối với phép toán một ngôi nếu R[A] và A ' ⊆ A , A" ⊆ A và A' ⊆ A"ta có:
4) Giao hoán giữa phép chọn và phép chiếu
∏ A 1 , , An (σ p ( Ap ) (R)⇔∏ A 1 , An (σ p ( Ap ) (∏ A 1 , , An , Ap (R)))
Lưu ý nếu Ap là phần tử của {A1,…,An} thì phép chiếu cuối cùng ở vế phải không còn tác dụng, ta có thể loại bỏ nó Tức là:
1 An p Ap R p Ap A An Ap R
5) Giao hoán phép chọn với các phép toán hai ngôi Phép chọn và tích Descartes có thể được giao hoán bằng các quy tắc sau (cần nhớ rằng thuộc tính A i thuộc R): σ p ( A ) (R×S)⇔ (σ p ( A ) (R))×S
Chọn và nối cũng có thể giao hoán σ p ( A ) (R>< Aj , Bk S)⇔ (σ p ( A ) (R))>< Aj , Bk S
Chọn và hợp cũng có thể giao hoán nếu R và S có lược đồ giống nhau σ p ( A ) (R∪S)⇔σ p ( A ) (R)∪σ p ( A ) (S)
6) Giao hoán phép chiếu với các phép toán hai ngôi Với R[A], S[B];
∏ C (R∪S)⇔∏ C (R)×∏ C (S)Trở lại với thí dụ 2.7, ta có thể thu được các cây truy vấn tương dương như sau:
Hình 2 6 Cây truy vấn tương đương
Ta nhận thấy rằng cây trong hình 2.5 tốt hơn cây trong hình 2.6 do không phải sử dụng tich Descartes
Trong quá trình tối ưu hóa, việc so sánh tất cả các cây dựa trên chi phí dự đoán có thể trở nên không thực tế do số lượng cây lớn Do đó, người ta thường áp dụng các phương pháp heuristic để tái cấu trúc cây, dựa trên bốn quy tắc cụ thể.
Tách các phép toán một ngôi, làm đơn giản biểu thức truy vấn
Các phép toán một ngôi trên cùng một quan hệ có thể được nhóm lại, để chỉ cần truy xuất đến quan hệ một lần
Các phép toán một ngôi có thể giao hoán với phép toán hai ngôi để cho phép một số phép toán được thực hiện trước (ví dụ phép chọn)
Các phép toán hai ngôi có thể được sắp xếp lại
Sau khi thực hiện tái cấu trúc, cây dữ liệu đạt được như hình 2.7 Thuật toán tái cấu trúc đơn giản được giới thiệu trong [Ullman, 1982] áp dụng các phương pháp heuristic, trong đó ưu tiên thực hiện các phép toán một ngôi như chọn và chiếu sớm nhất có thể để giảm kích thước của các quan hệ trung gian.
Hình 2 7 Cây truy vấn đã được viết lại
Tầng định vị dữ liệu chuyển đổi câu truy vấn đại số trên quan hệ tổng thể thành câu truy vấn đại số trên các mảnh dữ liệu Tầng này sử dụng thông tin về sự phân bố dữ liệu trong lược đồ phân mảnh để xác định các mảnh cần thiết cho truy vấn, từ đó rút gọn câu truy vấn phân tán thành một câu truy vấn có “chất lượng” trên các mảnh Trong quá trình này, chúng ta không xem xét các mảnh được nhân bản Chương trình định vị, với các toán hạng là các mảnh, có nhiệm vụ tái thiết quan hệ toàn cục từ các mảnh.
Một phương pháp định vị đơn giản là thay thế quan hệ toàn cục trong câu truy vấn bằng chương trình định vị tương ứng, tạo ra câu truy vấn gốc Tuy nhiên, phương pháp này không hiệu quả vì câu truy vấn gốc vẫn có thể được cấu trúc lại và đơn giản hóa Bằng cách áp dụng các heuristic và quy tắc biến đổi, mỗi kiểu phân mảnh sẽ có các kỹ thuật biến đổi và rút gọn, giúp tối ưu hóa và đơn giản hóa câu truy vấn.
Việc phân mảnh ngang một quan hệ là dựa trên vị từ chọn
Quan hệ NHANVIEN(MSNV,TENNV,NNGH) được phân mảnh theo quy tắc sau:
Trong ví dụ này thì chương trình định vị là hợp của các mảnh
Do vậy câu truy vấn gốc trên NHANVIEN sẽ thu được nhờ thay NHANVIEN bằng NHANVIEN 1 ∪NHANVIEN 2 ∪NHANVIEN 3
Với quan hệ PHANCONG với PHANCONG 1 =σ MSNV ≤ " E 3 " (PHANCONG) và
Ta có PHANCONG =PHANCONG 1 ∪PHANCONG 2
Với câu truy vấn ở thí dụ 2.7 (trong hình 2.5) ta có thể xây dựng lại cây như sau:
Hình 2 8 Cây truy vấn sau khi thay thế
Cho một quan hệ R được phân mảnh ngang thành R1,R2,…Ru, trong đó
Qui tắc 1: σ pi (R j )=φ nếu ))∀x∈R:ơ(p i (x)∧ p j (x với p i , p j là cỏc vị từ chọn, x biểu thị cho một bộ, và p(x) biểu thị vị từ p đúng với x
Việc xác định các vị từ mâu thuẫn cần áp dụng các kỹ thuật chứng minh định lý, đặc biệt khi các vị từ này ở dạng tổng quát Trong thực tế, các hệ quản trị cơ sở dữ liệu thường đơn giản hóa quy trình bằng cách chỉ hỗ trợ những vị từ đơn giản trong việc định nghĩa các quy tắc phân mảnh.
Sử dụng quan hệ đã được phân mảnh của thí dụ 2.8, với câu truy vấn sau:
Ta thu được câu truy vấn gốc và cây rút gọn như sau:
Hình 2 9 Rút gọn phân mảnh ngang (với phép chọn)
Rút gọn với phép nối
Tối ưu hóa truy vấn phân tán
Quá trình phân rã và cục bộ hóa dữ liệu cho phép thực hiện câu truy vấn bằng cách hệ thống hóa các yếu tố truyền tin Việc hoán vị thứ tự các phép toán trong câu truy vấn tạo ra nhiều chiến lược khác nhau Nhiệm vụ của bộ tối ưu hóa là tìm ra cách sắp xếp tối ưu cho các phép toán, tuy nhiên, việc chọn chiến lược tối ưu là một bài toán NP-hard liên quan đến số lượng quan hệ Do đó, bộ tối ưu hóa cần tập trung vào việc tìm kiếm các chiến lược hiệu quả và tránh những chiến lược kém.
Bằng cách phân rã câu truy vấn và tối ưu hóa nhiệm vụ, bộ tối ưu hóa tìm ra chiến lược thực thi câu truy vấn (QEP) tối ưu Chiến lược này bao gồm các câu truy vấn đại số quan hệ được xác định theo các mảnh và các phép toán truyền dữ liệu, giúp thực hiện câu truy vấn một cách hiệu quả qua các trạm.
Việc chọn lựa chiến lược tối ưu nói chung là việc tìm cách tiên đoán được chi phí thực thi và giảm thiểu hàm chi phí
Nguyên liệu chính trong bộ tối ưu hóa tính chi phí bao gồm số liệu thống kê của các mảnh và công thức đánh giá lực lượng của các quan hệ trung gian Bài viết này tập trung vào việc sắp xếp thứ tự các phép toán nối, một vấn đề đã được hiểu rõ, vì các câu truy vấn chứa phép nối, chọn và chiếu là những loại truy vấn thường gặp Ngoài ra, chúng ta cũng thảo luận về tác dụng của phép nối nửa trong việc xử lý các phép nối.
2.5.1 Tối ưu hóa truy vấn Ở phần này ta sẽ thảo luận về quá trình tối ưu hóa nói chung, bất kể là trong môi trường tập trung hay phân tán Câu truy vấn cần tối ưu giả thiết là được diễn tả bằng đại số quan hệ trên các quan hệ CSDL (có thể là các mảnh)
Tối ưu hóa truy vấn là quá trình xây dựng chiến lược thực thi truy vấn (QEP) nhằm giảm thiểu chi phí Chiến lược tối ưu cần phải tối ưu hóa hàm chi phí, và bộ tối ưu bao gồm ba thành phần chính: không gian tìm kiếm, mô hình chi phí và chiến lược tìm kiếm.
Không gian tìm kiếm bao gồm các chiến lược thực thi truy vấn khác nhau Để làm nổi bật các đặc trưng của bộ tối ưu hóa, chúng ta chú trọng vào cây nối (joint tree), là cấu trúc toán tử với các phép toán nối hoặc tích Descartes Việc hoán vị thứ tự nối có ảnh hưởng lớn đến hiệu suất của các truy vấn quan hệ.
Với N quan hệ, số lượng cây nối tương đương là O(N!) Việc đánh giá trong không gian tìm kiếm lớn có thể tiêu tốn thời gian đáng kể, thậm chí hơn cả thời gian thực thi thực tế.
WHERE NHANVIEN.MSNV=PHANCONG.MSNV
AND PHANCONG.MSDA=DUAN.MSDA
Ta có các cây nối tương đương như:
Hình 2 15 Các cây nối tương đương
Bộ tối ưu hóa thường hạn chế không gian tìm kiếm bằng cách áp dụng các heuristic và các giới hạn về cây nối Một số heuristic phổ biến bao gồm thực hiện phép chọn, chiếu khi truy xuất đến quan hệ cơ sở, và tránh lấy tích Descartes không cần thiết Trong ví dụ trên, cây nối cuối cùng không được sử dụng trong không gian tìm kiếm của bộ tối ưu hóa Các cây nối quan trọng thường sử dụng là cây tuyến tính, với mỗi nút toán tử có ít nhất một toán hạng là quan hệ cơ sở, và cây xum xuê, có cấu trúc tổng quát hơn với các quan hệ trung gian.
Hình 2 16 Hai hình thái của các cây nối
Trong cây tuyến tính , kích thước của không gian tìm kiếm được rút gọn lại thành O(2 N )
Chiến lược tìm kiếm phổ biến là quy hoạch động (dynamic programming) với tính chất đơn định (deterministic), xây dựng các phương án thực thi từ các quan hệ cơ sở và nối thêm nhiều quan hệ tại mỗi bước để thu được các phương án khả thi Quy hoạch động phát triển phương án khả thi theo chiều rộng (breadth first), trong khi chiến lược tham ăn xây dựng cây theo chiều sâu (depth first) Các chiến lược vét cạn này đảm bảo tìm ra các phương án khả thi với chi phí chấp nhận được khi số quan hệ trong câu truy vấn không lớn.
Cách tiếp cận hiện tại có chi phí cao khi số lượng quan hệ trong câu truy vấn vượt quá 5 hoặc 6 Do đó, các nghiên cứu gần đây đang chú trọng vào việc phát triển các chiến lược ngẫu nhiên hóa và các phương pháp heuristic nhằm giảm độ phức tạp trong quá trình tối ưu hóa, với mục tiêu tìm ra những phương án khả thi và hiệu quả hơn.
Chiến lược ngẫu nhiên hóa trong bộ tối ưu hóa cho thấy hiệu năng vượt trội so với các chiến lược đơn định, đặc biệt khi truy vấn chứa nhiều quan hệ Khác với các chiến lược đơn định, chiến lược ngẫu nhiên hóa cho phép tối ưu hóa thời gian thực thi bằng cách đánh đổi thời gian tối ưu hóa.
Cải tiến lặp đi lặp lại [Swami, 1989] và Thuật toán Nướng Giả [Ioannidis và Wong, 1987] tập trung vào việc tìm kiếm giải pháp tối ưu xung quanh một số điểm đặc biệt Mặc dù không đảm bảo tìm ra giải pháp tốt nhất, các phương pháp này giúp tránh chi phí cao liên quan đến tối ưu hóa về bộ nhớ và thời gian Ban đầu, một hoặc nhiều phương án khởi đầu được xây dựng thông qua một chiến lược thiển cận, sau đó thuật toán sẽ cải thiện các phương án này bằng cách khám phá các lân cận của chúng, mà một lân cận được tạo ra bằng cách biến đổi ngẫu nhiên một phương án.
Hình 2 18 Hành động của bộ tối ưu hóa khi áp dụng chiến lược ngẫu nhiên
Mô hình chi phí của bộ tối ưu hóa bao gồm các hàm chi phí nhằm dự đoán chi phí của các toán tử, số liệu thống kê và dữ liệu cơ sở, cùng với các công thức để ước lượng các kích thước kết quả trung gian.
Tổng chi phí = chi phí xuất nhập + chi phí CPU + chi phí truyền Chi phí CPU = chi phí một lệnh CPU * số lệnh CPU
Chi phí xuất nhập được tính bằng cách nhân chi phí của một thao tác xuất nhập đĩa với số lần xuất nhập Trong khi đó, chi phí truyền bao gồm chi phí khởi tạo một thông báo nhân với số thông báo, cộng với chi phí truyền một đơn vị dữ liệu nhân với số bytes.
Theo những nghiên cứu ban đầu ta thấy trong mạng WAN:
Chi phí xử lý cho việc truyền là cao
Chi phí cho xử lý truyền và xử lý cục bộ là gần như nhau
Tỷ số giữa hai tác nhân là 1:1,6 Khi thời gian đáp ứng truy vấn được coi là mục tiêu của bộ tối ưu hóa, cần chú ý đến việc xử lý cục bộ song song và truyền song song Công thức tổng quát cho thời gian đáp ứng được trình bày như sau:
Thời gian đáp ứng = thời gian xử lý của CPU + thời gian xuất nhập + thời gian truyền
MỘT SỐ ĐỀ XUẤT KHÁC VỀ XỬ LÝ PHÉP NỐI TRONG CÁC HỆ CSDL
Ứng dụng lý thuyết đồ thị trong tối ưu hóa truy xuất CSDL để thực hiện phép nối [9]
Trong quá trình thực hiện phép nối, việc nạp dữ liệu vào bộ nhớ đệm và truy xuất nhiều lần là điều không thể tránh khỏi Để tối ưu hóa tài nguyên hệ thống, cần có chiến lược thực hiện phép nối hiệu quả Mô hình đồ thị được giới thiệu để đánh giá hiệu suất của các phép nối, với các tham số như số lần truy xuất lại trang, dãy truy xuất trang và lượng bộ nhớ đệm cần thiết Bằng cách xây dựng mô hình đồ thị dựa trên chỉ mục thuộc tính nối, chúng ta có thể xác định mối quan hệ giữa các tham số này Hai chiến lược cấp phát bộ nhớ đệm được xem xét, trong đó giá trị cận trên của kích thước bộ nhớ đệm nhằm tránh truy xuất lại trang được xác định là khái niệm giá trị lớn nhất của lát cắt đồ thị, và bài toán này thuộc lớp NP-hard Chiến lược đầu tiên tập trung vào việc lưu trữ các bộ tham gia vào phép nối, trong khi chiến lược thứ hai trình bày một thuật toán để xác định dãy truy xuất trang với kích thước bộ nhớ đệm gần tối ưu.
Hiện nay, có nhiều phương pháp để thực hiện các nối quan hệ trong cơ sở dữ liệu, đặc biệt là khi làm việc với các quan hệ lớn, chi phí xử lý cục bộ (I/O) thường rất cao Để giảm thiểu chi phí này, một giải pháp khả thi là sử dụng bộ nhớ đệm chính lớn hơn Bài viết này sẽ nghiên cứu cách cân bằng giữa số lần truy xuất lại trang và lượng bộ nhớ đệm cần thiết cho việc nối, đồng thời xác định dãy truy xuất trang dữ liệu nhằm giảm thiểu việc truy xuất lại trang, giả định rằng có các chỉ mục trên vùng nối Chúng ta sẽ áp dụng mô hình đồ thị để biểu diễn kết nối giữa các trang, trong đó việc thăm các nút của đồ thị tương ứng với việc truy xuất trang dữ liệu Bằng cách tìm ra phương án duyệt đồ thị hiệu quả, chúng ta có thể giảm số lần truy xuất lại trang.
3.1.1 Sử dụng chỉ mục để thực hiện phép nối
Việc sử dụng chỉ mục là rất quan trọng trong quá trình thực hiện nối, bất kể dữ liệu có được dồn cụm hay không Chỉ mục dồn cụm giúp tìm kiếm các bộ dữ liệu theo thứ tự đã sắp xếp, giảm thiểu số lần truy xuất trang xuống còn một lần cho mỗi trang dữ liệu Ngược lại, nếu dữ liệu không được dồn cụm, số lần truy xuất trang vẫn có thể được tối ưu hóa khi có đủ bộ nhớ đệm chính cần thiết Do đó, cần cân nhắc giữa kích thước bộ nhớ đệm cần thiết cho việc nối và số lần truy xuất trang để đạt hiệu quả tối ưu.
Bằng cách sử dụng chỉ mục nối của hai quan hệ, chúng ta có thể xác định danh sách các cặp con trỏ trỏ tới các bộ được nối với nhau Mỗi con trỏ bao gồm số hiệu trang và offset trong trang, cho phép xác định cặp trang cần truy xuất Mô hình đồ thị được xây dựng từ các cặp này nhằm tối ưu kích thước bộ nhớ đệm và giảm thiểu lượng truy xuất lại trang dữ liệu Ví dụ, trong Hình 3.1, chúng ta xác định lượng bộ nhớ đệm cần thiết cho hai dãy truy xuất trang, với mỗi trang được truy xuất tối đa một lần Qua đó, việc tìm về một trang tại một thời điểm và lưu trữ các bộ tham gia vào nối giúp tránh truy cập lại trang Trong Hình 3.1, với trình tự truy xuất như trong Hình 3.2a, yêu cầu lưu trữ tối đa 2 bộ, trong khi với dãy truy xuất ở Hình 3.2b, chỉ cần lưu trữ tối đa 1 bộ.
Hình 3 1 Quan hệ với các bộ tham gia nối
Hình 3 2 Hai dãy truy xuất trang dữ liệu của hình 3.1
3.1.2 Mô hình đồ thị kết nối trang
Hai trang được gọi là kết nối khi một bộ ở trang này được nối với một bộ ở trang kia, được thể hiện trong đồ thị dưới dạng một cạnh giữa hai nút Khi hai trang kết nối, sẽ xuất hiện một cạnh trong đồ thị giữa hai nút tương ứng Tất cả các kết nối của các trang dữ liệu trong thao tác nối được biểu diễn bởi đồ thị kết nối trang (page connectivity graph) Ví dụ, với quan hệ nối như trong Hình 3.1, ta có thể xây dựng đồ thị kết nối trang với hai thành phần như thể hiện trong Hình 3.3.
Hình 3 3 Đồ thị kết nối trang của CSDL trong hình 3.1
Tập hợp của tất cả các trang trong đồ thị kết nối trang đơn được gọi là tập trang
Việc nối đơn giữa các tập trang là cần thiết, vì các tập này là độc lập và chỉ có thể kết nối các bộ trong cùng một tập Do đó, để tối ưu hóa hiệu suất, chúng ta chỉ cần lưu trữ tối đa các trang của từng tập trong bộ nhớ đệm, giúp giảm thiểu việc truy xuất lại trang.
Các thí nghiệm đã được thực hiện để đo kích thước của các tập trang với các hệ số chọn khác nhau Hệ số chọn là tỷ lệ giữa số bộ trong quan hệ được nối và tổng số bộ của các quan hệ tham gia nối Trong các thí nghiệm này, mỗi quan hệ có 500 trang, với giả định rằng mỗi trang chứa
Chúng tôi đã chọn ngẫu nhiên 100 bộ nối từ từ các trang của mỗi quan hệ mà không quan tâm đến việc trùng lặp các bộ trong các thí nghiệm.
Số trang trong các tập
Trung bình Lệch chuẩn Chú thích
0.1 1 1000 0 một tập trang có kích thước là 75, 148 tập có kích thước nhỏ hơn 27 Một tập trang có kích thước 2, và tập khác có kích thước là 990
Hình 3 4 Quan hệ giữa kích thước tập trang và hệ số chọn
Kết quả thí nghiệm trong Hình 3.4 cho thấy khi hệ số chọn là 0.001, chỉ có 2 trang trong mỗi tập trang Tuy nhiên, khi hệ số chọn tăng, kích thước của các tập trang cũng gia tăng, dẫn đến việc các tập có số lượng trang lớn sẽ được hợp nhất thành những tập lớn hơn Điều này đồng nghĩa với việc số lượng tập trang giảm nhưng mỗi tập lại có kích thước lớn hơn Nguyên nhân là do xác suất hai tập lớn nhập lại với nhau tăng nhanh khi hệ số chọn tăng, và khi hai tập này hợp lại, xác suất để các tập kết quả nhập lại với nhau cũng cao hơn Cụ thể, khi hệ số chọn là 0.01, chỉ có 1 tập trang có kích thước 75 và 148 tập khác có kích thước nhỏ hơn 27; còn khi hệ số chọn là 0.05, chỉ có hai tập trang với kích thước 990 và 2.
Một lợi ích của việc sử dụng tập trang nhỏ là chỉ cần lưu trữ các trang trong tập này để thực hiện nối, mà không cần truy cập lại các trang Đối với tập trang lớn hơn, chúng ta có thể chia nhỏ chúng thành các tập nhỏ hơn bằng cách phân hoạch đồ thị kết nối trang thành các đồ thị con.
Thay vì lưu trữ toàn bộ các trang của tập trang trong bộ nhớ đệm, chúng ta có thể giảm kích thước bộ nhớ đệm bằng cách chỉ lưu trữ các bộ liên quan của các trang Kích thước bộ nhớ đệm giờ đây sẽ phụ thuộc vào số lượng bộ cần thiết để lưu trữ Lược đồ bộ nhớ đệm dựa trên việc lưu trữ trang hiện tại sẽ được thảo luận ở phần sau.
3.1.3 Xác định cận trên của kích thước bộ nhớ đệm
Chúng ta nghiên cứu lược đồ truy xuất trang, trong đó mỗi trang dữ liệu chỉ được truy xuất một lần và lưu trữ các bộ liên quan vào bộ nhớ đệm cho đến khi các bộ tương ứng trong các trang khác được truy xuất Kích thước bộ nhớ đệm cần thiết phụ thuộc vào trình tự truy cập trang dữ liệu, và chúng ta sẽ xác định cận trên của bộ nhớ đệm dựa trên đồ thị kết nối trang Cận trên này cho thấy có ít nhất một dãy truy xuất trang cần lượng bộ nhớ đệm như vậy, trong khi không có trình tự nào cần nhiều hơn Đồ thị kết nối trang được giả định có thể chứa nhiều bộ của nhiều hơn một quan hệ, với các cạnh được đánh trọng số dựa trên số bộ nối giữa các trang Hình 3.5 minh họa đồ thị kết nối trang tổng quát, trong đó trang 1 có n1 bộ và nối với n1 bộ của trang 2 Các thuật toán xác định bộ nhớ đệm cần thiết để thực hiện nối mà không cần truy xuất lại trang sẽ được giới thiệu trong phần tiếp theo.
Hình 3 5 Một đồ thị kết nối trang tổng quát
Đồ thị kết nối trang được định nghĩa là một đồ thị vô hướng G(N,E,w), trong đó N là tập hợp hữu hạn các nút, E là tập hợp hữu hạn các cạnh, và w là hàm trọng số trên các cạnh Hình 3.6 minh họa giá trị lát cắt biểu diễn lượng bộ nhớ đệm cần thiết.
Bộ nhớ đệm cần thiết được xác định là giá trị lát cắt của đồ thị G, trong đó lát cắt được hiểu là hai tập nút rời nhau A và B sao cho A∪B= N Giá trị của lát cắt chính là tổng trọng số của các cạnh nối giữa các nút trong A và các nút trong B.
Mệnh đề 1 Giá trị của một lát cắt biểu diễn lượng bộ nhớ đệm cần thiết khi tất cả các nút của một tập con được tìm về [9]
Trong Hình 3.6 hai tập con của lát cắt là {1,2} và {3,4,5}, cho giá trị của lát cắt là
14, tức là sẽ có nhiều bộ cần phải được lưu trữ trong bộ nhớ mỗi khi các trang 1,2 hoặc các trang 3,4,5 được tìm về
Mệnh đề 2 chỉ ra rằng lát cắt có giá trị lớn nhất sẽ xác định cận trên nhỏ nhất cho kích thước bộ nhớ đệm Điều này cho thấy rằng tồn tại ít nhất một dãy truy xuất trang yêu cầu bộ nhớ đệm có dung lượng tương ứng.
Một số phương án tiếp cận xử lý nối phân tán khác
3.2.1 Sử dụng thông tin phụ thuộc vị trí (placement dependency) để thực hiện nối [7]
Xét nối tự nhiên giữa hai quan hệ R1 và R2 trên thuộc tính chung A với giả thiết chúng được phân mảnh, phương án nối được đề xuất là (F 11 >< A Rj>< B Rk =∪ F is >< A F js >< B F ks với s là các trạm chứa các mảnh của
Các thao tác nối các mảnh có thể thực hiện cục bộ mà không cần truyền dữ liệu, mang lại kết quả hiệu quả và nhanh chóng.
(Ri>< A Rj>< B Rk s , t F is >< A F js >< B F kt
(∪ s F is >< A F js >< B F ks ∪ ∪ s , t ≠ s F is >< A F js >< B F kt
Trong bài viết này, chúng ta nhận thấy rằng thao tác nối cuối cùng trên thuộc tính B luôn cho giá trị rỗng do tính chất của phụ thuộc vị trí Điều này cho phép Rj>< A Rj>< B Rk được xử lý mà không cần truyền dữ liệu Giả sử truy vấn Q chứa câu truy vấn con Q’ và thực hiện nối Rj>< B Rk, với Rj là quan hệ kết quả từ Q’ và Rk không nằm trong Q’ Nếu thao tác nối của Q’ được xử lý mà không cần truyền dữ liệu và có phụ thuộc vị trí của Rj và Rk trên thuộc tính B (hoặc tập con của B), thì thao tác nối của truy vấn có thể được tiến hành mà không cần truyền dữ liệu.
Dựa trên các nhận xét đã nêu, chúng tôi phát triển một thuật toán nhằm xác định các thao tác nối có thể thực hiện mà không cần truyền dữ liệu.
R = {R1, R2, , Rn} là tập hợp các quan hệ được dẫn xuất từ truy vấn Q P đại diện cho thông tin về phụ thuộc vị trí S là tập hợp lớn nhất các thao tác nối có thể thực hiện mà không cần truyền dữ liệu Bắt đầu với S = φ, nếu kết thúc mà S = R, thì Q có thể thực hiện mà không cần truyền dữ liệu.
Nếu tồn tại cặp quan hệ Ri và Rj ∈ R mà có sự phụ thuộc vị trí trên thuộc tính A nào đó, và R i >< C Rj, với C chứa A, thì hãy đưa Ri và Rj vào tập S.
If không tìm thấy cặp quan hệ nào như vậy then
Thuật toán kết thúc với S=φ;
While (còn quan hệ Rk trong R nhưng không nằm trong S thỏa mãn tính chất ** )
If S =R then Q có thể được xử lý mà không cần truyền dữ liệu
Để đưa Rk vào S, cần thiết phải có quan hệ Rj trong S, sao cho giữa Rj và Rk tồn tại phụ thuộc vị trí trên thuộc tính B nào đó Điều này đảm bảo rằng Rj phải có mối liên hệ với B, trong khi Rk cũng được xác định trong ngữ cảnh này.
Q hoặc có thể được suy ra từ Q
Cho truy vấn R1>< A R2>< B R3>< C R4 Giả sử ta có phụ thuộc vị trí như sau:
R2 và R3 trên thuộc tính B R3 và R4 trên thuộc tính C
Khởi đầu, S là rỗng Sau khi thực hiện câu lệnh if đầu tiên, R1 và R2 sẽ được thêm vào S Tiếp theo, R3 cũng được đưa vào S do có sự phụ thuộc vị trí giữa R2 và R3.
R3 trên thuộc tính B Tiếp tục như vậy cuối cùng ta đưa được R4 vào trong S Và vì
S= >< A >< B >< C nên truy vấn có thể được xử lý mà không cần truyền dữ liệu
3.2.2 Thuật toán phân mảnh và nhân bản [7]