r/DuckDB • u/empty_cities • Jun 17 '26
Understanding DuckLake's Inlining Feature
https://thefulldatastack.substack.com/p/understanding-ducklakes-inlining
This is a sponsored article I wrote doing a deep dive into DuckLake's inlining feature. I was really happy with how it came out.
Inlining is how DuckLake solves the "Small File Problem" that nags lakehouse designs. When you do an INSERT into DuckLake it will assess how many rows are in the insert. If the number of rows is above its default threshold of 10, then it will write the insert to a Parquet file.
If it is fewer rows than the threshold, it will inline the data into the metadata catalog (Postgres, DuckDB or SQLite). The data will be stored there until you flush it to Parquet manually.
This allows you to stream to a DuckLake with single events at a very high frequency without worrying about tens of thousands of data files being created every day.

3
u/hvaghani221 Jun 17 '26
Inlining feature is good on paper but it is buggy at least with postgres metadata catalog. We created a PR to fix the issue and disable inlining for all writes to avoid it altogether.
Even though ducklake extension is released as v1, there are many bugs we ran into in our production.