Hệ thống kèo bóng đá hom nay 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 kèo bóng đá hom nay 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 kèo bóng đá hom nay 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 kèo bóng đá hom nay viết lại truy vấn ("hệ thống kèo bóng đá hom nay" 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 kèo bóng đá hom nay, 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 kèo bóng đá hom nay 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 kèo bóng đá hom nay 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 kèo bóng đá hom nay 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 kèo bóng đá hom nay 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 đó các 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 kèo bóng đá hom nay trongPG_REWRITEDanh mục hệ kèo bóng đá hom nay 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 kèo bóng đá hom nay. 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ừSQL8764_8992
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 các phần, câu lệnh được chia thành khi Đó là trong cấu trúc Querytree. Các 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 các mối quan hệ được sử dụng trong truy vấn. Trong một câu lệnh chọn là các 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 các phần khác của truy vấn. TRONG Querytree Các 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 kèo bóng đá hom nay đã đượ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.
10241_10347
Chọn truy vấn thường không có mối quan hệ kết quả. Các Trường hợp đặc biệt của một lựa chọn vào chủ yếu là giống kèo bóng đá hom nayt 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 đó các thay đổi có hiệu lực.
TargetList là danh sách các biểu thức xác định kết quả của truy vấn. Trong trường hợp chọn, các 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 các từ khóa chọn và từ khóa (* chỉ là viết tắt cho tất cả các 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 kèo bóng đá hom nay hệ thống và sẽ được thảo luận sau. Đối với hệ thống kèo bóng đá hom nay, TargetList trống.
Trong các truy vấn chèn, Danh sách mục tiêu mô tả các hàng mới nên đi vào sự thay đổi. Thiếu các 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. Đó là các 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 các truy vấn cập nhật, nó mô tả các 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 các cột bằng cách chèn các biểu thức đặt các 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à các biểu thức từ tập hợp thuộc tính = Biểu thức phần của truy vấn.
12057_12331
12387_12705SQLcâ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 kèo bóng đá hom nay ở đó trong khi áp dụng các kèo bóng đá hom nay, 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 kèo bóng đá hom nay. 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.