Hệ thống tỷ lệ kèo bóng đá sản xuất đơn giản về mặt khái niệm, nhưng có Nhiều điểm tinh tế liên quan đến việc thực sự sử dụng chúng. Một số trong số này các điểm và nền tảng lý thuyết củaPostgresHệ thống tỷ lệ kèo bóng đá có thể được tìm thấy trong [Stonebraker et al, ACM, 1990].
Một số hệ thống cơ sở dữ liệu khác xác định các tỷ lệ kèo bóng đá cơ sở dữ liệu hoạt động. Những cái này thường được lưu trữ các thủ tục và kích hoạt và được thực hiện trongPostgreslà chức năng và kích hoạt.
Hệ thống tỷ lệ kèo bóng đá viết lại truy vấn ("hệ thống tỷ lệ kèo bóng đá" từ bây giờ) là Hoàn toàn khác với các thủ tục lưu trữ và kích hoạt. Nó sửa đổi các truy vấn để xem xét các tỷ lệ kèo bóng đá, và sau đó vượt qua Truy vấn sửa đổi cho trình tối ưu hóa truy vấn để thực hiện. Nó rất mạnh mẽ và có thể được sử dụng cho nhiều thứ như ngôn ngữ truy vấn thủ tục, quan điểm và phiên bản. Sức mạnh của hệ thống tỷ lệ kèo bóng đá này là đã thảo luận trong [Ong và Goh, 1990] cũng như [Stonebraker et al, ACM, 1990].
Để hiểu cách hệ thống tỷ lệ kèo bóng đá hoạt động, cần phải biết Khi nó được gọi và kết quả là gì và kết quả là gì.
Hệ thống tỷ lệ kèo bóng đá nằm giữa trình phân tích cú pháp truy vấn và trình phân tích cú pháp truy vấn và Trình tối ưu hóa. Nó lấy đầu ra của trình phân tích cú pháp, một querytree và các tỷ lệ kèo bóng đá viết lại từPG_REWRITEDanh mục, cũng là những người truy vấn với một số thông tin bổ sung và tạo ra số không hoặc nhiều queryTrees như kết quả. Vì vậy, nó là đầu vào và đầu ra luôn luôn là những thứ mà bản thân trình phân tích cú pháp có thể đã sản xuất và do đó, bất cứ điều gì nó nhìn thấy về cơ bản đều có thể thể hiện như mộtSQLcâu lệnh.
Bây giờ Querytree là gì? Nó là một đại diện nội bộ của mộtSQLCâu lệnh trong đó tỷ lệ kèo bóng đá phần đơn lẻ xây dựng nó được lưu trữ riêng. Những querytrees này có thể nhìn thấy Khi bắt đầuPostgresphụ trợ với gỡ lỗi 4 và truy vấn gõ vào phụ trợ tương tác giao diện. Các hành động tỷ lệ kèo bóng đá trongPG_REWRITEDanh mục hệ tỷ lệ kèo bóng đá cũng được lưu trữ dưới dạng Querytrees. Chúng không được định dạng như đầu ra gỡ lỗi, nhưng chúng chứa chính xác cùng một thông tin.
Đọc một querytree đòi hỏi một số kinh nghiệm và đó là một khó khăn thời gian khi tôi bắt đầu làm việc trên hệ thống tỷ lệ kèo bóng đá. Tôi có thể nhớ điều đó Tôi đang đứng ở máy pha cà phê và tôi thấy chiếc cốc trong một Danh sách mục tiêu, nước và bột cà phê trong khoảng thời gian và tất cả các nút trong một biểu thức đủ điều kiện. TừSQLĐại diện của QueryTrees là đủ Để hiểu hệ thống tỷ lệ kèo bóng đá, tài liệu này sẽ không dạy cách Đọc chúng. Nó có thể giúp tìm hiểu nó và các quy ước đặt tên là Yêu cầu trong các mô tả sau đây.
Khi đọcSQLĐại diện của QueryTrees trong tài liệu này là cần thiết Để có thể xác định tỷ lệ kèo bóng đá phần, câu lệnh được chia thành khi Đó là trong cấu trúc Querytree. tỷ lệ kèo bóng đá phần của một querytree là
Đây là một giá trị đơn giản cho biết lệnh nào (chọn, Chèn, cập nhật, xóa) đã tạo ra parsetree.
Rangtable là danh sách tỷ lệ kèo bóng đá mối quan hệ được sử dụng trong truy vấn. Trong một câu lệnh chọn là tỷ lệ kèo bóng đá mối quan hệ được đưa ra sau từ khóa từ.
Mỗi mục nhập Rangeable xác định bảng hoặc chế độ xem và nói bằng tên đó được gọi trong tỷ lệ kèo bóng đá phần khác của truy vấn. TRONG Querytree tỷ lệ kèo bóng đá mục nhập Rangeable được tham chiếu bởi Index thay vì theo tên, vì vậy ở đây không quan trọng nếu có tên trùng lặp như trong mộtSQLTuyên bố. Điều này có thể xảy ra sau Rangetables của các tỷ lệ kèo bóng đá đã được hợp nhất. Các ví dụ trong này tài liệu sẽ không có tình huống này.
Đây là một chỉ mục vào Rangeable xác định quan hệ nơi kết quả của truy vấn đi.
Chọn truy vấn thường không có mối quan hệ kết quả. tỷ lệ kèo bóng đá Trường hợp đặc biệt của một lựa chọn vào chủ yếu là giống hệt Bảng, chèn ... chọn trình tự và không được thảo luận riêng ở đây.
Khi chèn, cập nhật và xóa truy vấn bảng (hoặc chế độ xem!) trong đó tỷ lệ kèo bóng đá thay đổi có hiệu lực.
TargetList là danh sách tỷ lệ kèo bóng đá biểu thức xác định kết quả của truy vấn. Trong trường hợp chọn, tỷ lệ kèo bóng đá biểu thức là những gì xây dựng đầu ra cuối cùng của truy vấn. Họ là Biểu thức giữa tỷ lệ kèo bóng đá từ khóa chọn và từ khóa (* chỉ là viết tắt cho tất cả tỷ lệ kèo bóng đá tên thuộc tính của một quan hệ).
Xóa truy vấn không cần danh sách mục tiêu vì chúng không sản xuất bất kỳ kết quả. Trong thực tế, trình tối ưu hóa sẽ thêm một đặc biệt Nhập vào danh sách mục tiêu trống. Nhưng đây là theo tỷ lệ kèo bóng đá hệ thống và sẽ được thảo luận sau. Đối với hệ thống tỷ lệ kèo bóng đá, TargetList trống.
Trong tỷ lệ kèo bóng đá truy vấn chèn, Danh sách mục tiêu mô tả tỷ lệ kèo bóng đá hàng mới nên đi vào sự thay đổi. Thiếu tỷ lệ kèo bóng đá cột của Sự kết hợp sẽ được thêm vào bởi trình tối ưu hóa với không đổi Biểu thức null. Nó là tỷ lệ kèo bóng đá biểu thức trong mệnh đề giá trị hoặc những cái từ mệnh đề chọn khi chèn ... chọn.
trên tỷ lệ kèo bóng đá truy vấn cập nhật, nó mô tả tỷ lệ kèo bóng đá hàng mới nên Thay thế những cái cũ. Ở đây bây giờ trình tối ưu hóa sẽ thêm thiếu tỷ lệ kèo bóng đá cột bằng cách chèn tỷ lệ kèo bóng đá biểu thức đặt tỷ lệ kèo bóng đá giá trị từ Hàng cũ vào cái mới. Và nó sẽ thêm mục đặc biệt Thích xóa quá. Nó là tỷ lệ kèo bóng đá biểu thức từ tập hợp thuộc tính = Biểu thức phần của truy vấn.
Mỗi mục nhập trong danh sách TargetL có thể là một giá trị không đổi, một biến chỉ vào một thuộc tính của một trong những mối quan hệ trong tham số, một tham số hoặc một Cây biểu thức được thực hiện từ tỷ lệ kèo bóng đá cuộc gọi chức năng, hằng số, biến, người vận hành, v.v.
Trình độ truy vấn là một biểu thức giống như một trong những Những người chứa trong tỷ lệ kèo bóng đá mục TargetList. Giá trị kết quả của Biểu thức này là một boolean cho biết nếu hoạt động (Chèn, cập nhật, xóa hoặc chọn) cho hàng kết quả cuối cùng nên được thực thi hay không. Đó là mệnh đề của mộtSQLcâu lệnh.
Các phần khác của QueryTree giống như mệnh đề theo thứ tự không quan tâm ở đây. Các mục thay thế hệ thống tỷ lệ kèo bóng đá ở đó trong khi áp dụng các tỷ lệ kèo bóng đá, nhưng điều đó không có nhiều việc phải làm với các nguyên tắc cơ bản của hệ thống tỷ lệ kèo bóng đá. Nhóm bởi là một đặc biệt điều khi nó xuất hiện trong một định nghĩa chế độ xem và vẫn cần được ghi lại.