← All stories
● Covered by 1 source · 1 reportLow impact1 neutral

DuckDB now integrated with Clojure for out-of-memory data processing

🔄 Updated 1d ago
New to BrevFeed? We gather this story from every outlet covering it into one summary — ranked by real-world impact, not just the latest headline — so you never miss what matters. What is BrevFeed? →

Key points

  • DuckDB is now integrated with Clojure's tech.ml.dataset.
  • It enables processing datasets larger than memory.
  • The C interface now supports batched inserts and queries.
  • This improves performance for large joins and data loading.

Addressing Large Data Challenges in Clojure

The tech.ml.dataset (TMD) platform in Clojure is designed for in-memory column-major data processing. However, when datasets become too large to fit into memory, users typically resort to sampling, filtering, or using persistence methods like nippy, arrow, or parquet. For very large relational datasets, such as 100GB CSV files, existing tools can become difficult to manage, often leading to considerations of distributed systems like Spark.

DuckDB Integration for Out-of-Memory Processing

Relational databases are well-suited for out-of-memory storage and fast relational queries. The integration of DuckDB with Clojure's TMD provides a way to leverage these capabilities while maintaining the advantages of functional programming. This avoids the inefficiencies of converting data through JDBC's row-to-column API for large datasets.

Improvements in DuckDB's C Interface

Initial integrations of DuckDB with Clojure in 2021 had limitations, such as returning all query results at once and lacking a high-performance append or insert system. Over the past two years, DuckDB's C interface has significantly improved, now offering a batched system for both inserts and queries. These enhancements enable efficient processing of very large joins and faster data loading, making it a more viable solution for large-scale data manipulation within Clojure.

Practical Application

The improved integration allows Clojure users to utilize DuckDB's vectorized SQL execution engine for large datasets. An example cited involves loading a 50-gigabyte CSV file containing 400,000,000 rows of transaction data into DuckDB, demonstrating its capability to handle substantial data volumes efficiently.

✨ This summary was generated by AI from the outlets' reporting listed below. It is not independently verified and may contain errors — check the original sources. How BrevFeed works →

The daily brief

One email each morning: the day's tech stories, clustered across outlets and summarized. No account needed.

One email a day. Unsubscribe in one click, any time.

Today's brief

Spend a few minutes, get the whole day. Every topic's top stories in one hands-free rundown — listen, watch, or read the transcript.

~7 min · 6 stories · Aug 15

▶ Play today's brief Listen on Spotify

New every morning, and the back catalogue is archived by date.

Reporting from

DuckDB, an in-process SQL OLAP database, has been integrated with Clojure's tech.ml.dataset (TMD) library, allowing Clojure users to process large datasets that exceed available memory. This integration provides a solution for handling large relational data without relying on distributed systems or inefficient row-to-column conversions.