4. Những nội dung nghiên cứu chính
2.1.2. Cây toán tử
Cây toán tử đã đƣợc định nghĩa tổng quát tại hình mục 1.2.1. Ở đây, vì mục đích để mô tả các phép toán song song cũng nhƣ các ràng buộc về thời gian, ta biểu diễn lại cây toán tử nhƣ sau:
- Các nút của cây toán tử biểu diễn các toán tử và các đoạn mã lệnh đơn. - Các cạnh chỉ các dòng dữ liệu, hƣớng chỉ của mỗi cạnh thể hiện ràng buộc thời gian giữa các toán tử.
- Một toán tử có thể nhận vào nhiều tập các bộ và tạo ra một tập kết quả. - Các toán tử đƣợc hình thành nhờ phát sinh ra các đoạn mã cài đặt các phép toán quan hệ trong cây truy vấn tiền xử lý một cách thích hợp. Một tiêu chuẩn trong việc thiết kế các toán tử là chuyển các ràng buộc thời gian nội tại thành các ràng buộc đơn giản, chẳng hạn các ràng buộc song song và ràng buộc thứ tự:
+ Cạnh nối hai (nút) toán tử i và j là một ràng buộc song song giữa i và j nếu i và j phải bắt đầu thực hiện công việc và kết thúc công việc đồng thời. Quy định cạnh có ràng buộc song song là đƣờng ống (là cạnh đƣợc vẽ nét mảnh). Một cạnh đƣờng ống thƣờng đƣợc cài đặt bằng cách dùng cơ chế dòng điều khiển, nghĩa là toán tử sản xuất dữ liệu nhanh đƣợc điều khiển chậm lại để "chờ" nếu toán tử tiêu thụ dữ liệu chậm hơn, và ngƣợc lại để các toán tử sản xuất và tiêu thụ thực thi cùng một lúc.
+ Cạnh nối hai (nút) toán tử i và j là một ràng buộc thứ tự giữa i và j nếu j chỉ bắt đầu sau khi i kết thúc. Quy định cạnh có ràng buộc thứ tự là cạnh khối (là cạnh đƣợc vẽ nét đậm). Các ràng buộc thứ tự làm cho phép toán tiêu thụ chỉ đƣợc bắt đầu khi phép toán sản xuất đã kết thúc.
Quá trình xây dựng cây toán tử dựa vào cây truy vấn tiền xử lý. Quá trình này có thể xem nhƣ việc áp dụng một thủ tục "lấn chiếm" cho mỗi nút
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn
của cây. Do các cây truy vấn tiền xử lý đƣợc cấu thành từ một tập cố định các toán tử nên quá trình áp dụng thủ tục lấn chiếm cho mỗi toán tử có thể thực hiện nhờ một cơ chế luật dẫn.
Ví dụ 2.1.2:
Hình 2-2 là cây toán tử tƣơng ứng cây truy vấn tiền xử lý ở hình 2-1. phép nối băm của hai quan hệ CHUYENMON và NHANVIEN tạo nên hai phép toán Build (toán tử tạo quan hệ băm) và Probe (toán tử so sánh để thực hiện phép nối).
Toán tử Probe chỉ đƣợc thực hiện khi toán tử Build đã thực hiện xong nhiệm vụ của mình để có dữ liệu ra làm dữ liệu vào cho Probe, nên cạnh từ Build đến Probe phải là cạnh khối.
Phép nối sắp trộn hai quan hệ sẽ sắp xếp chúng theo thuộc tính nối rồi trộn các dòng kết quả lại. Thao tác trộn đƣợc thực hiện bởi phép toán Merge. Trong ví dụ này, ta giả sử đầu vào bên phải của phép nối sắp trộn phải đƣợc sắp xếp trƣớc. Khi đó, cây toán tử cho thấy đầu vào bên trái của phép nối đƣợc tách bởi hai phép toán FormRuns và MergeRuns. Do thao tác trộn các dòng dữ liệu chỉ đƣợc thực hiện sau khi đã hình thành các đƣờng chạy nên cạnh nối từ FormRuns đến MergeRuns phải là cạnh khối.
Tóm lại, cây toán tử sẽ cho thấy đƣợc khả năng song song hóa trong việc thực hiện câu truy vấn SQL. Ta thấy rằng cơ chế song song dạng ống chỉ có thể áp dụng đƣợc cho những toán tử đƣợc nối với những cạnh ống, đây cũng là một hạn chế của cơ chế này. Chúng ta cũng nhận thấy rằng, hai cây con trên cùng một cây toán tử mà không bị ràng buộc thứ tự thì có thể thực hiện theo cơ chế song song độc lập. Ví dụ, hai cây con có các gốc ở FormRuns và Build có thể thực hiện độc lập bởi vì chúng không bị nối cạnh bị ràng buộc thứ tự. Ngoài ra, các toán tử FormRuns và Scan(M) có thể thực hiện song song dạng ống còn các toán tử bất kỳ khác có thể sử dụng theo cơ chế song song phân bố.
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn
AVG
MERGE
MERGERUNS PROBE
BUILD
SCAN(M) SCAN (S) INDEX
CLUSTERED SCAN (E)
Hình 2-2. Cây toán tử tương ứng với cây trong hình 2-1