Bài toán tối ƣu hóa

Một phần của tài liệu mô hình tối ưu hóa truy vấn hai pha trong cơ sở dữ liệu và ứng dụng (Trang 46 - 57)

4. Những nội dung nghiên cứu chính

2.2.3.Bài toán tối ƣu hóa

2.2.3.1. Giới thiệu bài toán

Để xét bài toán tối ƣu, chúng ta sẽ cho mỗi thuộc tính có thể sử dụng để phân mảnh ngang tại mỗi nút của cây toán tử là một màu của nút đó. Giả sử tập màu cần cho việc gán màu các thuộc tính là C.

Định nghĩa 2.2.3:

- Màu mỗi nút của cây truy vấn là thuộc tính sử dụng cho việc phân mảnh ngang dữ liệu tại nút đó.

- Cạnh (i,j) giữa nút i và nút j là cạnh đa màu nếu i và j có màu khác nhau. Trong cây truy vấn, các nút là toán tử cảm thuộc tính hoặc là quan hệ cơ sở xem nhƣ đã tô màu sẵn, còn các nút không tô màu còn lại chúng ta tự do ấn định màu.

NHANVIEN CHUYENMON

MANV hoten

NHANVIEN.LUONG <=3900000 CHUYENMON.TENCM = "KS. Cơ khí"

Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn

Trên mỗi cạnh e của câu truy vấn chúng ta gán một trọng số ce để biểu diễn cho chi phí phân mảnh ngang lại. Chi phí này chỉ đƣợc tính khi cạnh này là đa màu. Bài toán tối ƣu đƣợc phát biểu dƣới dạng bài toán tô màu (còn gọi là bài toán tô màu tối ƣu) nhƣ sau:

Cho cây truy vấn T = (V, E), gọi ce là trọng số của cạnh e E, giả sử một số nút trong V đƣợc tô màu trƣớc. Hãy tô màu cho các nút còn lại để cực tiểu hoá tổng trọng số của các cạnh đa màu.

Nhiều mô hình chi phí truyền thống đã cho biết cách thức ƣớc lƣợng kích thƣớc của các kết quả trung gian trong quá trình thực hiện tính toán. Trọng số ce của cạnh e E có thể ƣớc lƣợng bởi các hàm kích thƣớc này. Ở đây chúng ta không quan tâm đến cách thức ƣớc lƣợng các kết quả cũng nhƣ các hàm ƣớc lƣợng chi phí phân mảnh ngang lại. Giả sử rằng có một phƣơng pháp nào đó đƣợc sử dụng để ƣớc lƣợng trọng số các cạnh của cây truy vấn.

Ví dụ 2.2.6:

Giả sử ba quan hệ Anhvan, Ngavan, Phapvan đƣợc phân mảnh ngang trên các thuộc tính (màu) riêng biệt A, B, C.

Hình 2-6 a) trình bày cây truy vấn ”đếm các sinh viên học tiếng Anh nhƣng không học tiếng Nga và tiếng Pháp”.

Hình 2-6. Cây gốc và các phƣơng án tô màu: a) Cây truy vấn ban đầu,

b) Tô màu với chi phí 7,

c) Tô màu tối ƣu với chi phí 6.

Chi phí phân mảnh lại, chính là chi phí phép tô màu là tổng các cạnh có nét gián đoạn trong hình 2-6. Việc tô màu trong hình 2-6 b) đạt đƣợc bởi một thuật giải heuristic đơn giản là tránh phân mảnh lại những toán hạng có chi phí cao. Phép tô màu tối ƣu ở hình 2-6 c); ở đây UNION không đƣợc phân mảnh ngang trên các thuộc tính phân mảnh ngang của bất kỳ toán hạng nào của nó.

Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn COUNT EXCEPT C (Phapvan) (i) B (Ngavan) 2

a) Cây ban đầu Count Except Union A (Anhvan) B (Ngavan) C (Phapvan) 8 5 6 4 2 (ii) 4

b) Tô màu chi phí là 7 B (Ngavan) C (Phapvan) Union Except Count A (Anhvan) 2 4 5 6 8 COUNT A (Anhvan) UNION 8 4

