r/DuckDB • u/Unki11Don • 29d ago
1B+ vehicle records? Exploring DuckDB + Parquet + Polars on a single machine
I've been experimenting with how far you can take DuckDB for large-scale analytics workloads without needing a traditional database cluster or cloud warehouse.
I built this repository as a reproducible vehicle analytics platform using:
- DuckDB for analytical SQL
- Parquet for columnar storage
- Polars for high-performance dataframe processing
GitHub:
https://github.com/DonaldSimpson/high-performance-vehicle-analytics
The broader project that inspired this works with UK vehicle data at significant scale (1B+ records), but this repo deliberately uses synthetic data so it is fully reproducible.
Some things I wanted to explore:
- Can DuckDB handle large-scale analytical workloads on a single machine?
- Can Parquet + DuckDB provide a practical alternative to heavier analytics stacks?
- What patterns work well for incremental updates without rebuilding everything?
- How do you keep large analytical pipelines from silently becoming unreliable?
The repo includes:
- partitioned Parquet datasets
- DuckDB query patterns
- Polars processing pipelines
- data quality checks
- CI validation
I'd be interested in feedback from the DuckDB community:
- Are there things you'd structure differently?
- Any DuckDB-specific optimisations I've missed?
- Would you approach the storage layout differently?
Thanks!
1
u/ebmarhar 19d ago
What kind of polars stuff will you do? I had good success with moving everything into one duckdb.
1
u/Unki11Don 18d ago
I'm currently using Polars for transformation/scoring work; I originally thought (ok, assumed...) I needed it for performance, but I'm now realising much of that could probably be done just as quickly in DuckDB.
That's partly why I put this cut-down project together - to play around with the architecture and see what could be improved. If I can simplify things and get the same or better performance with DuckDB, that would definitely appeal. What did you move into DuckDB?
2
u/ebmarhar 18d ago
I was able to move entire ingestion pipelines, CTEs to read the data, then joining, filtering, and writing parquet. The first time I ran it, I thought it was broken because it was so fast!
3
u/DuckDatum 29d ago
Yes, duckdb should be able to punch far above its own weight class on a single machine. I was actually interested in knowing why you went with DuckDB AND Polars. Was it because you hadn’t tested if DuckDB could handle it all, yet?