Streambed: Công cụ CDC chuyển dữ liệu Postgres sang Iceberg trên S3, không cần ETL hay Spark
Streambed là một engine CDC mã nguồn mở giúp chuyển đổi dữ liệu từ Postgres sang định dạng Iceberg trên S3. Công cụ này cho phép người dùng thực hiện các truy vấn phân tích mà không ảnh hưởng đến cơ sở dữ liệu sản xuất, hỗ trợ giao thức Postgres wire để kết nối dễ dàng.

Streambed là một engine CDC (Change Data Capture) mới được giới thiệu trên Hacker News, giúp chuyển đổi dữ liệu từ Postgres sang định dạng Iceberg trên S3 một cách trực tiếp. Với giải pháp này, các nhà phát triển có thể dỡ tải (offload) các truy vấn phân tích khỏi cơ sở dữ liệu sản xuất mà không cần thay đổi cấu trúc ứng dụng hay thiết lập các pipeline ETL phức tạp.
License Apache 2.0
Giải pháp thay thế cho ETL truyền thống
Thông thường, để phân tích dữ liệu từ cơ sở dữ liệu giao dịch (OLTP), các kỹ sư thường phải sử dụng các công cụ như Spark hoặc thiết lập pipeline ETL để di chuyển dữ liệu sang kho dữ liệu (Data Warehouse). Streambed đơn giản hóa quy trình này bằng cách hoạt động như một người đăng ký sao chép logic (logical replication subscriber).
Công cụ này phát trực tiếp các thay đổi từ WAL (Write-Ahead Log) của Postgres, ghi dữ liệu thành các tệp Parquet lên S3 và cam kết (commit) metadata Iceberg. Điều này đảm bảo dữ liệu phân tích luôn được cập nhật gần như thời gian thực mà không gây áp lực lên database chính.
Cách thức hoạt động
Streambed thực hiện quy trình xử lý dữ liệu theo một luồng liên tục:
- Đọc WAL: Kết nối đến Postgres và nhận các thay đổi (insert, update, delete) thông qua logical replication.
- Giải mã và Bộ đệm: Giải mã các thông điệp WAL và lưu trữ hàng theo từng bảng trong bộ đệm.
- Ghi Parquet: Định kỳ đẩy dữ liệu từ bộ đệm lên S3 dưới dạng tệp Parquet và cập nhật metadata của Iceberg.
- Xử lý cập nhật: Các thao tác cập nhật và xóa được xử lý bằng cơ chế hợp nhất copy-on-write đối với dữ liệu Parquet hiện có.
Kiến trúc Streambed
Truy vấn dữ liệu dễ dàng với giao thức Postgres
Một trong những điểm nổi bật nhất của Streambed là máy chủ truy vấn (query server) tích hợp sẵn. Thay vì yêu cầu người dùng học các ngôn ngữ truy vấn mới hoặc công cụ riêng biệt, Streambed sử dụng DuckDB nhúng để hiển thị các bảng Iceberg thông qua giao thức Postgres wire.
Nhờ đó, bạn có thể kết nối và truy vấn dữ liệu bằng bất kỳ client Postgres nào, kể cả công cụ dòng lệnh quen thuộc như psql.
Quick Start với Docker và Go
Để bắt đầu với Streambed, bạn cần có Go 1.22+ và CGO. Quy trình cài đặt khá đơn giản:
Đầu tiên, khởi động Postgres và MinIO (một giải pháp lưu trữ tương thích S3) bằng Docker Compose:
docker compose up -d
Tiếp theo, biên dịch và chạy Streambed để bắt đầu đồng bộ hóa dữ liệu cũng như khởi động máy chủ truy vấn trên cổng 5433:
go build -o streambed ./cmd/streambed
./streambed sync \
--source-url="postgres://postgres:test@localhost:5432/postgres" \
--s3-bucket="streambed" \
--s3-endpoint="http://localhost:9000" \
--s3-prefix="test" \
--query-addr=:5433
Bây giờ, bạn có thể truy vấn các bảng Postgres của mình thông qua Iceberg ngay lập tức:
psql -h localhost -p 5433 -U postgres -d postgres
Streambed cũng cung cấp các lệnh hỗ trợ khác như resync để sao chép lại dữ liệu (backfill), query để chạy máy chủ truy vấn độc lập, và cleanup để dọn dẹp dữ liệu trên S3. Đây là một công cụ hứa hẹn cho các đội ngũ phát triển muốn xây dựng hệ thống phân tích hiện đại mà không muốn gánh nặng vận hành của Spark hay các hệ thống ETL lớn.
Bài viết liên quan

Công nghệ
Microsoft giới thiệu Surface Pro 12 và Surface Laptop 8: Sức mạnh chip Intel, giá thành gây sốc
19 tháng 5, 2026

Công nghệ
CEO Palantir: 10% thế giới "ghét chúng tôi một cách chuyên nghiệp"
05 tháng 5, 2026

Công nghệ
Đánh giá Corsair Galleon 100 SD: Khi Stream Deck được tích hợp ngay trên bàn phím
27 tháng 5, 2026
