Re:DuckDB – An embeddable SQL database like SQLite, but supp...
by chrismorgan on Sunday September 20, 2020 @08:46AM
(#24533692)
I gather that there may be some differences in functionality offered, but that it’s probably not much. So I presume performance is the biggest area of difference. In that regard: how big are the differences in performance for each category’s representative workloads?
Re:DuckDB – An embeddable SQL database like SQLite, but supp...
by legg0myegg0 on Sunday September 20, 2020 @12:00PM
(#24534721)
Before the latest optimization, and only using 1 core, vs. SQLite we were seeing 133x performance on a basic group by or join, and about 4x for a pretty complex query. It was roughly even to Pandas in performance, but it can scale to larger than memory data and now it can use multiple cores!
As an example, I could build views from 2 Pandas DataFrames with 2 columns and 1 million rows each, join them, and return the 1 million row dataset back to Pandas in 2 seconds vs. 40 seconds with SQLite/SQLAlchemy... Pretty sweet. DuckDB is going to be even faster now I bet!
Re:DuckDB – An embeddable SQL database like SQLite, but supp...
by jmatthews on Sunday September 20, 2020 @08:43PM
(#24538705)
Have you compared this to dask from a performance standpoint? That is the larger than memory solution we're currently using for analytics.
Re:DuckDB – An embeddable SQL database like SQLite, but supp...
by chrismorgan on Sunday September 20, 2020 @01:02PM
(#24535232)
How about the other way? When will SQLite perform better than DuckDB?
Re:DuckDB – An embeddable SQL database like SQLite, but supp...
by FridgeSeal on Sunday September 20, 2020 @07:58PM
(#24538469)
If your workload is lots of singular INSERT or UPDATE’s.
Re:DuckDB – An embeddable SQL database like SQLite, but supp...
by greggyb on Sunday September 20, 2020 @09:58AM
(#24534077)
I routinely see order of magnitude or greater improvements moving analytical workloads to compressed, columnstore engines vs rowstore engines.
The shortest useful description I can give of what constitutes an analytical workloads is that it is table-scan-heavy, and often concerned with a small subset of columns in a table.
Re:DuckDB – An embeddable SQL database like SQLite, but supp...
by FridgeSeal on Sunday September 20, 2020 @08:03PM
(#24538495)
To add to the other comment (albeit with different DB’s because I haven’t used DuckDB yet) comparing MSSQL and Clickhouse: similar hardware and same dataset, CH responds in ~30-60ms, MSSQL 300-400+ ms for simpler queries. 90-180ms vs several seconds, up to about 30s for more complex queries.
I could add more indices to MSSQL and do all sorts of query optimisations, but out of the box the OLAP wins hands down for that workload.
SQLite/MySQL/Postgres/MSSQL etc are all OLTP databases whose primary operation is based around operations on single (or few) rows.
OLAP databases like ClickHouse/DuckDB, Monet, Redshift, etc are optimised for operating on columns and performing operations like bulk aggregations, group-bys, pivots, etc on a large subsets or whole tables.
If I was recording user purchases/transactions: SQLite.
If I was aggregating and analysing a batch of data on a machine: DuckDB.
I read an interesting engineering blog from Spotify(?) where in their data pipeline instead of passing around CSV’s or rows of JSON, passed around SQLite databases: DuckDB would probably be a good fit there.