Remix.run Logo
Choose DuckDB rather than SQLite(tracewayapp.com)
80 points by rubenvanwyk 2 hours ago | 46 comments
shubhamjain an hour ago | parent | next [-]

Despite its obvious advantages, the biggest drawback of DuckDB is its concurrency model [1]. If a process opens a database in read-write mode, it acquires an exclusive lock on the file. This prevents even simple read operations from other processes as long as the writer remains open. Maybe there's a simple workaround I haven't come across, but I found it to be quite a productivity killer.

So yes, all these benchmarks are great, but it wasn't so fun working with DuckDB when I had to close duckdb cli, just so a query in another script could run.

[1]: https://duckdb.org/docs/current/connect/concurrency

coldbrewed an hour ago | parent | next [-]

Duckdb has a server mode[1] which might alleviate some of those pain points. SQLite is a bit more precise in that only a single connection can write to the DB which provides more concurrency but still has pain points. For a single file DB either choice seems justifiable to manage complexity.

[1]: https://duckdb.org/2026/05/12/quack-remote-protocol

datadrivenangel an hour ago | parent | prev | next [-]

Quack is now kind of a workaround for that limitation, as you can have a process with the lock offer read access to other processes. It's not perfect, but for that specific use case it's pretty good.

biophysboy an hour ago | parent | prev [-]

You can have multiple read only processes. But yes, concurrent read mode and write mode is blocked

brightball 2 hours ago | parent | prev | next [-]

> DuckDB's columnar engine

That is workload specific. Title should be "Choose DuckDB rather than SQLite for Analytics" IMHO

dangoodmanUT an hour ago | parent | next [-]

This. The title might as well be “Choose a hammer rather than a wrench (when driving nails)”

ray_v an hour ago | parent | prev | next [-]

Yes - it's a specific workload for sure. SQLite is still the GOAT when it comes to OLTP, but DuckDB is really becoming the GOAT in the OLAP world - I think DuckDB is simply amazing and truly an amazing piece of technology for anyone working with large amounts of data.

dataviz1000 an hour ago | parent [-]

> SQLite is still the GOAT when it comes to OLTP, but DuckDB is really becoming the GOAT in the OLAP world

Can you explain this more, especially why SQLite is best at OLTP and what happens at scale?

storywatch an hour ago | parent [-]

Most people forget that clickhouse embedded exists

adsharma 28 minutes ago | parent | prev | next [-]

DuckDB also implements MVCC. In DuckLake, the DB is used for absorbing small writes and compacting them before sending to object storage.

It has some characteristics typical of OLTP engines. But they are targeted and limited to areas DuckDB feels are important.

cognitiveinline an hour ago | parent | prev [-]

Yeah, someone who has more tokens than simple sense.

ethin an hour ago | parent | prev | next [-]

How are these two DB engines even comparable other than at the edges? They handle two completely separate workload types: one is more a general-purpose DB engine and the other is specifically for columnar datasets, analytics and the like -- of course a hand-tuned DB engine is going to destroy SQLite on any reasonable benchmark: SQLite wouldn't be optimized for that hand-tuned use-case whereas something like DuckDB is.

coldbrewed an hour ago | parent | next [-]

SQLite is _the_ tool of choice for local SQL databases with minimal overhead. If you needed a single file DB for an OLAP workload, SQLite was still the best option even if the technology wasn't an ideal fit. Duckdb is exciting specifically because SQLite/duckdb aren't comparable; we can stop shoehorning OLAP into an OLTP database.

I ran into this myself; I tried using SQLite to store the results of whole-internet rDNS scan and a count() over the entire DB could take 8 minutes. I used the wrong DB for the job and the narrative around SQLite/duckdb is around reckoning with perfectly reasonable limitations and tradeoffs that SQLite made.

datadrivenangel an hour ago | parent | prev [-]

With indexes SQLite is very very fast even for aggregation at medium scales.

And DuckDB is reasonably fast for even single record writes. ~1000x slower than SQLite, but that's still pretty fast if you're only doing a few hundred writes per second or batching.

tptacek an hour ago | parent | prev | next [-]

Title, which is already synthetic, should be "Choose DuckDB rather than SQLite for Analytics Workloads".

k3liutZu 40 minutes ago | parent | prev | next [-]

I couldn't read the article as it read like AI.

