OLake Go is a high-performance, open-source data ingestion engine for replicating databases, S3, and Kafka into Apache Iceberg (or plain Parquet).
Built for scalable, real-time pipelines, OLake Go provides a simple web UI and CLI - used to ingest into vendor-lock-in free Iceberg tables supporting all the query-engines/warehouses.
Read the docs and benchmarks at olake.io/docs. Join our active community on Slack.
<a href="https://github.com/datazip-inc/olake/issues">
<img alt="GitHub issues" src="https://img.shields.io/github/issues/datazip-inc/olake"/>
</a>
<a href="https://olake.io/docs">
<img alt="Documentation" src="https://img.shields.io/badge/view-Documentation-white"/>
</a>
<a href="https://olake.io/slack/">
<img alt="slack" src="https://img.shields.io/badge/Join%20Our%20Community-Slack-blue"/>
</a>
<a href="https://olake.io/docs/community/contributing/">
<img alt="Contribute to OLake" src="https://img.shields.io/badge/Contribute-OLake-2563eb"/>
</a>
[!NOTE] 🎉 OLake Fusion is now live! — Automate your Apache Iceberg Table Maintenance. Check it out here → github.com/datazip-inc/olake-fusion 🎉
OLake Go supports replication from transactional databases such as PostgreSQL, MySQL, MongoDB, Oracle, DB2, and MSSQL, event-streaming systems like Apache Kafka and Object-store like S3, into open data lakehouse formats such as Apache Iceberg or Plain Parquet — delivering blazing-fast performance with minimal infrastructure cost.
| Source → Destination | Full Load | Relative Performance (Full Load) | Full Report |
|---|---|---|---|
| Postgres → Iceberg |
(as of 30th Jan 2026) | 5,80,113 RPS | 12.5× faster than Fivetran | Full Report | | MySQL → Iceberg
(as of 30th May 2026) | 1,39,773 RPS | 1.91× faster than Fivetran | Full Report | | MongoDB → Iceberg
(as of 5th Feb 2026) | 37,879 RPS | - | Full Report | | Oracle → Iceberg
(as of 30th Jan 2026) | 5,26,337 RPS | - | Full Report | | Kafka → Iceberg
(as of 27th Feb 2026) | 2,09,065 MPS (Bounded Incremental) | 1.23x slower than Flink | Full Report | | MSSQL → Iceberg
(as of 09th June 2026) | 3,45,866 MPS | 4.32x faster than Fivetran | Full Report |
| Source → Destination | CDC | Relative Performance (CDC) | Full Report |
|---|---|---|---|
| Postgres → Iceberg |
(as of 30th Jan 2026) | 55,555 RPS | 2× faster than Fivetran | Full Report | | MySQL → Iceberg
(as of 30th May 2026) | 59,951 RPS | 1.52× faster than Fivetran | Full Report | | MongoDB → Iceberg
(as of 5th Feb 2026) | 10,692 RPS | - | Full Report |
| Source | Full Load | CDC | Incremental | Notes | Documentation |
|---|---|---|---|---|---|
| PostgreSQL | ✅ | ✅ pgoutput |
✅ | wal2json deprecated |
Postgres Docs |
| MySQL | ✅ | ✅ | ✅ | Binlog-based CDC | MySQL Docs |
| MongoDB | ✅ | ✅ | ✅ | Oplog-based CDC | MongoDB Docs |
| Oracle | ✅ | WIP | ✅ | JDBC based Full Load & Incremental | Oracle Docs |
| DB2 | ✅ | - | ✅ | JDBC based Full Load & Incremental | DB2 Docs |
| MSSQL | ✅ | ✅ | ✅ | Full Load, CDC & Incremental | MSSQL Docs |
| Source | Full Load | CDC | Incremental | Notes | Documentation |
|---|---|---|---|---|---|
| S3 | ✅ | - | ✅ | Ingests from Amazon S3 or S3-compatible (MinIO, LocalStack) | S3 Docs |
| Source | Bounded Incremental | Notes | Documentation |
|---|---|---|---|
| Kafka | ✅ | Latest offset bounded incremental sync | Kafka Docs |
| Destination | Format | Supported Catalogs |
|---|---|---|
| Iceberg | ✅ | Glue, Hive, JDBC, REST (Nessie, Polaris, Unity, Lakekeeper, AWS S3 tables) |
| Parquet | ✅ | Filesystem |
Apache Iceberg Docs
Parquet Writer
OLake UI is a web-based interface for managing OLake Go jobs, sources, destinations and configurations. You can run the entire OLake Go stack (UI, Backend, and all dependencies) using Docker Compose. This is the recommended way to get started. Run the UI, connect your source DB, and start syncing in minutes.
curl -sSL https://raw.githubusercontent.com/datazip-inc/olake-ui/master/docker-compose.yml | docker compose -f - up -d
Access the UI:
- OLake UI: http://localhost:8000
- Log in with default credentials: admin / password
Detailed getting started using OLake UI can be found here.
With the UI running, you can create a data pipeline in a few steps:
CDC, Full Refresh or Incremental).For a detailed walkthrough, refer to the Jobs documentation.
For advanced users and automation, OLake Go's core logic is exposed via a powerful CLI. The core framework handles state management, configuration validation, logging, and type detection. It interacts with drivers using four main commands:
spec: Returns a render-able JSON Schema for a connector's configuration.check: Validates connection configurations for sources and destinations.discover: Returns all available streams (e.g., tables) and their schemas from a source.sync: Executes the data replication job, extracting from the source and writing to the destination.clear-destination : Clears data in the destination, only for the selected streams defined in streams.json.Find out more about CLI here.
Below are other different ways you can run OLake Go:
We ❤️ contributions, big or small!
Check out our Bounty Program. A huge thanks to all our amazing contributors!
$ claude mcp add olake \
-- python -m otcore.mcp_server <graph>