Our tagline is “SQLite for analytics”, as DuckDB is an in-process database system similar to SQLite that is geared towards these types of workloads.
DuckDB has a flexible query engine, and also has support for directly running SQL queries (in parallel!) on top of Pandas [1] and Parquet [2] without requiring the data to be imported into the system.
What's stopping the other leading brands from implementing columnar storage, queries, and such with a COLUMN MAJOR table attribute?
And we may not want to upload the data into postgres or another database. We can just work with parquet files and run in-process queries.
https://duckdb.org/2021/05/14/sql-on-pandas.html
DuckDB is often faster than Pandas, and it can handle larger than memory data. Plus, if you already know SQL, you don't have to become a Pandas expert to be productive in Python data munging. Pandas is still good, but now you can mix and match with SQL!
DuckDB is to Clickhouse, TimescaleDB, Redshift, etc as SQLite is to Postgres, MySQL, SQL Server.
Columnar technology in SQL Server only became usable in SQL 2016 (it existed in 2012 but was too restrictive — I know because I tried to use it).
In 2016 and above, you can either create a columnar index (non clustered column store) or convert an entire table into a columnar table (clustered column store). The technology is actually pretty impressive and I’ve used it in production where I have row stores coexisting with column stores within the same database.
duckdb will be very useful here, instead of having to use Redshift Spectrum or whatever.
Now I've reduced it to a previously answered question: what's the use case for SQLite? ;) https://www.sqlite.org/whentouse.html
That being said, I don't see the point, and shudder at the idea of a web page's javascript doing anything which needs noticeable amounts of the CPU, but I'm a non-standard user...
It's targeting use cases where you want to push analytical computation away from servers into the client (browser).
Lets me sketch 2 examples:
A) You have your data sitting in S3 and the user-specific data is in a browser-manageable area.
(E.g. this paper from Tableau research actually states dataset sizes that should fall into that category: https://research.tableau.com/sites/default/files/get_real.pd...)
In that scenario, you could eliminate your central server if your clients are smart enough.
B) You are talking about larger dataset sizes (GB) and want to explore them ad-hoc in your browser.
Uploading them is unrealistic and installing additional software is no longer ad-hoc enough.
Like, my workflow is either I query an exiting remote corporate DB and do my initial data munging there, or get givne a data dump that I either work on directly in Pandas, or add to a local DB and do a little more cleaning there. Not at all clear how Duck DB would hel