13 releases (4 breaking)

Uses new Rust 2024

new 0.5.3 Nov 2, 2025
0.5.2 Sep 25, 2025
0.5.1 Aug 24, 2025
0.4.2 Aug 18, 2025
0.1.0 Jul 9, 2025

#292 in Database interfaces

Download history 137/week @ 2025-07-06 12/week @ 2025-07-13 1/week @ 2025-07-20 291/week @ 2025-08-10 361/week @ 2025-08-17 235/week @ 2025-08-24 13/week @ 2025-08-31 3/week @ 2025-09-07 105/week @ 2025-09-21 35/week @ 2025-09-28 7/week @ 2025-10-05 1/week @ 2025-10-12 1/week @ 2025-10-19

52 downloads per month

MIT license

140KB
3.5K SLoC

clockpipe

GitHub license

  • Data synchronization pipeline tool for on-premise clickhouse users.
  • Automatically writes data from the original source to Clickhouse. Implemented via CDC.

Supported Source

  • PostgreSQL (ready)
  • MongoDB (ready)
  • MySQL (not yet)
  • CassandraDB (not yet)

Install

Build from source code

git clone https://github.com/myyrakle/clockpipe
cd clockpipe
cargo install --path .

Using Cargo

cargo install clockpipe

Using Docker

sudo docker run -v $(pwd)/clockpipe-config.json:/app/config.json --network host myyrakle/clockpipe:v0.5.3

Requirements & Limits

  • Each source has its own set of prerequisites and limitations.
  • Please refer to the respective documentation.
  1. PostgreSQL
  2. MongoDB

How to Run

  • Prepare config file. (See documentation)
  • Enter the information about the source table you want to synchronize. (postgres example)
    "tables": [
        {
            "schema_name": "public",
            "table_name": "foo"
        },
        {
            "schema_name": "public",
            "table_name": "nc_usr_account"
        }
    ]
  • Then, Run it
clockpipe run --config-file ./clockpipe-config.json
  • Pipe automatically creates and synchronizes tables in Clickhouse by querying table information.

  • If you don't want the initial synchronization, use the skip_copy option. (CDC-based synchronization still works.)

    "tables": [
        {
            "schema_name": "public",
            "table_name": "user_table",
            "skip_copy": true
        }
    ]

ETC

  • You can also adjust the log level. You can set values such as error, warn, info, and debug to the "RUST_LOG" environment variable.
RUST_LOG=debug clockpipe run --config-file ./clockpipe-config.json

Dependencies

~24–39MB
~541K SLoC