Hỡnh 2 .3 Mụ phỏng quan hệ giữa cỏc đỉnh
Hỡnh 2.6 Cỏc kiểu phõn đoạn của một quan hệ
- Sự phõn đoạn ngang:
+ Sự phõn đoạn ngang trực tiếp: Phõn đoạn ngang trực tiếp là sự phõn hoạch một quan hệ thành cỏc tập con cỏc bộ, mỗi tập con được xỏc định bởi một phộp chọn được ỏp dụng cho quan hệ.
Giả sử cỏc nhà cung cấp hoặc ở Hà nội, hoặc ở TP HCM (khụng cú giỏ trị null). Khi đú quan hệ NHACC được phõn đoạn ngang như sau:
NHACC1 = THANHPHO = “Hà nội” NHACC NHACC2 = THANHPHO = “TP HCM” NHACC
Sự phõn đoạn ngang này thoả món đầy đủ cả 3 điều kiện.
Điều kiện đầy đủ: Bất kỳ một bộ nào của quan hệ NHACC sẽ thuộc vào quan hệ NHACC1 hoặc quan hệ NHACC2.
Điều kiện xõy dựng lại: ta luụn cú NHACC = NHACC1 NHACC2
Điều kiện tỏch rời: ta luụn cú NHACC1 NHACC2 =
Sự phõn đoạn ngang tạo thuận lợi cho việc xử lý phộp chọn liờn quan tới cỏc thuộc tớnh trong định nghĩa cỏc đoạn, giới hạn số đoạn phải truy cập. Chẳng hạn, việc chọn cỏc nhà cung cấp ở Hà nội chỉ cần hướng tới đoạn NHACC1.
+ Sự phõn đoạn ngang giỏn tiếp (Phõn đoạn ngang dẫn xuất): Phõn đoạn ngang giỏn tiếp là sự phõn hoạch một quan hệ thành cỏc tập con cỏc bộ, mỗi tập con được xỏc định bởi một phộp nửa kết nối của một quan hệ với mỗi đoạn của một quan hệ khỏc.
Vớ dụ: Với quan hệ CUNGCAP(MANCC, MATB, MADV, SOLUONG) Giả sử quan hệ NHACC đó được phõn đoạn ngang thành NHACC1, NHACC2.
Khi đú quan hệ CUNGCAP cũng được phõn đoạn ngang theo quan hệ NHACC, bằng cỏch sử dụng phộp nửa kết nối của quan hệ CUNGCAP với cỏc đoạn NHACC1, NHACC2 của quan hệ NHACC. Ta cú:
CUNGCAP1 = CUNGCAP NHACC1 CUNGCAP2 = CUNGCAP NHACC2
Chỳ ý:
Việc bố trớ trờn cựng một trạm mỗi cặp đoạn (NHACC1, CUNGCAP1), (NHACC2, CUNGCAP2) cho phộp cải tiến hiệu năng của phộp kết nối cỏc quan hệ NHACC và CUNGCAP vỡ cú thể thực hiện song song cỏc phộp kết nối:
- Sự phõn đoạn dọc:
Phõn đoạn dọc là sự phõn hoạch một quan hệ thành cỏc tập cỏc bộ con, mỗi tập được xỏc định bởi một phộp chiếu được ỏp dụng cho quan hệ.
Để thoả món điều kiện xõy dựng lại, cỏc đoạn dọc đều phải chứa khoỏ chớnh của quan hệ tổng thể. Khi đú việc xõy dựng lại quan hệ tổng thể cú được nhờ vào phộp kết nối cỏc đoạn theo cỏc thuộc tớnh chung (khoỏ chớnh của quan hệ tổng thể).
Do việc cỏc đoạn dọc đều chứa cỏc thuộc tớnh chung nờn sự phõn đoạn dọc vi phạm điều kiện tỏch rời.
Vớ dụ: Với quan hệ NHANVIEN(MANV, HOTEN, LUONG, THUE, MADV, MAQL) ta phõn đoạn dọc quan hệ NHANVIEN theo hai lĩnh vực ứng dụng (trong tài chớnh và trong cụng việc) thành cỏc đoạn dọc:
NHANVIEN1 = MANV, HOTEN, LUONG, THUE NHANVIEN NHANVIEN2 = MANV, MADV, MAQL NHANVIEN
Khi đú hai đoạn dọc NHANVIEN1 và NHANVIEN2 thoả món điều kiện xõy dựng lại.
NHANVIEN = NHANVIEN1 NHANVIEN2
trong đú ký hiệu phộp kết nối tự nhiờn theo thuộc tớnh chung MANV. Sự phõn đoạn dọc tạo thuận lợi cho việc xử lý phộp chiếu liờn quan tới cỏc thuộc tớnh được dựng trong việc định nghĩa cỏc đoạn theo lĩnh vực ứng dụng, bằng cỏch giới hạn số đoạn phải truy cập. Chẳng hạn, để tỡm lương và thuế của cỏc nhõn viờn chỉ cần hướng tới đoạn NHANVIEN1.
- Sự phõn đoạn hỗn hợp (kết hợp phõn đoạn ngang và phõn đoạn dọc): Phõn đoạn hỗn hợp là sự phõn hoạch một quan hệ thành cỏc tập con cỏc bộ con. Cỏc bộ con được xỏc định bởi sự phõn đoạn dọc, cũn cỏc tập con được xỏc định bởi sự phõn đoạn ngang.
Phõn đoạn hỗn hợp cho phộp tối ưu hoỏ cỏc cõu hỏi chọn-chiếu hay kết nối- chiếu. Việc xỏc định cỏc đoạn hỗn hợp phức tạp hơn vỡ nú dựa trờn sự hợp thành của cỏc phộp chọn hay kết nối với cỏc phộp chiếu.
Vớ dụ: Với quan hệ NHANVIEN(MANV, HOTEN, LUONG, THUE, MADV, MAQL) ta phõn đoạn hỗn hợp quan hệ NHANVIEN thành cỏc đoạn:
NHANVIEN1 = MANV, HOTEN, LUONG, THUE NHANVIEN NHANVIEN2 = MADV 5 (MANV, MADV, MAQL NHANVIEN) NHANVIEN3 = MADV > 5 (MANV, MADV, MAQL NHANVIEN)
Sự phõn đoạn này cú thể được xem như việc định nghĩa hai đoạn: một đoạn bờn trong NHANVIEN1 và một đoạn trung gian lại được phõn đoạn thành hai đoạn bờn trong NHANVIEN2, NHANVIEN3.
Điều kiện xõy dựng lại được thoả món, ta cú:
NHANVIEN = NHANVIEN1 (NHANVIEN2 NHANVIEN3)
Nhõn bản và cấp phỏt dữ liệu.
Việc nhõn bản nhằm nõng cao khả năng sẵn sàng của dữ liệu. Mức nhõn bản cao nhất là nhõn bản toàn bộ dữ liệu, tức là tại tất cả cỏc trạm của hệ thống phõn tỏn đều được nhõn bản toàn bộ CSDL. Phương ỏn này cho phộp chỉ cần một trạm làm việc thỡ hệ thống cú thể hoạt động, tuy nhiờn hệ thống sẽ bị ảnh hưởng đỏng kể tới tốc độ trong quỏ trỡnh cập nhật dữ liệu.
Mức nhõn bản thấp nhất là khụng nhõn bản, khi đú mỗi đoạn chỉ được lưu trữ trờn một trạm, hệ thống sẽ tốn nhiều chi phớ truyền dữ liệu trong quỏ trỡnh truy cập.
Mức nhõn bản hay sử dụng nhất là nhõn bản từng phần, tuỳ từng ứng dụng cụ thể ta cú thể nhõn bản cỏc đoạn tại những trạm thớch hợp, khi đú hệ thống sẽ hoạt động hiệu quả hơn.
Mỗi đoạn hay mỗi bản sao của đoạn phải được cấp phỏt vào một trạm cụ thể nào đú trong hệ thống phõn tỏn. Quỏ trỡnh đú được gọi là cấp phỏt dữ liệu. Việc chọn vị trớ để cấp phỏt dữ liệu và mức nhõn bản phụ thuộc vào hiệu suất và khả năng sẵn sàng của hệ thống, ngoài ra cũn phụ thuộc vào loại và tần suất của cỏc giao dịch tại mỗi trạm. Chẳng hạn, nếu như yờu cầu tớnh sẵn sàng cao, việc giao dịch cú thể thực hiện tại bất kỳ trạm nào và cỏc giao dịch chủ yếu là truy xuất dữ liệu, thỡ
việc nhõn bản toàn bộ CSDL là một lựa chọn tốt. Tuy nhiờn để tỡm phương ỏn tối ưu, hoặc một phương ỏn tốt cho việc phõn bổ dữ liệu phõn tỏn là một bài toỏn khú.
Cho một tập cỏc đoạn R={R1, R2, ..., Rn} và một mạng bao gồm cỏc trạm S={S1, S2, ..., Sm} trờn đú cú một tập cỏc ứng dụng Q={Q1, Q2, ..., Qp} đang chạy. Bài toỏn cấp phỏt dữ liệu là tỡm một phõn phối “tối ưu” của R cho S. Một trong cỏc điểm quan trọng cần được thảo luận là khỏi niệm về tớnh tối ưu.
Tớnh tối ưu cú thể được định nghĩa ứng với hai độ đo:
- Chi phớ nhỏ nhất: đú là chi phớ lưu mỗi đoạn tại một trạm, chi phớ vấn tin, chi phớ cập nhật, chi phớ truyền dữ liệu. Bài toỏn cấp phỏt dữ liệu cố gắng xõy dựng một lược đồ cấp phỏt với chi phớ nhỏ nhất.
- Hiệu năng: cỏc chiến lược cấp phỏt luụn hướng tới tiờu chớ hạ thấp nhất thời gian đỏp ứng và tăng tối đa lưu lượng hệ thống tại mỗi trạm.
Cỏc chiến lược cấp phỏt để tối ưu theo hai thụng số này luụn là bài toỏn khú.
2.3.2 Một số nguyờn lý chung của tối ƣu hoỏ cõu hỏi.
Thành cụng của cụng nghệ CSDL quan hệ trong việc xử lý dữ liệu là do tớnh dễ dựng của ngụn ngữ phi thủ tục SQL. Nhờ che dấu cỏc chi tiết cấp thấp về tổ chức vật lý của dữ liệu, cỏc ngụn ngữ CSDL quan hệ đó cho phộp biểu diễn được cỏc cõu truy vấn phức tạp một cỏch chớnh xỏc và đơn giản. Để cú cõu trả lời cho một cõu truy vấn, người sử dụng khụng cần phải xỏc định thứ tự tiến hành cỏc phộp toỏn. Việc này sẽ do bộ xử lý truy vấn thực hiện, đồng thời nú cũng thực hiện tối ưu hoỏ cõu truy vấn.
Việc xử lý, tối ưu hoỏ truy vấn cú tầm ảnh hưởng quan trọng tới hiệu năng xử lý dữ liệu của hệ thống, do vậy nú nhận được sự quan tõm trong cả mụi trường tập trung lẫn phõn tỏn. Tuy nhiờn bài toỏn xử lý truy vấn trong mụi trường phõn tỏn phức tạp hơn rất nhiều, do cú nhiều yếu tố ảnh hưởng đến hiệu năng của cỏc truy vấn phõn tỏn. Chẳng hạn, như việc quan hệ cú mặt trong cõu truy vấn cú thể bị phõn đoạn hay nhõn bản ở nhiều trạm, do vậy hệ thống phải tiờu tốn thờm chi phớ truyền thụng trong việc xử lý truy vấn, hay việc cú nhiều trạm phải truy xuất nờn thời gian đỏp ứng cú thể là chậm.
2.3.2.1 Mục tiờu của bài toỏn xử lý truy vấn [7].
Bộ xử lý truy vấn cú nhiệm vụ phõn tớch, biến đổi cỏc cõu truy vấn cấp cao (ở dạng cỏc phộp tớnh quan hệ) thành một cõu truy vấn tương đương ở cấp thấp hơn (dạng đại số quan hệ).
Với cõu truy vấn cấp thấp này việc cài đặt cỏc chiến lược thực thi sẽ được thực hiện. Việc biến đổi cõu truy vấn phải đỏp ứng được cả tớnh đỳng đắn, lẫn tớnh hiệu quả. Một biến đổi được coi là đỳng đắn nếu cõu truy vấn cấp thấp cho cựng một kết quả như cõu truy vấn cấp cao. Việc đưa ra được một chiến lược thực thi thớch hợp để đạt được tớnh hiệu quả lại là một bài toỏn khú. Một cõu truy vấn cấp cao cú thể được biến đổi thành nhiều cõu truy vấn cấp thấp tương đương, và mỗi chiến lược thực thi này lại tiờu tốn tài nguyờn hệ thống rất khỏc nhau. Việc khú khăn là phải tỡm ra một chiến lược nhằm hạ thấp tối đa việc tiờu dựng tài nguyờn.
Vớ dụ: Xột CSDL quan hệ “Cung cấp thiết bị cho một cụng ty”
Với cõu truy vấn “ Tỡm mó số cỏc nhà cung cấp đó cung cấp thiết bị cho cỏc đơn vị ở Miền bắc”
SELECT MANCC
FROM DONVI, CUNGCAP
WHERE DONVI.MADV = CUNGCAP.MADV AND MIEN = ”Miền bắc” 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:
MANCC(MIEN = ”Miền bắc” DONVI.MADV = CUNGCAP.MADV(DONVI x CUNGCAP)) Hoặc:
MANCC(CUNGCAP (MIEN = ”Miền bắc” (DONVI)))
Trong biểu thức đại số thứ hai khụng cú chứa tớch Descartes nờn sẽ tiờu tốn ớt tài nguyờn hơn nờn sẽ được giữ lại để sử dụng. Trong mụi trường tập trung, chiến lược thực thi truy vấn cú thể được diễn tả chớnh xỏc bằng một mở rộng của đại số quan hệ. Nhiệm vụ chớnh của bộ xử lý truy vấn trong mụi trường tập trung là phải chọn ra một cõu truy vấn dạng biểu thức đại số tốt nhất trong cỏc cõu truy vấn tương đương. Đõy là một bài toỏn phức tạp khi số lượng cỏc quan hệ lớn, nờn núi chung là
Trong mụi trường phõn tỏn, cỏc biểu thức đại số quan hệ khụng đủ diễn tả cỏc chiến lược thực thi. Nú phải được bổ sung thờm cỏc phộp toỏn trao đổi dữ liệu giữa cỏc trạm. Cựng với việc chọn cỏc phộp toỏn đại số quan hệ, thỡ bộ xử lý truy vấn phõn tỏn cũng phải chọn cỏc trạm tốt nhất để xử lý dữ liệu. Do vậy việc tỡm ra lời giải cho bài toỏn chiến lược thực thi trở nờn khú khăn hơn nhiều.
Việc quan trọng của xử lý truy vấn là vấn đề tối ưu hoỏ. Trong cỏc chiến lược thực thi (kết quả của quỏ trỡnh biến đổi) thỡ một chiến lược sử dụng cỏc tài nguyờn của hệ thống tối ưu nhất sẽ được giữ lại.
Chỉ số đỏnh giỏ mức sử dụng hệ thống là tổng chi phớ được tớnh toỏn như sau:
Tổng chi phớ = Chi phớ xuất nhập + chi phớ CPU + chi phớ truyền.
Trong đú:
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 dữ liệu.
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.
Chi phớ truyền: là chi phớ / thời gian truyền thụng cần thiết cho việc trao đổi dữ liệu giữa cỏc trạm tham gia cõu hỏi.
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).
Trong mụi trường tập trung chi phớ xuất nhập và chi phớ CPU là hai yếu tố được đề cập đến khi tớnh toỏn chi phớ của cõu truy vấn. Trong mụi trường phõn tỏn yếu tố truyền thụng sẽ được quan tõm đến nhiều hơn, do giả thiết rằng chi phớ truyền thụng lớn hơn rất nhiều chi phớ xử lý cục bộ. Tuy nhiờn, trờn thực tế thỡ cỏc nghiờn cứu gần đõy đều xem xột đến việc tổ hợp của cả ba yếu tố trờn bởi vỡ chỳng đều cú giỏ trị đỏng kể trong tổng chi phớ ước lượng của cõu truy vấn.
2.3.2.2 Độ phức tạp của cỏc phộp toỏn đại số quan hệ.
Ta thấy rằng, kết quả của việc xử lý truy vấn được biểu diễn bằng một biểu thức đại số quan hệ. Do đú độ phức tạp của phộp toỏn đại số quan hệ cú sự ảnh
hưởng trực tiếp đến thời gian xử lý. Biết rừ độ phức tạp của phộp toỏn đại số quan hệ sẽ rất cú lợi trong việc lựa chọn cõy thực thi.
Độ phức tạp của phộp toỏn đại số quan hệ được định nghĩa đơn giản nhất là theo lực lượng của quan hệ, nú độc lập với việc cài đặt vật lý như phõn đoạn và cấu trỳc lưu trữ dữ liệu. Bảng sau sẽ cho ta thấy độ phức tạp của cỏc phộp toỏn đại số quan hệ. Phộp toỏn Độ phức tạp - Chọn - Chiếu (khụng loại bỏ trựng lặp) O(n) - Chiếu (loại bỏ trựng lặp) - Gộp nhúm O(n * log n) - Nối - Nửa nối - Chia - Cỏc phộp toỏn tập hợp O(n * log n) - Tớch Descartes O(n2)
Dựa vào bảng so sỏnh này ta cú thể đưa ra kết luận sau: Trước hết độ phức tạp cú tớnh tương quan so với lực lượng của quan hệ, phộp chọn làm giảm đi lực lượng của quan hệ cần phải thực hiện trước. Thứ hai cỏc phộp toỏn được sắp xếp theo độ phức tạp tăng dần để trỏnh thực hiện tớch Descartes, hay tớch Descartes để thực hiện sau.
2.3.2.3 Mụ tả bộ xử lý truy vấn.
Trong việc xử lý truy vấn trờn cỏc hệ CSDL thỡ ngụn ngữ sử dụng chủ yếu được biểu diễn dựa trờn cỏc phộp tớnh quan hệ, và trong quỏ trỡnh phõn ró cõu truy vấn thỡ chỳng được chuyển thành cỏc phộp tớnh đại số quan hệ. Trong mụi trường phõn tỏn thỡ ngụn ngữ đầu ra (output) được sử dụng chớnh là một dạng của đại số
communication primitive). Cỏc phộp toỏn này được cài đặt trực tiếp trong hệ thống. Việc xử lý truy vấn phải là sự ỏnh xạ hiệu quả từ ngụn ngữ đầu vào (input) thành ngụn ngữ đầu ra. Việc tối ưu hoỏ truy vấn là nhằm chọn ra được một chiến lược thực thi hiệu quả nhất trong khụng gian cỏc lời giải. Thụng thường khụng gian lời giải là rất lớn, nờn việc tỡm ra được lời giải tối ưu lại cú thể phải tiờu tốn rất nhiều thời gian và tài nguyờn hệ thống. Chi phớ cao cho việc tỡm lời giải tối ưu làm cho việc tối ưu hoỏ truy vấn cú ý nghĩa khi chỉ phải trả chi phớ một lần tối ưu hoỏ cho nhiều lần thực hiện cõu truy vấn đú. Khi đú chiến lược vột cạn thường được sử dụng [Selinger etal, 1979].
Nhằm làm giảm chi phớ cao cho tỡm kiếm vột cạn, cỏc chiến lược ngẫu nhiờn hoỏ đó được đề xuất như Iteractive Improvement [Swami,1989] và Stimulated Annealing [Ioannidis and Wong, 1987], để nhằm tỡm ra một giải phỏp tốt, khụng nhất thiết là tốt nhất, và trỏnh được chi phớ tối ưu hoỏ cao. Cú một cỏch khỏc hay được dựng để giảm chi phớ là dựng thuật giải heuristic, với tỏc dụng làm thu hẹp phạm vi tỡm kiếm. Một thuật giải heuristic quan trọng trong cỏc hệ phõn tỏn là thay cỏc nối bằng tổ hợp của cỏc nửa nối nhằm làm hạ thấp chi phớ truyền dữ liệu.
Tỏc giả 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 hoỏ 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 thành phộp kết nối:
phộp kết nối, đặc biệt là phộp kết nối bằng cú chi phớ thực hiện thấp hơn so với phộp tớch Descartes trờn cựng hai quan hệ. Nếu kết quả của tớch Descartes RxS là đối số của phộp chọn, và phộp chọn lại cú liờn quan đến phộp so sỏnh giữa cỏc thuộc tớnh của R và S thỡ ta đưa về phộp kết nối để giảm chi phớ.
Tổ hợp dóy cỏc phộp toỏn một ngụi như phộp chọn và phộp chiếu: Bất kỳ dóy cỏc phộp toỏn một ngụi cú kết quả phụ thuộc vào cỏc bộ của một quan hệ