CÁC PHÉP BIẾN ĐỔI ĐẠI SỐ QUAN HỆ

Một phần của tài liệu Tối ưu truy vấn cơ sở dữ liệu quan hệ và cơ sở dữ liệu phân tán bằng phương pháp Heuristic (Trang 61)

4.2.1 Biểu thức quan hệ

Biểu thức quan hệ là một biểu thức mà các toán hạng là một quan hệ trong một CSDL và các phép toán là các phép toán trong đại số quan hệ. Biểu thức E1 và E2 tƣơng đƣơng với nhau, kí hiệu E1  E2, nếu chúng biểu diễn cùng một ánh xạ, nghĩa là các quan hệ giống nhau trong biểu thức thì kết quả cũng giống nhau. Khi thực hiện các phép toán trong một biểu thức quan hệ, các phép toán một ngôi có thứ tự ƣu tiên cao hơn so với phép toán hai ngôi. Có thể xem phép chiếu

có những quy định riêng về thứ tự ƣu tiên. Ví dụ phép giao có thứ tự ƣu tiên trƣớc phép hợp hai quan hệ.

Mỗi biểu thức quan hệ thông thƣờng là một câu hỏi của ngƣời sử dụng, hay nói cách khác, ngƣời sử dụng thể hiện nội dung câu hỏi truy nhập thông qua một biểu thức quan hệ nào đó. Khi một câu hỏi đƣợc đƣa vào hệ thống thì hệ thống cần thực hiện một số các chức năng: kiểm tra biểu thức E; nếu biểu thức E không có lỗi thì thực hiện việc tối ƣu hoá quá trình thực hiện biểu thức E.

Việc tối ƣu hoá chính là xác định trật tự thực hiện các phép toán trong E nhằm đáp ứng các yêu cầu cho cùng kết quả cho việc thực hiện theo trật tự ban đầu của biểu thức E, giảm bớt đƣợc miền nhớ và thời gian thực hiện. Cuối cùng mới là thực hiện biểu thức đã đƣợc tối ƣu hoá E.

Khi các quan hệ càng nhỏ thì thời gian thực hiện các thao tác trên các quan hệ càng thấp. Quan hệ nhỏ hiểu theo nghĩa là kích cỡ và bậc của quan hệ nhỏ. Đối với các phép toán quan hệ thì phép chọn sẽ làm giảm kích cỡ chiều dọc, phép chiếu sẽ làm giảm kích thƣớc chiều ngang. Các phép toán này thƣờng hay đƣợc sử dụng trong các biểu thức quan hệ. Phép chia cũng có tác dụng làm nhỏ quan hệ nhƣng tần số sử dụng không nhiều. Ta nhận thấy rằng muốn tối ƣu hoá một biểu thức quan hệ, chuyển đổi thích hợp trật tự các phép toán quan hệ sao cho các phép chiếu, phép chọn có thể thực hiện càng sớm càng tốt và thực hiện phép kết nối càng muộn càng tốt.

4.2.2 Biến đổi tƣơng đƣơng của đại số quan hệ

Hai biểu thức đại số quan hệ đƣợc gọi là tƣơng đƣơng nếu trên một mô hình bất kỳ, hai biểu thức này tạo ra hai quan hệ có tập các bộ dữ liệu giống nhau. Giống nhau theo nghĩa thứ tự của các bộ không nhất thiết phải tƣơng ứng với nhau, có thể thứ tự khác nhau và thứ tự các thuộc tính cũng không nhất thiết phải nhƣ nhau. Nói một cách khái quát, hai quan hệ trùng nhau nếu hai bộ thuộc tính là nhƣ nhau và bộ dữ liệu của quan hệ này cũng là bộ dữ liệu của quan hệ kia và ngƣợc lại.

Các quy tắc sau đƣợc sử dụng để biến đổi các biểu thức tƣơng đƣơng : 1. c1 and c2 and …. cn (R) = c1(…(n-1(n(R)))…)

