Beyond the File System: The Shift Toward Database-Driven Lakehouses
For years, the data engineering world has been locked in a battle with the tiny file problem
. In traditional data lake formats like Apache Iceberg, Delta Lake, and Apache Hudi, metadata is primarily stored as files within object storage. While this approach allows for massive scalability, it often creates a bottleneck: the more your data grows, the more complex the coordination becomes, leading to sluggish metadata operations and a cluttered storage layer.
The arrival of DuckLake 1.0 signals a fundamental pivot in this architecture. Instead of scattering metadata across thousands of files, DuckLake stores it directly in a SQL database. This shift isn’t just a technical tweak; It’s a move toward a more agile, database-centric lakehouse that prioritizes speed and operational simplicity over the rigid file-based structures of the past.
Ending the Small File Nightmare with Data Inlining
One of the most persistent headaches for data engineers is the overhead of small updates. In a standard object store, you cannot modify a single row; you must rewrite an entire file. This leads to a proliferation of tiny files that degrade query performance across the board.
DuckLake addresses this through a feature called data inlining
. Rather than triggering a full file rewrite for every minor change, DuckLake allows small inserts, updates, and deletes to be handled directly within the catalog database. This effectively creates a hybrid storage layer where the “hot” changes live in the database and the “cold” bulk data remains in object storage.
“Data inlining is one of the flagship features of DuckLake. It basically enables performing small insert, delete and update operations in the catalog database, avoiding the proliferation of ‘the small file problem’. DuckLake v1.0 brings full inlining of updates, and deletes. This feature is now on by default with a default threshold of 10 rows.” DuckDB Team
This approach suggests a future where the line between a traditional relational database and a data lake continues to blur. By treating the catalog as an active participant in data storage rather than a passive directory, organizations can achieve near-real-time updates without sacrificing the cost-effectiveness of a data lake.
The Road to DataOps: Branching and Versioning
Looking beyond the current release, the trajectory of lakehouse formats is moving toward DataOps
—applying software engineering best practices to data management. The roadmap for DuckLake v2.0 highlights a critical trend: the introduction of Git-like branching for datasets.
Imagine the ability to create a branch
of your production data, run an experimental transformation or a series of updates, and then merge those changes back into the main table only after they have been validated. This eliminates the need for expensive “staging” environments that mirror production data and allows for safer, more iterative data engineering.
The Interoperability Standard
Despite the architectural shift, DuckLake isn’t trying to isolate itself. The inclusion of deletion vectors compatible with Apache Iceberg suggests that the future of the industry isn’t a “winner-take-all” scenario, but rather a world of interoperable formats. By maintaining compatibility with the Iceberg ecosystem, DuckLake allows users to leverage the performance of a SQL-backed catalog while remaining compatible with a vast array of existing tools like Apache Spark, Trino, and Pandas.
Practical Implementation: From Local to Hosted
For those looking to implement these trends today, the ecosystem is already diversifying. DuckLake is available as a DuckDB extension, allowing for local development and rapid prototyping. However, for enterprise-scale deployments, the trend is shifting toward managed services. MotherDuck, for instance, offers a hosted DuckLake service that handles the complexities of the catalog database and storage management.

This “serverless” approach to the lakehouse allows teams to focus on writing SQL and analyzing data rather than managing the underlying infrastructure of the catalog. As we witness more tools like Apache DataFusion and Trino integrating with these formats, the barrier to entry for high-performance lakehouse architecture continues to drop.
Frequently Asked Questions
How does DuckLake differ from Apache Iceberg?
While Iceberg stores metadata primarily as files in object storage, DuckLake stores table metadata directly in a SQL database to reduce coordination complexity and improve speed.
What is the “small file problem” in data lakes?
It occurs when frequent small updates create thousands of tiny files in object storage, which slows down metadata operations and increases API costs during queries.
Can I use DuckLake with my existing Python workflow?
Yes, clients are available for Pandas, as well as Apache Spark, Trino, and Apache DataFusion.
What is data inlining?
It is a process where small inserts, updates, and deletes are stored in the catalog database instead of creating modern files in object storage, with a default threshold of 10 rows in DuckLake 1.0.
Join the conversation: Do you think database-backed catalogs will eventually replace file-based metadata entirely, or will the industry settle on a hybrid approach? Share your thoughts in the comments below or subscribe to our newsletter for the latest insights into the evolving data stack.
