TimescaleDB to ClickHouse replication: Use cases, features, and how we built it

Bài tóm tắt ClickHouse 2025 2. Tăng trưởng Độ khó: Trung bình

ClickHouse · 2025 · 2. Tăng trưởng · Độ khó: Trung bình — bài gốc

Bài quảng bá sản phẩm của nhà cung cấp (ClickPipes, dựa trên PeerDB mà ClickHouse mua năm 2024). Mọi nhận định về hiệu năng là theo ClickHouse; phần kỹ thuật về CDC trên bảng partition vẫn có giá trị chung.

Bối cảnh

  • Connector Postgres CDC của ClickPipes sao chép liên tục từ Postgres sang ClickHouse Cloud, dùng cho cả migrate một lần lẫn replicate liên tục. Bài này mở rộng sang TimescaleDB (extension của Postgres cho time-series).

Ba kiểu sử dụng (theo ClickHouse)

  • Migrate online một lần: khách đã chạy analytics trên TimescaleDB, khi dữ liệu lớn lên thì phải tinh chỉnh nhiều; chuyển sang ClickHouse.
  • Migrate từng bước: ứng dụng phức tạp nên dời từng workload, dời phần đọc trước rồi mới dời đường ghi; CDC giữ hai bên đồng bộ với độ trễ vài giây trong suốt thời gian chuyển.
  • Cùng tồn tại: TimescaleDB giữ giao dịch/time-series, ClickHouse phục vụ analytics; CDC là cầu nối lâu dài.

Thay đổi chính

  • Có nạp ban đầu (snapshot) và đồng bộ liên tục (CDC) nhờ logical replication có sẵn của Postgres.
  • Nạp ban đầu song song trong một bảng bằng cách chia theo ctid (vị trí vật lý của dòng): theo ClickHouse, hàng TB trong vài giờ thay vì vài ngày.
  • Hypertable chia thành chunk (bảng con). Logical replication ghi nhận thay đổi ở chunk; Postgres partition thường có tuỳ chọn publish_via_partition_root để quy về bảng cha, hypertable thì không, nên PeerDB tự tra bảng cha khi xử lý. Chunk mới tạo nằm trong schema nội bộ _timescaledb_internal; thêm schema này vào publication thì bắt được mọi chunk về sau.
  • Hypertable nén không có cột ctid, nên nạp song song lỗi; bản sửa tự phát hiện và lùi về nạp một luồng.
  • Hỗ trợ thêm/bớt cột tự động; metric về throughput, độ trễ, kích thước replication slot, cảnh báo khi slot phình hoặc replicate lỗi.

Bài học cho SWE

  • CDC cho phép tách "chuyển đọc" khỏi "chuyển ghi" khi đổi kho dữ liệu: hai bên cùng chạy, đọc dời dần, ghi dời sau cùng (Migration không downtime).
  • Partition ở nguồn làm CDC phức tạp hơn: sự kiện phát ra theo bảng con, bảng con mới xuất hiện liên tục.
  • Replication slot phình là rủi ro vận hành chính của logical replication trên Postgres (đầu đọc chậm thì WAL bị giữ lại trên nguồn); phải theo dõi (Pipeline dữ liệu và analytics).
  • So với cách batch có đối chiếu của Allegro 2024, CDC tươi hơn nhưng thêm một hệ phải vận hành; bài này không nói cách đối chiếu đủ dòng.

Liên quan