3. ds 1(ds 2(…(ds n(R))…) = ds1(R)

4. Nếu điều kiện C chỉ bao gồm các thuộc tính A1, A2, …, An trong danh sách chiếu thì

A1, A2, … An (c(R)) = c(A1, A2, … An (R))

Ví dụ:

NHANVIEN(MasoNV, Hoten, Ngaysinh, Diachi)

Hoten, Diachi (Diachi = „xx‟(NHANVIEN)) = Diachi=‟xx‟(Hoten, Diachi(R))

Hoten, Diachi (Ngaysinh = „...‟(NHANVIEN))  Ngaysinh = „...‟(Hoten, Diachi(R)) 5. R c S = S c R

R  S = S  R

6. c (R  S)

 Nếu C chỉ liên quan đến R thì c (R  S) = c (R)  S

 Nếu C chỉ liên quan đến S thì c (R  S) = R  c (S)

 Nếu C = C1 and C2 và C1 liên quan đến R, C2 liên quan đến S thì

c (R  S) = c1(R)  c2(S) 7. ds (R c S) = ds1(R) cds2(S)

Với ds = ds1  ds2 và ds1 là các thuộc tính của R, ds2 là các thuộc tính của S.

8.Các phép toán ,  có tính chất giao hoán. R  S = S  R, R  S = S  R

9. Gọi  là một trong 4 phép toán , , , ,  có tính kết hợp. ( R  S )  T = R  ( S  T )

4.3 THUẬT TOÁN HEURISTIC

Để mô tả thuật toán, sử dụng các cây truy vấn để biểu diễn các biểu thức đại số quan hệ. Cây truy vấn là một cây với mỗi nút lá là các quan hệ đƣợc lƣu trong CSDL, các đỉnh trong là các phép toán đại số quan hệ. Chuỗi các phép toán đi theo hƣớng từ lá đến gốc biểu thị cho kết quả truy vấn.

Biến đổi câu truy vấn phép tính quan hệ thành cây truy vấn có thể thu đƣợc bằng cách sau. Giả sử câu truy vấn cần tối ƣu đƣợc biểu diễn bằng câu lệnh SQL. Trƣớc tiên tạo ra các nút lá tƣơng ứng với mỗi quan hệ trong mệnh đề FROM của câu lệnh SQL. Thứ hai, tạo ra nút gốc nhƣ là một phép chiếu chứa các thuộc tính kết quả. Các thuộc tính này nằm trong mệnh đề SELECT của của câu truy vấn. Thứ ba, chuyển mệnh đề WHERE của câu truy vấn thành chuỗi các phép toán quan hệ thích hợp đi từ các nút lá đến gốc. Chuỗi này có thể đƣợc cho trực tiếp qua thứ tự xuất hiện của các vị từ và các toán tử.

Sau khi xây dựng cây truy vấn, thực hiện tối ƣu hoá theo các bƣớc biến đổi nhƣ sau:

1. Sử dụng quy tắc 1 biến đổi phép chọn thành một dãy các phép chọn.

2. Sử dụng các quy tắc 2, 4, 6, 10 về tính giao hoán của phép chọn, chuyển các phép chọn về các nhánh. (adsbygoogle = window.adsbygoogle || []).push({});

3. Sử dụng quy tắc 5 và 9 về tính giao hoán của các phép toán 2 ngôi để sắp xếp lại các nút lá của cây.

4. Sử dụng quy tắc về kết hợp phép chọn và tích Descartes, chuyển tích Descartes thành phép nối.

5. Sử dụng các quy tắc 4, 7, 11, 3 về kết hợp các phép chiếu và các phép giao hoán giữa phép chiếu và phép toán khác để đƣa phép chiếu về các lá hoặc thêm vào các phép chiếu mới để làm giảm kích thƣớc của các quan hệ.

6. Đối với CSDL phân tán, sau khi xây dựng đƣợc cây truy vấn tối ƣu, thực hiện đơn giản hoá biểu thức. Căn cứ vào các điều kiện phân đoạn để

chuyển các lá là các phép hợp, phép nối của các quan hệ hạn chế do phân đoạn quan hệ cơ sở, phân tích các điều kiện chọn, danh sách chiếu để loại bỏ các cây con trong đó có sự mâu thuẫn.

Nhận xét:

Thuật toán Heuristic thực hiện các phép chọn càng sớm càng tốt. Thƣờng các phép chọn chỉ quan tâm đến các bộ thoả mãn một điều kiện nào đó, nhƣ vậy có khả năng giảm bớt độ lớn của các quan hệ kết quả và cho phép sử dụng các chỉ số để truy nhập CSDL. Phép chiếu cũng nhƣ phép chọn, làm giảm kích cỡ của các quan hệ. Vì thế bất cứ lúc nào cần tạo ra một quan hệ tạm thời, có lợi thì áp dụng ngay phép chiếu nếu có thể.

4.4 VÍ DỤ TỐI ƢU HOÁ CÂU HỎI THEO HEURISTIC

Ví dụ 4.1: Cho CSDL với các quan hệ sau:

NHANVIEN(MSNV, TENNV, NGAYSINH, DIACHI, HSLUONG) DUAN( MSDA, TENDA, NSDA, DDDA)

PHANCONG (SNV, SDA, TGIAN) Yêu cầu: Tối ƣu hoá câu truy vấn sau: SELECT TENNV

FROM NHANVIEN, PHANCONG, DUAN

WHERE ( TENDA= „Aqurens‟)and (PHANCONG.SDA=DUAN.MSDA) and (PHANCONG.SNV=NHANVIEN.MSNV)and (HSLUONG >3);

Xây dựng cây truy vấn:

TENNV

(TENDA= „Aquarens‟)and (SDA=MSDA) and

(SNV=MSNV) and((HSLUONG>3) X

Bƣớc 1. Sử dụng quy tắc 1 biến đổi phép chọn thành một dãy các phép chọn TENNV (TENDA=„Aquarens‟) (SDA=MSDA) ( SNV=MSNV) ( HSLUONG>3) X DUAN X NHANVIEN PHANCONG

Bƣớc 2. Sử dụng quy tắc 2, 4, 6, 10 về tính giao hoán của phép chọn, chuyển phép chọn về các nhánh

Bƣớc 3. Sử dụng quy tắc 5 và 9 về tính giao hoán của các phép tính 2 ngôi để sắp xếp lại các nút lá của cây

TENNV (SDA=MSDA) X (TENDA= „Aquarens‟) DUAN X ( MSNV=SNV) (HSLUONG>3) NHANVIEN PHANCONG TENNV (SNV=MSNV) X (HSLUONG>3) NHANVIEN X ( MSDA=SDA)

Bƣớc 4. Sử dụng quy tắc về kết hợp phép chọn và tích Descartes chuyển tích Descartes thành phép nối TENNV  (SNV=MSNV) (HSLUONG>3) NHANVIEN (MSDA=SDA) (TENDA = „Aquarens‟) DUAN PHANCONG

Bƣớc 5. Sử dụng các quy tắc 4, 7, 11, 3 về kết hợp các phép chiếu và phép giao hoán giữa phép chiếu với các phép toán khác để đƣa phép chiếu về các lá hoặc thêm vào các phép chiếu mới để làm giảm kích thƣớc của các quan hệ tham gia vào phép nối.

Bƣớc 6. Giả sử rằng quan hệ NHANVIEN đƣợc phân đoạn ngang trong CSDL phân tán thành :

NHANVIEN1= HSLUONG ≤ 3 (NHANVIEN) NHANVIEN2= HSLUONG > 3(NHANVIEN)

Vì các bản ghi có HSLUONG>3 không có trong NHANVIEN1 nên kết quả là cây truy vấn đoạn sau :

TENNV  (SNV=MSNV) (HSLUONG>3) NHANVIEN ( MSDA=SDA) (TENDA = „Aquarens‟) DUAN PHANCONG MSNV, TENNV  MSDA SNV, SDA

Hoặc giả sử quan hệ NHANVIEN đƣợc phân đoạn dọc thành : NHANVIEN1= MSNV, TENNV, NGAYSINH (NHANVIEN) NHANVIEN2= MSNV, DIACHI, HSLUONG(NHANVIEN) (adsbygoogle = window.adsbygoogle || []).push({});

Vì thuộc tính MSNV, TENNV không nằm trong NHANVIEN2 nên kết quả là cây truy vấn đoạn nhƣ sau :

TENNV  (SNV=MSNV) (HSLUONG>3) NHANVIEN2 ( MSDA=SDA) (TENDA = „Aquarens‟) DUAN PHANCONG MSSN, TENNV  MSDA SNV, SDA

Ví dụ 4.2 : Cho CSDL với các quan hệ sau :

SINHVIEN(Masv, Hoten, Nsinh, Quequan, Lop) MONHOC(Mamh, Tenmh, Soht)

DIEMMH(Msv, Mmh, Diem) Yêu cầu: Tối ƣu hoá truy vấn sau: SELECT Hoten, Diem

FROM SINHVIEN, DIEMMH, MONHOC WHERE (SINHVIEN.Masv=DIEMMH.Msv) and

(DIEMMH.Mmh=MONHOC.Mamh) and (Lop=‟K11T2‟) and

TENNV  (SNV=MSNV) (HSLUONG>3) NHANVIEN1 ( MSDA=SDA) (TENDA = „Aquarens‟) DUAN PHANCONG MSSN, TENNV  MSDA SNV, SDA

Xây dựng cây truy vấn :

Bƣớc 1: Sử dụng quy tắc 1 biến đổi phép chọn thành một dãy phép chọn

(Mamh=Mmh) ( Diem<5) Hoten,Diem

(Lop=‟K11T2‟)and (Tenmh=‟CSDL‟)and

(Masv=Msv) and(Mamh=Mmh)and(Diem<5) X MONHOC DIEMMH X SINHVIEN Hoten,Diem (Lop=‟K11T2‟) (Tenmh=‟CSDL‟) ( Masv=Msv) MONHOC X X

Bƣớc 2: Sử dụng quy tắc về tính giao hoán của phép chọn để chuyển phép chọn về các nhánh Hoten,Diem (Mmh=Mamh) X (Tenmh=‟CSDL‟ ) MONHOC X ( Masv=Msv) SINHVIEN DIEMMH (Diem<5) (Lop=‟K11T2‟)

Bƣớc 3: Sử dụng các quy tắc về tính giao hoán của các phép tính hai ngôi để sắp xếp lại các nút lá của cây

TENNV (SDA=MSDA) X (TENDA= „Aquarens‟) DUAN X ( MSNV=SNV) (HSLUONG>3) NHANVIEN PHANCONG Hoten, Diem (Msv=Masv) X (Lop=‟K11T2‟) SINHVIEN X ( Mamh=Mmh) (Tenmh = „CSDL‟) MONHOC DIEMMH (Diem<5)

Bƣớc 4: Chuyển các phép tích Descartes thành phép nối Hoten,Diem (Tenlop=‟K11T2‟)  (Msv=Masv) SINHVIEN (Mamh=Mmh) (Tenmh=‟CSDL‟) MONHOC DIEMMH (Diem<5)

Bƣớc 5: Sử dụng các quy tắc về giao hoán giữa phép chiếu và các phép toán khác để đƣa phép chiếu về các lá hoặc đƣa phép chiếu mới vào để giảm kích thƣớc của các quan hệ tham gia vào phép nối.

Bƣớc 6: Giả sử quan hệ SINHVIEN đƣợc phân đoạn ngang theo Masv. Khi đó cây truy vấn đoạn đầy đủ sẽ có nhánh của phép chiếu Masv, Hoten là hợp của các phân đoạn ngang của quan hệ SINHVIEN. Căn cứ vào lƣợc đồ phân đoạn để xác

Hoten, Diem  (Msv=Masv) (Lop=‟K11T2‟) SINHVIEN (Mamh=Mmh) (Tenmh=‟CSDL‟) MONHOC DIEMMH  Mamh Masv, Hoten (Diem<5)

định lớp „K11T2‟ thuộc vào phân đoạn nào để giữ lại cây con có chứa các bản ghi có Lop=‟K11T2‟ và loại các cây con còn lại trong cây truy vấn tối ƣu.

4.5 KẾT LUẬN CHƢƠNG 4

Nói chung, một câu hỏi truy vấn có nhiều phƣơng pháp khác nhau để tính toán câu trả lời. Nhiệm vụ của hệ thống là chuyển đổi câu hỏi đƣợc đƣa vào bởi ngƣời sử dụng thành một câu hỏi tƣơng đƣơng mà có thể đƣợc tính toán một cách hiệu quả hơn. Quá trình tìm kiếm một chiến lƣợc tốt cho việc xử lý một câu hỏi đƣợc gọi là tối ƣu hoá câu hỏi. Chiến lƣợc đƣợc chọn để thực hiện một phép toán phụ thuộc vào kích thƣớc mỗi quan hệ và sự phân bố giá trị trong các thuộc tính của quan hệ. Bởi vậy có thể dựa vào thông tin thống kê cho mỗi quan hệ R. Những kết quả thống kê bao gồm:

- Số lƣợng các bộ trong quan hệ R

- Kích thƣớc byte của một bản ghi của một quan hệ R

- Số lƣợng các giá trị khác nhau xuất hiện trong quan hệ R cho mỗi thuộc tính riêng biệt.

Những kết quả thống kê trên cho phép ứơc lƣợng kích cỡ kết quả của các phép toán khác nhau, cũng nhƣ chi phí thực hiện các phép toán trên. Các thông tin thống kê về các quan hệ đặc biệt hiệu quả khi sử dụng một chỉ số cho việc xử lý câu hỏi. Sự tồn tại của các cấu trúc dạng này có ảnh hƣởng rõ rệt lên sự lựa chọn một chiến lƣợc xử lý câu hỏi. Mỗi biểu thức đại số quan hệ biểu diễn một chuỗi các phép toán đặc biệt. Bƣớc đầu tiên trong việc lựa chọn một chiến lƣợc xử lý câu hỏi là tìm kiếm một biểu thức đại số quan hệ tƣơng đƣơng với biểu thức đã cho và đƣợc đánh giá là giảm chi phí để xử lý. Có một số các quy tắc tƣơng đƣơng có thể sử dụng để biến đổi một biểu thức thành một biểu thức tƣơng đƣơng với biểu thức đã cho.

Các phƣơng án đánh giá khác nhau cho mỗi biểu thức có thể đƣợc biến đổi nhờ các quy tắc đơn giản và phƣơng án hiệu quả nhất xét trong tất cả các biểu thức sẽ đƣợc chọn. Một số phƣơng pháp tối ƣu hoá với chiến lƣợc tìm kiếm vét

Phƣơng pháp Heuristic đƣợc xây dựng dựa vào các quy tắc chuyển đổi các câu hỏi đại số quan hệ theo hƣớng: "Thực hiện phép chọn càng sớm càng tốt", "Thực hiện phép chiếu sớm" và "Tránh thực hiện tính tích Descartes". Thuật toán có thể không đạt chi phí nhỏ nhất song có thể làm giảm chi phí cho việc tối ƣu hoá.

KẾT LUẬN (adsbygoogle = window.adsbygoogle || []).push({});

Kết quả nghiên cứu của luận văn

Cơ sở dữ liệu là một nguồn tài sản vô cùng quý giá của các tổ chức, các doanh nghiệp. Khai thác và sử dụng cơ sở dữ liệu sao cho thật nhanh chóng và có hiệu quả cao là đòi hỏi tất yếu cho sự phát triển lớn mạnh của các tổ chức. Do đó, trƣớc khi thực hiện các câu truy vấn CSDL cần thiết phải biến đổi về dạng tƣơng đƣơng, tức là dạng cho cùng một kết quả, nhƣng giảm thời gian tính toán. Việc làm đó gọi là "tối ƣu hoá". Trong việc tối ƣu hoá xử lý thông tin, ngƣời ta ƣu tiên việc tối ƣu hoá về thời gian hơn so với việc tối ƣu hoá bộ nhớ lƣu trữ dữ liệu. Luận văn đã tập trung nghiên cứu những vấn đề chính sau:

1. Tìm hiểu về cơ sở dữ liệu bao gồm: CSDL quan hệ, CSDL phân tán.

2. Trình bày, phân tích một số thuật toán tối ƣu hoá truy vấn trên hệ cơ sở dữ liệu tập trung và phân tán.

3. Trình bày, phân tích phƣơng pháp tối ƣu hoá bằng Heuristic.

Nhƣ đã trình bày trong luận văn, thực hiện một truy vấn là thực hiện một loạt các thao tác trên cơ sở dữ liệu để lấy ra những thông tin cần thiết. Trong quá trình thực hiện cần sử dụng một số thuật toán nhƣ sắp xếp thứ tự phép chiếu, phép chọn, phép nối... Nếu các phép toán này không đƣợc sử dụng tốt sẽ dẫn đến mất rất nhiều thời gian xử lý và không gian lƣu trữ. Để khắc phục đƣợc hạn chế này trƣớc hết cần nghiên cứu kỹ về cơ sở dữ liệu và các phƣơng pháp tối ƣu truy vấn để đƣa ra quyết định xem các truy vấn nên đƣợc tối ƣu hoá theo phƣơng pháp nào. Bởi vì, có những phƣơng pháp tối ƣu cho ta câu truy vấn tối ƣu nhất, nghĩa là chi phí phải trả để thực hiện truy vấn cuối cùng là thấp nhất, tuy nhiên nếu không xem xét kỹ đến chi phí phải trả cho quá trình tối ƣu câu

phƣơng pháp tối ƣu hoá truy vấn bằng Heuristic đem lại hiệu quả cao trong việc tối ƣu hoá truy vấn.

Hạn chế của luận văn

Tuy đã hoàn thành đƣợc mục tiêu ban đầu đề ra là nghiên cứu cơ sở lý thuyết

Tìm hiểu phương pháp tối ưu hoá truy vấn bằng Heuristic nhƣng luận văn

vẫn còn có những hạn chế và sai sót. Kết quả trình bày trong luận văn mới chỉ dừng lại ở phƣơng diện lý thuyết, việc cài đặt các thuật toán, các chiến lƣợc tối ƣu đã đề cập còn gặp nhiều khó khăn. Hiện tại, luận văn mới chỉ thực hiện cài đặt đƣợc một phần những gì đã trình bày và cũng chƣa xét đƣợc đầy đủ các khả năng khác nhau của câu truy vấn trên thực tế.

Hƣớng phát triển

Để tiếp tục thực hiện đƣợc hƣớng nghiên cứu đã đề cập trong luận văn, em sẽ cố gắng nghiên cứu sâu và kỹ hơn nữa rồi tiến hành cài đặt các phƣơng pháp đã nghiên cứu đƣợc, đặc biệt là phƣơng pháp tối ƣu hoá bằng Heuristic. Em hy vọng sẽ tiếp tục nhận đƣợc sự chỉ dẫn của các thầy cô giáo, sự góp ý của các bạn để phát triển luận văn theo hƣớng cài đặt các thuật toán đã nêu trên ứng dụng

Một phần của tài liệu Tối ưu truy vấn cơ sở dữ liệu quan hệ và cơ sở dữ liệu phân tán bằng phương pháp Heuristic (Trang 61)