c) Tô màu chi phí là 6 B (Ngavan) C (Phapvan) A (Anhvan) Union Except Count 8 4 2 6 5

Hình 2-6. Cây gốc và các phương án tô màu

Chi phí tô màu là tổng các cạnh đứt nét. Việc tô màu ở đây là sử dụng thuật giải Heuristic, chỉ đơn giản là tránh phân mảnh ngang lại những quan hệ có chi phí cao.

2.2.3.2. Cây nối tối ưu

Nhắc lại phép nối và cây nối:

Phép nối

Phép nối là dẫn xuất của tích Descartes. Cho hai quan hệ R và S, nối của R và S qua vị từ F ký hiệu là T = R FS là một quan hệ đƣợc tạo ra nhƣ sau:

Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn

T = R FS = F(R S) (adsbygoogle = window.adsbygoogle || []).push({});

Trong đó ký hiệu phép chọn, F là vị từ nối và là tích Descartes

Ví dụ 2.2.7: EMP EMP.TITLE = PAY.TITLEPAY Với F = (EMP.TITLE = PAY.TITLE) thì

EMP EMP.TITLE = PAY.TITLEPAY = F(EMP PAY)

Nối bằng

Nếu F chứa phép so sánh các giá trị của các thuộc tính là dấu bằng và khi đó chúng ta chiếu để bỏ bớt nhằm làm cho các thuộc tính này không xuất hiện hai lần trong kết quả.

Ví dụ 2.2.8: Chọn cơ sở dữ liệu nhƣ trong mục 2.1.1 NHANVIEN NHANVIEN.MANV = CANBO.MACB CANBO Với F = (NHANVIEN.MANV = CANBO.MACB) thì NHANVIEN NHANVIEN.MANV = CANBO.MACB CANBO = F(NHANVIEN CANBO)

Kết quả NHANVIEN NHANVIEN.MANV = CANBO.MACB CANBO

MANV HTENNV LUONG MACB HTENNV

A1 Phùng Tuấn Dũng 3900000 A1 Phùng Tuấn Dũng A3 Trần Việt Hùng 4000000 A3 Trần Việt Hùng A5 Trần Thị Lan 3950000 A5 Trần Thị Lan

Nối tự nhiên

Nối tự nhiên là một nối bằng của hai quan hệ trên một thuộc tính cụ thể, đặc biệt là trên các thuộc tính có cùng miền giá trị. Tuy nhiên, có điều rất khác biệt các thuộc tính đƣợc dùng để nối tự nhiên chỉ xuất hiện một lần trong kết quả. Nối tự nhiên đƣợc ghi nhƣ nối không có công thức:

R AS, trong đó A là thuộc tính chung cho cả R và S

Chú ý rằng thuộc tính nối tự nhiên có thể có tên khác nhau trong hai quan hệ; điều bắt buộc là chúng có cùng miền.

Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn

RB AS, trong đó A và B là thuộc tính tƣơng ứmg của S và R.

Ví dụ 2.2.9: NHANVIEN NHANVIEN.MANV = CHUYENMON.MANV CHUYENMON Với F = (NHANVIEN.MANV = CHUYENMON.MANV) thì

NHANVIEN NHANVIEN.MANV = CHUYENMON.MACB CHUYENMON = F(NHANVIEN CHUYENMON)

Kết quả NHANVIEN * CHUYENMON

MANV HTENNV LUONG TENCM

A1 Phùng Tuấn Dũng 3900000 KS. Cơ khí

A2 Nguyễn Văn Giáp 3850000 KS. Công nghệ thông tin A3 Trần Việt Hùng 4000000 KS. Điện

A4 Nguyễn Nguyệt Nga 2750000 CN. Kinh tế

A5 Trần Thị Lan 3950000 CN. Kinh tế quó tế

Nối nửa

Nối nửa của quan hệ R đƣợc định nghĩa trên tập thuộc tính A, với quan hệ S đƣợc định nghĩa trên tập thuộc tính B, là tập con các bộ của R có tham gia vào nối của R và S. Nối nửa đƣợc viết là:

