9 điểm bởi GN⁺ 2024-11-04 | 1 bình luận | Chia sẻ qua WhatsApp
  • Cung cấp cách dễ nhất để di chuyển và chuyển đổi dữ liệu giữa các cơ sở dữ liệu PostgreSQL
  • Truyền phát thời gian thực: Sử dụng sao chép logic của PostgreSQL để truyền phát các thay đổi dữ liệu gần như theo thời gian thực
  • Sao chép hàng loạt: Thực hiện đồng bộ dữ liệu ban đầu nhanh chóng bằng sao chép hàng loạt có thể xử lý song song
  • Chuyển đổi mạnh mẽ: Áp dụng các phép biến đổi dựa trên biểu thức chính quy, che dữ liệu nhạy cảm và lọc theo giá trị cột
  • Định tuyến linh hoạt: Định tuyến dữ liệu liền mạch giữa các bảng, sang các bảng có tên khác hoặc cùng một bảng thông qua ánh xạ cột tùy chỉnh
  • Ví dụ về quy tắc chuyển đổi
    • Che địa chỉ email: Chuyển đổi cột email thành các ký tự che.
    • Định dạng số điện thoại: Dùng biểu thức chính quy để chuyển đổi định dạng số điện thoại.
  • Định tuyến bảng và ánh xạ cột
    • Định tuyến bảng linh hoạt: Định tuyến bảng người dùng sang bảng khách hàng, đồng thời ánh xạ ID và tên người dùng thành ID khách hàng và tên khách hàng.
    • Định tuyến nhiều bảng: Định tuyến bảng đơn hàng sang bảng giao dịch, đồng thời ánh xạ ID và tổng tiền thành ID giao dịch và số tiền.
  • Các trường hợp sử dụng phổ biến
    • Sao chép dữ liệu thời gian thực giữa các DB PostgreSQL
    • Xây dựng pipeline ETL có bao gồm chuyển đổi dữ liệu
    • Định tuyến lại dữ liệu, che dữ liệu, lọc dữ liệu
    • Thực hiện migration cơ sở dữ liệu mà không có downtime
    • Event streaming từ PostgreSQL
  • Cách hoạt động
    • pg_flo tận dụng hệ thống sao chép logic của PostgreSQL để ghi nhận và truyền phát các thay đổi dữ liệu.
    • Sử dụng NATS làm message broker để tách việc đọc từ WAL khỏi các tiến trình replicator và worker, mang lại tính linh hoạt và khả năng mở rộng.
    • Việc chuyển đổi và lọc được áp dụng trước khi dữ liệu đến đích.

1 bình luận

 
GN⁺ 2024-11-04
Ý kiến trên Hacker News
  • Dự án pg_flo trông rất thú vị, đặc biệt là khả năng lưu trữ lưu trữ trên S3 và phiên bản công cụ chi phí thấp rất hấp dẫn

    • Các công cụ như Debezium có thể làm việc với dữ liệu quy mô nhỏ (GB) thay vì dữ liệu quy mô lớn (TB), nên thuận tiện cho việc thử nghiệm cục bộ
    • Việc dùng Kafka và Debezium là một nỗ lực ngắn hạn, và hiện đang đánh giá mức độ phiền phức của nó
    • Một giải pháp khác mà nhóm đang đánh giá là peerdb
  • Đang thực hiện một dự án dùng logical replication của PostgreSQL để dọn dẹp dữ liệu từ cơ sở dữ liệu chính và lưu trữ lên S3

    • Một số bảng cần phải khả dụng trên một instance Postgres phụ cho các tác vụ đọc, nên cần replication
    • Có hai thao tác xóa trong cơ sở dữ liệu chính đang gây vấn đề
      • Lần xóa thứ nhất là để dọn dẹp dữ liệu, và không muốn nó được phản ánh sang cơ sở dữ liệu được sao chép
      • Lần xóa thứ hai là để rollback, và vì nó làm thay đổi trạng thái dữ liệu nên cần phải được sao chép
    • Đang tự hỏi liệu có cách nào phân biệt hai thao tác xóa này để chỉ sao chép thao tác xóa rollback hay không
  • Đang tìm hiểu các giải pháp Postgres CDC và tự hỏi liệu pg_flo có thể hữu ích hay không

    • Muốn biết liệu có thể giải thích về các chế độ lỗi hay không
    • Ví dụ, muốn biết điều gì xảy ra nếu node máy chủ NATS (hoặc worker/replicator) bị chết
    • Tò mò không biết việc chuyển dữ liệu từ Postgres sang ElasticSearch/ClickHouse khó đến mức nào
  • Hy vọng đây có thể là một lựa chọn thay thế cho Debezium

    • Debezium ban đầu phải sao chép toàn bộ trạng thái CDC vào Kafka, đồng thời phải đặt thời gian lưu giữ Kafka là vô hạn, điều mà nhiều hệ thống dịch vụ Kafka không cho phép
  • pglogical có thể chạy bên trong Postgres, nhưng pg_flo có vẻ là một dịch vụ bên ngoài chứ không phải extension

    • Điều này thực ra có thể là một lợi thế
    • Tò mò liệu có thể dùng pg_flo với các instance Postgres as a service như Azure Postgres, Supabase, Neon hay không
    • Muốn biết liệu có thể đọc WAL mà không cần cài extension chưa được nhà cung cấp phê duyệt hay không
  • Rất háo hức được dùng thử công cụ này

    • Tò mò liệu nó có thể xử lý việc sao chép khi đang ở giữa tình trạng mất kết nối mạng/kết nối không ổn định hay không
  • Tò mò nó khác gì so với Sequin

    • Đang tìm một công cụ vừa cho phép workflow dựa trên sự kiện CDC, vừa có thể phát lại luồng sự kiện tùy ý khi cần
  • Đã tìm một công cụ tương tự, và thời điểm này thật hoàn hảo

    • Tò mò liệu có hỗ trợ thực hiện sao chép hàng loạt (ví dụ: vào ban đêm) với nhiều phép biến đổi khác nhau, thay vì liên tục streaming hay không
  • Tò mò liệu dùng replication có tốt hơn so với backup lên S3 hay không

  • Đây là một công cụ rất tuyệt