DuckLake Rethinks Data Lakes By Combining Relational Metadata With Parquet Storage

The modern data architecture landscape has long been defined by a friction point that engineers encounter daily: before an analytical query can read a single byte of actual data, it must navigate a labyrinth of JSON, Avro, and metadata files merely to determine which storage blocks are relevant. This multi-layered overhead—characteristic of traditional open table formats like Apache Iceberg and Delta Lake—introduces latency, complicates maintenance, and inflates infrastructure costs. DuckLake, a streamlined open table format developed under the DuckDB ecosystem, eliminates this procedural bloat by pairing a traditional relational database for metadata with plain Parquet files for data storage.
The Architectural Philosophy of DuckLake
At its core, DuckLake operates on a radical premise of simplicity: replace complex hierarchical metadata structures with a standard SQL database. While formats such as Iceberg rely on a cascade of manifest lists, manifest files, and JSON snapshots stored across cloud object storage, DuckLake centralizes this information into a true relational database catalog. The underlying data remains untouched, resting in plain, widely compatible Apache Parquet files on object stores like Amazon S3, Google Cloud Storage, or Azure Blob Storage.
This architectural shift fundamentally alters how queries interact with data lakes. Instead of issuing multiple round-trip requests to object storage to parse cascading metadata hierarchies, a DuckLake-compliant query engine asks a single SQL question to the catalog. The catalog immediately returns the exact list of Parquet files and precise file statistics required for the execution plan. By reducing discovery to a single database transaction, DuckLake removes the latency bottleneck that has plagued large-scale analytical workloads for over a decade.
Origins and Evolution within the DuckDB Ecosystem
The project’s conceptual roots trace back to CWI (Centrum Wiskunde & Informatica) in the Netherlands, where DuckDB began as an academic research prototype. Pedro Holanda, who joined the DuckDB project in 2018 during its early developmental phases at CWI, serves as the lead DuckLake developer. Over the years, Holanda’s work has spanned foundational data ingestion layers, notably optimizing CSV processing engines, before culminating in the design and architecture of DuckLake.
As DuckDB transitioned from a localized research project into a widely adopted analytical engine, the core team—including co-creators Hannes Mühleisen and Mark Raasveldt—recognized a growing market demand for a native, lightweight approach to lakehouse architecture. Guillermo Sanchez Dionis later joined the team, contributing significantly to both DuckLake and the development of Quack, a modern client-server protocol designed to extend DuckDB beyond its traditional embedded confines.
The Quack Protocol and High-Contention Transactionality
Historically, open table formats and embedded analytical databases faced severe limitations when handling concurrent write operations under heavy contention. Traditional formats were engineered primarily for batch-oriented analytical pipelines, making high-frequency streaming insertions or multi-user transactional workloads prone to locking conflicts and prohibitive retry costs.
DuckLake addresses this challenge through the integration of the Quack protocol. Serving as a robust catalog backend, Quack allows DuckLake to maintain ACID (Atomicity, Consistency, Isolation, Durability) compliance while scaling transaction throughput. Under rigorous benchmarking conditions involving heavy transactional contention, DuckLake backed by the Quack catalog handles up to 200 transactions per second. This performance level outpaces traditional open table formats, which often struggle with high-frequency concurrency due to the inherent constraints of file-based metadata locking.
When using a standard relational database like PostgreSQL as the catalog backend, high-contention environments can introduce performance overhead via client-server round-trip retries whenever snapshot IDs conflict. However, by running DuckLake directly within the Quack server environment, conflict resolution and retries are handled server-side, eliminating unnecessary network round-trips and drastically boosting throughput.
Data Inlining and Mitigating the Small File Problem
A persistent challenge in distributed data architectures is the "small file problem," where frequent, incremental data insertions—common in streaming ingest pipelines—generate thousands of fractional files. In traditional systems, this accumulation severely degrades query performance and clutters metadata catalogs.
DuckLake mitigates this issue through a mechanism known as data inlining. Instead of immediately writing tiny datasets out to individual Parquet files on object storage, small insert batches are temporarily inlined directly within the relational catalog database, complete with snapshot and transaction tracking metadata. Once the accumulated data reaches an optimal volume, the system flushes it out into a standard, properly sized Parquet file on object storage.
This approach preserves real-time ingestion capabilities and transactional integrity without sacrificing downstream analytical query performance. Benchmarks evaluating read and write efficiencies under heavy streaming loads indicate substantial performance gains over traditional file-based metadata approaches, bypassing the administrative overhead of continuous manual compaction.
Production Readiness and Industry Adoption
Following rigorous development cycles, stability audits, and the implementation of robust checkpointing, compaction, and orphan-file cleanup routines, DuckLake has reached production readiness. Early adopters, including data platform providers and enterprise engineering teams, have begun incorporating DuckLake as the foundational storage and catalog layer for internal analytics and commercial data products.
The flexibility of DuckLake’s design allows it to operate across diverse deployment topologies. Developers can utilize DuckDB in-process for localized development and low-infrastructure environments, deploy PostgreSQL for multi-user enterprise setups, or leverage the Quack protocol for high-throughput, distributed scenarios. Furthermore, because DuckLake adheres to an open specification and utilizes standard Parquet files, organizations retain the freedom to read and write data using alternative analytical engines such as Apache DataFusion or Apache Spark, ensuring protection against vendor lock-in.
As data engineering teams increasingly seek alternatives to complex, expensive cloud-native data platforms, DuckLake presents a compelling middle ground: the scalability of a modern lakehouse combined with the operational simplicity and determinism of a relational database. With upcoming releases slated to further refine asynchronous I/O operations and cross-format interoperability with Apache Iceberg, DuckLake represents a significant step forward in the evolution of open analytical data management.