R FS (trong đó F là vị từ) có thể thu đƣợc nhƣ sau:

R FS = A(R FS) = A(R) F A B(S) = R F A B(S)

Ƣu điểm của nối nửa là làm giảm số lƣợng các bộ cần phải xử lý để thực hiện nối.

Ví dụ 2.2.10:

Chẳng hạn quan hệ NHANVIEN(MANV, HTENNV, LUONG) còn quan hệ CHUYENMON(MANV, TENCM) thì (adsbygoogle = window.adsbygoogle || []).push({});

A = {MANV, HTENNV, LUONG}, B = {MANV, TENCM} và A B = (MANV). Nên quan hệ NHANVIEN NHANVIEN.MANV = CHUYENMON.MANV CHUYENMON có tập thuộc tính là A = { MANV, HTENNV, LUONG }

Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn

MANV HTENNV LUONG

A1 Phùng Tuấn Dũng 3900000 A2 Nguyễn Văn Giáp 3850000 A3 Trần Việt Hùng 4000000 A4 Nguyễn Nguyệt Nga 2750000 A5 Trần Thị Lan 3950000

Cây nối

Một cách tổng quát, cây nối là cây toán tử mà tất cả các nút (đỉnh) của nó chỉ có toán tử nối. Chẳng hạn, tìm tên và nhiệm vụ của các lập trình viên đã làm việc cho dự án CAD/CAM trong hơn ba năm.

Câu vấn tin bằng SQL nhƣ sau : SELECTS EMANE, RESP FROM EMP, ASG, PROJ

WHERE EMP.ENO = ASG.ENO AND ASG.PNO = PROJ.PNO AND PNAME = “CAD/CAM” AND DVR 36

AND TITLE = “Programmer”

Cây vấn tin cho câu vấn tin trên là hình 2-7, còn đồ thị nối trên hình 2-8.

RESP EMP.ENO = ASG.ENO ASG.PNO = PROJ.PNO PNAME = “CAD/CAM” ENAME TITLE = “Programmer” DUR 36 EMP RESULT EMP ASG PROJ Hình 2-7. Đồ thị vấn tin

Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn

ASG

EMP

EMP.ENO = ASG.ENO ASG.PNO = PROJ.PNO

PROJ

Hình 2-8. Cây nối của đồ thị vấn tin trên hình 2-7

Để thấy sự ảnh hƣởng của thứ tự nối đến chi phí phân mảnh ngang lại, chúng ta xét ví dụ sau:

Ví dụ 2.2.11:

Xét các quan hệ NHANVIEN (MSNV, TP), Kynang_nv (MSNV, MSKN) và Kynang (MSKN, TEN_KN) đƣợc phân mảnh ngang dựa vào thuộc tính gạch dƣới.

Câu truy vấn: Tìm các nhân viên sống ở Hà Nội và có kỹ năng "Lập trình".

SELECT N.MSNV

FROM NHANVIEN N, Kynang_nv KN, Kynang K

WHERE N.MSNV=KN.MSNV AND KN.MSKN=K.MSKN AND N.TP = "Hà Nội" AND K.TEN_KN = "Lập trình"

Hình 2-9a) và b) trình bày hai cây truy vấn khác nhau cho câu truy vấn trên. Chúng có thứ tự nối khác nhau cho nên chi phí phân mảnh ngang khác nhau.

(MSKN) (MSNV) NHANVIEN (MSNV) KYNANG (MSKN) (MSNV) (MSKN) NHANVIEN (MSNV) KYNANG_NV (MSNV) KYNANG (MSKN) a) b) KYNANG_NV (MSNV) a) b)

Hình 2-9. Ảnh hưởng của thứ tự phép nối đến chi phí phân mảnh ngang

Nếu điều kiện chọn K.TEN_KN = “Lập trình” có hệ số chọn cao thì truy vấn thứ hai có chi phí thấp do kích thƣớc kết quả trung gian KYNANG_NV

Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn

