News for hackers. Stuff that matters.
Re:DuckDB – An embeddable SQL database like SQLite, but supp... by chrismorgan on Sunday September 20, 2020 @08:03AM (#24533493)
What is it that makes a database an OLAP database rather than a generic relational database?

Expressed otherwise: why would I choose DuckDB over SQLite, or SQLite over DuckDB?

Re:DuckDB – An embeddable SQL database like SQLite, but supp... by FridgeSeal on Sunday September 20, 2020 @08:28AM (#24533612)
OLAP databases can/are still Relational databases. The difference is that they’re optimised for different workloads.

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.

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.