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 )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

Popular posts from this blog

Một số câu hỏi về 'difference between'

Introduction to Apache Hudi