8a tránh đƣợc chi phí phân mảnh ngang lại quan hệ KYNANG_NV, chi phí này sẽ đáng kể nếu quan hệ KYNANG_NV có kích thƣớc lớn. Do đó thứ tự thực hiện các phép nối ảnh hƣởng đến chi phí phân mảnh ngang lại. (adsbygoogle = window.adsbygoogle || []).push({});

a. Thứ tự thực hiện nối bỏ qua các tính chất vật 1ý Định nghĩa 2.2.4

Cây nối là một cây truy vấn có chú giải, trong đó tất cả các đỉnh không phải là lá cũng không phải là nút gốc biểu diễn các phép nối và các nút lá biểu diễn các quan hệ cơ sở. Quan hệ cơ sở là quan hệ đƣợc lƣu trong CSDL (đƣợc lƣu trên đĩa), còn quan hệ trung gian là quan hệ đƣợc sinh ra từ phép toán quan hệ (không đƣợc lƣu trên đĩa)

Do phép nối có tính chất kết hợp và giao hoán nên chúng có thể đƣợc thực hiện theo bất kỳ thứ tự nào. Cho một cây truy vấn mà trong đó chỉ chứa các quan hệ toán hạng Tl, T2, ...,Tn và các phép toán chọn, chiếu, nối (còn gọi là cây truy vấn SPJ (Selection, Projection, Joint)). Bài toán xác định thứ tự phép nối cho cây truy vấn là bài toán tìm cây nối có chi phí thực hiện truy vấn ít nhất. Một cây nối sẽ cố định thứ tự các phép nối cũng nhƣ các chiến lƣợc thực hiện mỗi phép nối.

Chúng ta sẽ sử dụng ký pháp danh sách lồng nhau để biểu diễn cho cây toán tử. Chẳng hạn, cây toán tử ở hình 2-9b có thể ký hiệu bởi [s2, [sl, KYNANG, KYNANG_NV], NHANVIEN] nghĩa là [[KYNANG sl

KYNANG_NV] s2 NHANVIEN] và khi thay s1, s2 bởi các phép toán tƣơng ứng ta sẽ có cây toán tử tƣơng ứng.

Để đơn giản trƣớc tiên ta sẽ xem xét trƣờng hợp tô màu lại có chi phí bằng 0. Nói cách khác, các tính chất vật lý không ảnh hƣởng đến chi phí thực hiện truy vấn.

Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn

Trong đó s là phép nối.

Gọi OptPlan(Q) là chiến 1ƣợc tối ƣu thực hiện nhánh truy vấn Q của cây nối T.

Bổ đề dƣới đây suy từ công thức ƣớc tính chi phí nêu trên và ngụ ý rằng bất kỳ một cây truy vấn tối ƣu nào cũng đƣợc cấu thành từ những cây truy vấn con tối ƣu.

Bổ đề 2.2.1

Nếu OptPlan(Q) = [s, Tl, Tr]Q = Ql Qr thì OptPlan(Ql) = Tl

OPtPlan(Ql) = Tr, trong đó TlTr lần lƣợt là kết quả thu đƣợc từ nhánh truy

vấn QlQr.

Bổ đề này dẫn tới bài toán quy hoạch động sau:

Thuật toán 2.2.1. Thuật toán JO (Join Ordering).

Input: Câu truy vấn SPJ trên các quan hệ T = { Tl, T2,..., Tn }.

Output: Cây nối tối ƣu. Method: For1 i = 1 To n <OptPlan({Ti})=Ti> End for1 For2 i = 2 To n For3 <Từng Q T mà |Q| = i > <BestCost = >

For4 <Each Ql And Qr And Q = Qr Ql>

<Gọi Rsr và Rsl là các thống kê của các quan hệ đƣợc tính từ các truy vấn Qr và Ql>

0 nếu T là lá (quan hệ cơ sở)

StrategyCost(s, RLs, Rrs.)+Cost(TL )+Cost(Tr) nếu T:[s, TL , Tr]

Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn

For5 <Mỗi chiến lƣợc nối s>

If <StrategyCost(s, Rls, Rrs) < BestCost> Then <BestCost = StrategyCost(s, Rls, Rrs)> <OptPlan(Q)=[s,OptPlan(Ql),OptPlan(Qr)]> End if End for5 End for4 End for3 End for2

