apitap: Rust-Based ELT Engine Moves 10M Rows in 9.9s
Open-source Rust engine apitap moves 10M database rows in 9.9 seconds via a single function call, benchmarked against dlt and ingestr.
apitap is a new open-source engine that moves entire database tables with a single Python function call - no config files, no pipeline DAGs. In the author's benchmark on a 16-core machine, it transferred 10 million rows from Postgres to ClickHouse in 9.9 seconds, versus 111 seconds for ingestr and 1,893 seconds for dlt.
The speed comes from the architecture: Postgres-to-Postgres uses raw binary COPY passthrough, Postgres-to-ClickHouse transcodes the binary stream in flight to RowBinary, and MySQL routes decode the binary wire protocol directly - avoiding ORM overhead and text serialization entirely. The key structural difference is that dlt parallelizes across tables, while apitap parallelizes inside a single table using primary-key or TID range splitting with a work-stealing queue.
Normalizing results to bytes rather than rows reconciles dltHub's own published 360M-rows-per-hour figure with a much narrower schema; once adjusted, apitap sustains roughly 1.2 TB/hour on checksum-validated runs. Because memory usage is bounded by pipe count rather than table size, the engine runs in a 256 MB container, while dlt's fastest backend, connectorx, gets OOM-killed under the same limit.
This synthesis was produced from its source by AI; there is no human editor or manual review step. How we work