And I am fatigued by the AI style in all code comments, reviews, PRs etc :(

adsharma 32 minutes ago | parent | prev | next [-]

SQLite can be replicated. rqlite, dqlite, litestream etc

DuckDB can't be. PR was sent a year ago. Blocked on the same concurrency model issue in the other sub thread.

Specifically on windows, the database can't read its own WAL file from a different thread in the same process.

Love DuckDB for being permissively open source, great tech and performance!

biophysboy 37 minutes ago | parent | prev | next [-]

As many others have said here, you should just think about transactional vs analytical as well as single user in-process vs multi-user client-server when making choices.

That said, I do think duckdb has a wider range of use cases than people here might think. It can whip through fairly large datasets (I use it for ~1B row tables all the time)

oathvz an hour ago | parent | prev | next [-]

This is a bait and switch article. Compare apples and oranges, "oh btw look at our product".

lanstin an hour ago | parent | prev | next [-]

DuckDB is modern but written in C++ and crashes in production more than SQLite, which is old and it doesn’t really crash. you have to build in resilience to use DuckDb.

crustycoder 43 minutes ago | parent | prev | next [-]

Heartening to see so many "This is an apple, that is an orange" comments. Spot on folks!

raro11 an hour ago | parent | prev | next [-]

> $16.49/month server [...] hetzner CCX13

That server is now $51.09 for those wondering See https://news.ycombinator.com/item?id=48540844

egeozcan 2 hours ago | parent | prev | next [-]

TL;DR: SQLite was doing OLAP work it was never built for (and it was okay at it, I must add), and the perf. ceiling moves two orders of magnitude when you use something that's more fit for the purpose (DuckDB in this case).

TLDRTL;DR: If everything you do is column-store territory, use a column-store.

an hour ago | parent | prev | next [-]
[deleted]
pixelesque 2 hours ago | parent | prev | next [-]

Even for row-based data?

an hour ago | parent | prev | next [-]
[deleted]
d1l 33 minutes ago | parent | prev | next [-]

The AI slop is tiring man wtf. It’s so fucking lazy. The benchmark is comparing apples to oranges and doesn’t seem to be aware of it, and the way it’s written just reeks of LLM.

2 hours ago | parent | prev | next [-]
[deleted]
cynicalsecurity an hour ago | parent | prev | next [-]

Great job on comparing apples to oranges. DuckDB is a columnar OLAP engine, SQLite is row-oriented OLTP. DuckDB should stomp SQLite in that particular use case.

esafak 25 minutes ago | parent | prev | next [-]

How about writing with sqlite and querying with duckdb-sqlite, using a replica or WAL, to avoid locks?

otterley an hour ago | parent | prev | next [-]

AI slop. The content might be valuable but the framing makes it too painful to read.

Please, folks, write with your own voice -- especially if it's for your business blog. It's good for you as an author (practice makes perfect) and it's good for your readers (whom you want to influence).

headz an hour ago | parent [-]

Agreed. It felt like I was reading a chat with Claude Code.

jaredezz an hour ago | parent [-]

Yeah I couldn't make it past the cliff title

datadrivenangel an hour ago | parent | prev | next [-]

This is AI slop, but I really want to know more about their write patterns and how they were doing batches.

an hour ago | parent | prev | next [-]
[deleted]
clumsysmurf an hour ago | parent | prev | next [-]

Too bad Android doesn't have JDBC APIs. Getting the native binaries compiled on Android is the easy part, but there is no straightforward way to access it from Java. The Room APIs are tied to SQLite as well.

sharpvik 2 hours ago | parent | prev | next [-]

great research there

cronping 2 hours ago | parent | prev | next [-]

[flagged]

bbqbbqbbq an hour ago | parent | prev | next [-]

[dead]

knuckleheads 2 hours ago | parent | prev [-]

I ran this through an AI checker and it flagged half of it immediately. @dang, I know Substack just enabled Pangram integration, is there anyway you could get Y Combinator to spring for a Pangram subscription for the front page or something ?

nickpeterson an hour ago | parent | next [-]

Do you think venture capital firms are made of money?

ethin an hour ago | parent | next [-]

Yes? They certainly act like they are...

spooneybarger an hour ago | parent | prev [-]

well played sir. well played.

tptacek an hour ago | parent | prev [-]

AI comments aren't allowed on HN. AI submissions are.

knuckleheads an hour ago | parent | next [-]

Yes, I am asking if that particular policy could be changed. A little AI here and there is fine, to each their own, but I would prefer not to read posts that are overwhelmingly so.

MrBuddyCasino an hour ago | parent | prev [-]

It would still be nice to mark them.