DuckLake Redefines Modern Data Lakes Through SQL-Powered Metadata and Plain Parquet Architecture

The landscape of modern data architecture has long been plagued by operational complexity, high infrastructure costs, and convoluted metadata layers. Traditional open table formats such as Apache Iceberg and Delta Lake require analytical engines to navigate complex webs of JSON, Avro, and hierarchical metadata files simply to determine which underlying Parquet files are relevant to a given query. Addressing these longstanding inefficiencies, DuckLake has emerged as a disruptive alternative that fundamentally streamlines the data lakehouse paradigm. By storing structural metadata inside a conventional relational database while keeping the underlying data immutable and plain in Apache Parquet format, DuckLake reduces multi-file traversal down to a single SQL query.
The Evolution of DuckDB and the Genesis of DuckLake
The roots of DuckLake trace back to the academic origins of DuckDB, which began as a research prototype within the Database Architectures Group at CWI, a prestigious national research center for mathematics and computer science in the Netherlands. Pedro Holanda, who joined the project in 2018 during its nascent stages and now serves as the lead DuckLake developer, recalls the early days of building the system alongside co-creators Hannes Mühleisen and Mark Raasveldt.
A decade ago, data scientists and analytical engineers frequently expressed intense frustration with traditional client-server database engines. Heavy database management systems like PostgreSQL or MonetDB demanded significant configuration overhead, time-consuming source builds, and rigid data ingestion pipelines. Consequently, practitioners gravitated toward specialized data frame libraries and decoupled file storage, inadvertently introducing a fragmented ecosystem. DuckDB was engineered to bridge this gap by offering an embedded, in-process analytical database that paired vectorised query execution and columnar storage with the plug-and-play simplicity traditionally associated with SQLite.
As DuckDB matured and gained widespread adoption in production environments, the engineering team confronted the architectural limitations of conventional cloud data lakes. Large-scale analytical workloads running on formats like Iceberg frequently bottlenecked due to metadata amplification, network round-trips over object storage like Amazon S3, and the notorious "small file problem." DuckLake was conceived to eliminate this overhead entirely. By decoupling the compute layer from the metadata management and pointing compute engines directly at plain Parquet files via a relational catalog, DuckLake achieves unprecedented query performance and architectural simplicity.
Architectural Blueprint: Storage, Catalogs, and Compute
The DuckLake architecture rests upon three distinct, loosely coupled pillars: object storage, a relational catalog service, and a modular compute tier. This separation of concerns allows organizations to leverage existing cloud infrastructure without locking themselves into proprietary analytical platforms.
- Storage Layer: All raw data remains strictly in plain, unadorned Apache Parquet files—or potentially compressed CSV formats—hosted on standard object storage solutions such as Amazon S3, Google Cloud Storage, or Azure Blob Storage. Unlike competing formats that layer proprietary manifest lists and snapshot files on top of object storage, DuckLake relies entirely on the native file specification.
- Catalog Service: Structural metadata, including table schemas, partitioning rules, and file pointers, resides entirely within a real relational database. DuckLake’s flexible design allows organizations to utilize various database systems as their catalog, including SQLite for lightweight local development, PostgreSQL for standard production workloads, and DuckDB for embedded configurations.
- Compute Tier: Analytical compute engines—most notably DuckDB, alongside community-driven integrations for Apache Spark and DataFusion—interface with the catalog via a single SQL query. Rather than executing recursive metadata scans across dozens of remote files, the compute engine asks the catalog precisely which data files are required for the transaction, reducing network latency to an absolute minimum.
Achieving Unprecedented Transactional Scale with the Quack Protocol
One of the most profound breakthroughs associated with the DuckLake ecosystem is the introduction of the Quack protocol, an innovative client-server protocol engineered by Guillermo Sanchez Dionis and the DuckDB development team. Historically, open table formats have prioritized massive batch-oriented read throughput at the expense of concurrent write performance. Traditional lakehouse formats struggle under heavy transactional contention, often yielding low transaction-per-second (TPS) rates and requiring expensive round-trip retries when write conflicts occur.
When utilizing PostgreSQL as a traditional DuckLake catalog in environments characterized by heavy concurrent write contention, transaction rates typically plateau around five transactions per second due to the overhead of conflict resolution and application-level retries. However, by leveraging Quack as the underlying catalog server, DuckLake enables server-side transaction management and localized conflict resolution.
Under heavy concurrency and aggressive write contention, a DuckLake architecture powered by the Quack protocol successfully handles up to 200 transactions per second. This performance metric represents a generational leap over existing open table formats, enabling real-time streaming ingestion and transactional database workloads directly on top of object storage without sacrificing analytical speed.
Mitigating the Small File Problem Through Data Inlining
In streaming data architectures, continuous small insertions—such as event logs or IoT telemetry—frequently generate thousands of fractional files, degrading query performance and bloating metadata structures. While traditional open table formats combat this through scheduled compaction jobs or background maintenance services, DuckLake introduces a native optimization known as data inlining.
Through data inlining, initial small-batch writes are temporarily buffered inside the relational catalog’s internal transactional tables rather than immediately fragmenting object storage with minuscule Parquet files. The database tracks transactional validity using snapshot identifiers and deletion markers. Once the accumulated data volume crosses a predefined threshold, DuckLake automatically flushes and compacts the records into standard, optimized Parquet files on object storage.
This mechanism delivers exponential performance improvements for write-heavy workloads. Benchmark analyses comparing unoptimized streaming writes in traditional data lakes against DuckLake with data inlining enabled demonstrate orders-of-magnitude reductions in ingestion latency and metadata bloat.
Industry Implications and the Path Forward
The rapid ascent of DuckLake and the Quack protocol signals a broader architectural shift away from hyper-complex enterprise data platforms toward modular, lightweight, and cost-effective data infrastructure. By stripping away redundant metadata file layers and anchoring lakehouse architecture in proven relational database principles, DuckLake empowers engineering teams to maintain total control over their data stack while drastically reducing cloud compute and storage bills.
With DuckLake reaching production readiness following rigorous stability phases and checkpoint enhancements, an expanding ecosystem of commercial enterprises and open-source contributors has begun adopting the format as a core architectural foundation. As upcoming software iterations introduce advanced asynchronous I/O capabilities and deeper interoperability with existing standards like Apache Iceberg, DuckLake is poised to bridge the historic divide between transactional databases and analytical data lakes.







