Introduction to Apache Doris
Apache Doris là gì ?
Apache Doris là một interactive SQL real-time data warehouse dựa vào kiến trúc MPP ( Massive Parallel Processing ). Hình ảnh dưới đây là những gì Apache Doris có thể đại diện trong data pipeline
Technical
Kiến trúc của Apache Doris được chia làm 2 loại
- Frontend (FE):
- user request processing: xử lý request từ người dùng
- query parsing and planning: xử lý parsing và xử lý plan của query
- metadata management: quản lý metadata
- node management: quản lý node
- Backend (BE):
- data storage: lưu trữ dữ liệu
- query execution: thực thi câu query
-
Storage Engine:
- Apache Doris có engine lưu trữ dạng columnar ( encode, compress, read data by column ).
- Hỗ trợ nhiều cấu trúc index: Sorted Compound Key Index, MIN/MAX Indexing, Bloom Filter, Invert Index
- Hỗ trợ nhiều mô hình dữ liệu ( data model ): Aggregate Key Model, Unique Key Model, Duplicate Key Model
- Hỗ trợ Materialized Views ( tự động được select và update )
-
Query Engine:
- MPP-based query engine: thực thi parallel giữa các node, hỗ trợ phân tán shuffle join cho các bảng lớn
- Query engine của Doris được fully vectorized ( C++ ): quá trình chuyển đổi các scalar operations ( ví dụ 1 hàm a = b + c ) thành các SIMD operation ( ví dụ như dùng parallel trong Stream API của Java hoặc Vector API trong Java 17 ). Trong SIMD, dữ liệu được xử lý đồng thời.
- Memory structure đc cấu tạo từ columnar format, điều này giảm thiểu virtual function call, tăng cache hit rate.
-
Doris dùng Adaptive Query Execution ( 1 cơ chế cũng có trong Spark 3 ) để điều chỉnh execution plan linh động dựa vào các thống kê runtime.
-
Query optimizer của Doris là sự kết hợp giữa CBO ( Cost-Based Optimization ) và RBO ( Rule-Based Optimization ).
- RBO hỗ trợ folding liên tục, viết lại subquery và predicate pushdown
- CBO hỗ trợ sắp xếp lại câu JOIN
Comments
Post a Comment