Thuật toán này có độ phức tạp O(3n). Do các kế hoạch thi hành cho tất cả các tập con của Q đƣợc đƣa vào vùng đệm và kế hoạch thi hành cho i quan hệ có chi phí tỉ lệ với i, do đó không gian yêu cầu của thuật toán là O(n2n).

b. Thứ tự thực hiện phép nối với các tính chất vật lý

Giả sử chiến lƣợc s yêu cầu màu đầu vào là cl' cr'. Giả sử kế hoạch con của cây con Tltạo thành quan hệ Rlvới màu cl(Rr và crcho kế hoạch cây con Tr)

Cost(T) =

Gọi Optc(Q, a) là chi phí của cây nối tối ƣu cho tập quan hệ Q để kết xuất có tính chất vật lý a. Gọi C là tập các tính chất vật lý a. (adsbygoogle = window.adsbygoogle || []).push({});

Bổ đề 2.2.2

Optc(Q, a) thỏa mãn hệ thức truy hồi sau:

Optc(Q, a) = minQl,Qr [ mins S [StrategyCost(s, Ql, Qr) + mina C[Optc(Ql,a) + recolor(Ql

s

, a, inpCol(s, a, 1))] + mina C[Optc(Qr, a) + recolor(Qr ' a, inpCol(s, a, 2))]]]

Trong đó, QlQr là tất cả các tập sao cho Q = Ql Qr, Ql Ø và

Qr Ø, S là tập tất cả các chiến lƣợc tạo nên tính chất vật lý a.

0 nếu T là nút lá

recolor(Rls, cl, cl') + recolor(Rrs, cr, cr')

+ StrategyCost(s, Rls, Rrs )+ Cost(Tl)+Cost(Tr) nếu T = [s, Tl, Tr]

Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn

Thuật toán 2.2.2. Thuật toán JOP (Join Ordering With Physical Properties)

Input: Câu truy vấn SPJ trên các quan hệ T = { Tl, T2,..., Tn }. Output: Cây nối tối ƣu.

Method

For i= 1 To n

Cost(Ti, a)=

End for

For1 i = 2 To n

For2 <Mỗi Q T sao cho |Q| = i>

<Đặt Optc(Q, a) = cho mỗi tính chất vật lý a C> For3 <Mỗi Ql và Qr sao cho Q = Qr Ql> <Đặt Rl

s

, Rr s

là các tính chất thống kê của các quan hệ đƣợc tính từ các truy vấn Ql, Qr>

For4 <Mỗi tính chất vật lý a C>

For5 <Mỗi chiến lƣợc S mà có thể tạo ra tính chất a> <Đặt scost=StrategyCost(s,Rls,Rrs) và đặt al' = inpCol(s, a, 1) và ar' = inpCol(s, a, 2)> „Chú ý rằng inpCol(s,a,j) là tính chất vật lý cho chiến lƣợc s với đầu vào thứ j để có tính chất vật lý ra là a

For6 <Với mỗi tính chất vật lý al C, ar C> <Đặt NewCost = scost + Optc(Ql, al) + recolor(Rl

s

, al, a'l)+ Optc(Qr, ar) + recolor(Rrs, ar, ar')>

If <NewCost < Optc(Q, a)> Then <Optc(Q, a) = NewCost>

0 nếu T có phƣơng pháp truy nhập với tính chất vật lý a (adsbygoogle = window.adsbygoogle || []).push({});

Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn <OptPlan(Q,a)={s,OptPlan(Ql, al), OptPlan(Qr, ar)}> Endif End for6 End for5 End for4 End for3 End for2 End for1

Return mina COptPlan(T, a);

Kết luận

Chúng ta có thể phân rã một truy vấn phức tạp thành nhiều truy vấn đơn giản loại SPJ, sau đó có thể nối các kết quả của các truy vấn đơn giản này thành kết quả cần tìm nhờ các phép toán tập hợp.

Một phần của tài liệu mô hình tối ưu hóa truy vấn hai pha trong cơ sở dữ liệu và ứng dụng (Trang 46 - 57)