Posts

Showing posts from July, 2024

Tăng tốc truy vấn bằng Materialized View - Apache Doris

 Tăng tốc truy vấn bằng Materialized View - Apache Doris Giới thiệu Materialized view là 1 data set được tính toán sẵn ( dựa vào câu SELECT ) và được lưu trữ trong 1 bảng đặc biệt trong Doris Khi nào nên sử dụng Materialized view: Phục vụ cho các câu Detailed Data Query (1) và Fixed-Dimensional Query (2) Truy vấn chỉ liên quan đến một phần nhỏ các cột hoặc hàng trong bảng. Truy vấn chứa một số thao tác xử lý tốn nhiều thời gian, chẳng hạn như các thao tác aggregate trong thời gian dài. Truy vấn cần khớp với các prefix index khác nhau ( Duplicate Model ). (1) Detailed Data Query : các câu query này thường đọc dữ liệu ở mức chi tiết, ko có pre-aggregation.  (2) Fixed-Dimensional Query : ngược lại với Detailed Data Query, các câu query dạng này tập trung vào pre-aggregation các chiều (column) cụ thể, cho phép thời gian phân tích và truy vấn nhanh hơn đối với các chiều (column) đó. Hạn chế Nếu cột điều kiện của câu DELETE ( ví dụ DELETE FROM abc WHERE [cột điều kiện] = ...

Sort Key and Prefix Index

Image
Sort Key and Prefix Index Index Principles Doris lưu trữ data trong 1 cấu trúc tương tự SSTable ( Sorted String Table ). Cấu trúc này là 1 cấu trúc dữ liệu có thứ tự ( tương tự như List trong Java ), nó có thể được sắp xếp và lưu trữ dựa vào 1 hoặc nhiều cột chỉ định. Với cấu trúc dữ liệu như vậy, với điều kiện tìm kiếm trên tất cả hoặc 1 phần các cột được sắp xếp sẽ đem lại hiệu năng cao. Dựa vào sorted keys, Doris có thêm 1 cái gọi là prefix index. Data trong bảng được lưu trữ 1 cách logical trong các Data Block dựa vào số lượng rows. Mỗi logical data block lưu trữ 1 index entry trong bảng prefix index, với độ dài của index entry ko quá 36 bytes. Nội dung index entry sẽ là prefix của các cột được sắp xếp ( sorted keys ) của hàng đầu tiên trong data block . Bởi vì prefix index tương đối nhỏ, nên có thể cache hoàn toàn trên memory, cho phép ta nhanh chóng lấy được vị trí của data block và cải thiện hiệu quả query. 36 byte đầu tiên của row trong data block được sử dụng làm prefix in...