SQL
8 bài viết
Trino là query engine SQL phân tán, tách khỏi lưu trữ, đọc dữ liệu tại chỗ ở nhiều nguồn qua connector. Bài này dựng mô hình tinh thần về truy vấn liên hợp (federated query) — một câu SQL JOIN dữ liệu từ data lake, PostgreSQL, Kafka... mà không cần ETL gộp trước — và định vị Trino so với data warehouse và Spark.
Giải phẫu kiến trúc phân tán MPP của Trino: coordinator lập & tối ưu kế hoạch rồi điều phối, worker thực thi song song. Bài mổ xẻ mô hình query → stage → task → split → operator, exchange in-memory giữa các stage, vai trò connector/SPI, quản lý bộ nhớ, spill-to-disk và chế độ Fault-Tolerant Execution (Tardigrade).
Connector là cách Trino kết nối mọi nguồn dữ liệu; catalog → schema → table là mô hình định danh (catalog.schema.table). Bài mổ xẻ các connector quan trọng (Hive, Iceberg, Delta Lake, JDBC, Kafka, Elasticsearch, MongoDB, ClickHouse), vai trò metastore, cách cấu hình catalog, type mapping, predicate/projection pushdown và giới hạn từng connector — qua ví dụ cụm Trino ngân hàng đọc data lake + Postgres core + Kafka.
Dùng Trino SQL (chuẩn ANSI) thực chiến: JOIN dữ liệu xuyên nguồn trong một câu qua cú pháp catalog.schema.table, cách engine thực thi cross-source join và hệ quả hiệu năng (pushdown vs làm trong engine). Điểm qua window functions, CTE, GROUPING SETS/ROLLUP/CUBE, UNNEST, approximate & lambda, cùng CTAS/INSERT/view cho federated ETL nhẹ.
Trino làm query engine cho lakehouse: vì sao table format Iceberg/Delta thay thế Hive table cũ (thêm ACID, snapshot, schema/partition evolution). Cách khai thác qua Trino: time travel FOR VERSION/TIMESTAMP AS OF, xem lịch sử snapshot, MERGE/UPDATE/DELETE, bảo trì OPTIMIZE/expire snapshots/remove orphan files. So sánh Iceberg vs Delta vs Hudi và vai trò REST catalog.
Tối ưu truy vấn Trino thực chiến: đọc distributed plan qua EXPLAIN/EXPLAIN ANALYZE và Web UI để tìm nút thắt; khai thác pushdown (predicate/projection/aggregate) — đòn bẩy lớn nhất; bố cục dữ liệu lake (partition, Parquet/ORC, file size, table stats); chọn join broadcast vs partitioned và dynamic filtering; quản lý bộ nhớ/spill/resource groups; anti-pattern & cách chẩn đoán query chậm.
Bảo mật Trino toàn diện: xác thực client→coordinator (password/LDAP, OAuth2/JWT, Kerberos, certificate), mã hoá TLS cho kết nối client và internal, phân quyền qua system access control (file-based, Ranger/OPA/Privacera) tới catalog/schema/table/column. Kèm column masking, row filtering, least privilege cho tài khoản connector, audit event logging và quản lý secret — bối cảnh ngân hàng truy cập dữ liệu khách hàng nhạy cảm.
Bài tổng kết series: cách triển khai cụm Trino (coordinator + workers) trên VM hoặc Kubernetes (Helm, autoscale), sizing, chọn bản OSS vs Starburst vs cloud (Athena/EMR), giám sát qua JMX/Prometheus/Web UI, resource groups, xử lý sự cố (OOM, worker chết, skew) và tối ưu chi phí. Kèm bảng chọn Trino vs warehouse vs Spark và các use case ngân hàng.