Giới thiệu
Doris là một relation database tối ưu để phát triển DW open - source với tính năng real-time tốt. Nó bảo gồm nhiều relation database (Mysql, PostgreSQL, SQL Server, Oracle, etc.), log và dữ liệu time seri. Hỗ trợ phục vụ cho dashboard, phân tích log, phân tích hành vi người dùng.
Apache Doris hỗ trợ cả nhập hàng loạt và ghi luồng. Nó có thể tích hợp tốt với Apache Spark, Apache Hive, Apache Flink, Airbyte, DBT và Fivetran. Nó cũng có thể kết nối với các hồ dữ liệu như Apache Hive, Apache Hudi, Apache Iceberg, Delta Lake và Apache Paimon.
Hiệu năng
Là một công cụ OLAP thời gian thực, Apache Doris có lợi thế cạnh tranh về tốc độ truy vấn. Theo kết quả đánh giá chuẩn TPC-H và SSB-Flat, Doris có thể mang lại hiệu suất nhanh hơn nhiều so với Presto, Greenplum và ClickHouse.
→ Có 2 blog nói rằng Doris tốt hơn hơn ClickHouse:
1.https://hackernoon.com/vi/chuyển-nhạc-tencent-từ-clickhouse-sang-apache-doris
2.https://hackernoon.com/vi/Tôi-sẽ-hỗ-trợ-trải-nghiệm-Tencent-với-apache-doris
Kiến trúc
Làm sao để Doris có thể nhanh và tạo ra được những ưu điểm vượt bậc như thế đó là nhờ hết các tính năng và cơ chế góp vào kiến trúc của doris.
Apache Doris nổi bật với một trình tối ưu hóa dựa trên chi phí (CBO) tiên tiến, cho phép xác định kế hoạch thực thi tối ưu cho các truy vấn lớn và phức tạp. Đặc biệt, hệ thống sử dụng một công cụ thực thi hoàn toàn vector hóa, giúp giảm thiểu các lệnh gọi hàm ảo và cải thiện hiệu suất bộ nhớ đệm. Được xây dựng trên nền tảng MPP (Massively Parallel Processing), Doris có khả năng tận dụng tối đa tài nguyên máy chủ và hiệu suất của các lõi xử lý. Trong Apache Doris, việc thực thi truy vấn được điều khiển bởi dữ liệu – có nghĩa là một truy vấn chỉ được thực hiện khi dữ liệu liên quan đã sẵn sàng, từ đó tối ưu hóa việc sử dụng CPU một cách hiệu quả nhất.
Truy vấn điểm nhanh cho cơ sở dữ liệu hướng cột
Một cái rất hay ở Doris khác với các DWH còn lại thì Apache Doris cho phép lưu trữ kết hợp, nghĩa là có lưu trữ theo hàng và lưu trữ theo cột cùng một lúc.
Làm sao để Doris truy vấn nhanh hơn so các các DWH còn lại:
Ý tưởng là tính toán trước các câu lệnh SQL và lưu trữ chúng trong bộ nhớ đệm, để chúng có thể được sử dụng lại cho các truy vấn tương tự.
THU THẬP DỮ LIỆU
Apache Doris cung cấp nhiều phương pháp thu thập dữ liệu.
Viết luồng thời gian thực :
- Stream Load : Bạn có thể áp dụng phương pháp này để ghi các tệp cục bộ hoặc luồng dữ liệu qua HTTP. Nó có thể mở rộng tuyến tính và có thể đạt thông lượng 10 triệu bản ghi mỗi giây trong một số trường hợp sử dụng.
- Flink-Doris-Connector : Với Flink CDC tích hợp, Connector này sẽ thu thập dữ liệu từ cơ sở dữ liệu OLTP đến Doris. Cho đến nay, chúng tôi đã thực hiện đồng bộ hóa tự động dữ liệu từ MySQL và Oracle đến Doris.
- Routine Load : Dùng để đăng ký dữ liệu từ hàng đợi tin nhắn Kafka.
- Insert Into : Điều này đặc biệt hữu ích khi bạn cố gắng thực hiện ETL trong Doris nội bộ, chẳng hạn như ghi dữ liệu từ bảng Doris này sang bảng Doris khác.
Viết theo lô :
- Spark Load : Với phương pháp này, bạn có thể tận dụng tài nguyên Spark để xử lý trước dữ liệu từ HDFS và bộ lưu trữ đối tượng trước khi ghi vào Doris.
- Broker Load : Hỗ trợ giao thức HDFS và S3.
- insert into <bảng bên trong> select from <bảng bên ngoài>: Câu lệnh đơn giản này cho phép bạn kết nối Doris với nhiều hệ thống lưu trữ, hồ dữ liệu và cơ sở dữ liệu khác nhau.
Update data
Cập nhật đồng thời: Trong một số trường hợp, việc cập nhật dữ liệu diễn ra đồng thời, nghĩa là nhiều dữ liệu mới có thể đến cùng lúc và cố gắng sửa đổi các bản ghi hiện có. Do đó, thứ tự cập nhật trở nên rất quan trọng.
Quyết định thứ tự cập nhật: Doris cho phép bạn quyết định thứ tự cập nhật dữ liệu. Bạn có thể chọn cập nhật theo thứ tự của các giao dịch đã cam kết hoặc theo thứ tự của cột trình tự, một cột mà bạn có thể chỉ định trước trong bảng.
Hỗ trợ xóa dữ liệu: Doris cũng hỗ trợ việc xóa dữ liệu dựa trên các vị từ đã chỉ định, cho phép bạn thực hiện các cập nhật có điều kiện một cách linh hoạt.
Quản lý user
Apache Doris có Kiểm soát truy cập dựa trên vai trò tinh vi và cho phép kiểm soát đặc quyền chi tiết ở cấp độ cơ sở dữ liệu, bảng, hàng và cột.
Tính dễ sử dụng
Apache Doris cung cấp nhiều khả năng, nhưng cũng dễ sử dụng. Nó hỗ trợ SQL chuẩn và tương thích với giao thức MySQL và hầu hết các công cụ BI trên thị trường.
- Giao diện nhìn chung khá ưa mắt
- Phân tích dữ liệu bán cấu trúc (văn bản, …)
Trong phân tích văn bản, mọi người thường sử dụng toán tử LIKE, vì vậy chúng tôi đã nỗ lực rất nhiều để cải thiện hiệu suất của nó, bao gồm đưa toán tử LIKE xuống lớp lưu trữ (để giảm việc quét dữ liệu) và giới thiệu NGram Bloomfilter, thư viện so khớp biểu thức chính quy Hyperscan và thuật toán Volnitsky (để so khớp chuỗi con).
Chúng tôi cũng đã giới thiệu chỉ mục đảo ngược cho mã thông báo văn bản. Đây là một công cụ mạnh mẽ cho tìm kiếm từ khóa mờ, tìm kiếm toàn văn, truy vấn tương đương và truy vấn phạm vi.
Data lake
Kết quả chuẩn cho thấy Apache Doris nhanh hơn Trino từ 3~5 lần trong các truy vấn trên bảng Hive. Đây là kết quả kết hợp của một số tính năng:
- Công cụ truy vấn hiệu quả
- Cơ chế lưu trữ dữ liệu nóng
- Các nút tính toán
- Quan điểm ở Doris
- Lưu trữ nhiều tầng
Mục đích chính của lưu trữ theo tầng là tiết kiệm tiền. Lưu trữ theo tầng có nghĩa là tách dữ liệu nóng và dữ liệu lạnh thành các bộ lưu trữ khác nhau, trong đó dữ liệu nóng là dữ liệu thường xuyên được truy cập và dữ liệu lạnh không thường xuyên. Nó cho phép người dùng đưa dữ liệu nóng vào các đĩa nhanh nhưng đắt tiền (như SSD và HDD) và dữ liệu lạnh vào bộ lưu trữ đối tượng.
Nói một cách đại khái, đối với một tài sản dữ liệu bao gồm 80% dữ liệu lạnh, lưu trữ theo tầng sẽ giúp bạn giảm 70% chi phí lưu trữ.
Tài liệu tham khảo
https://www.linkedin.com/pulse/introduction-apache-doris-next-generation-real-time-data-4vlcf/