I love SQLite, but don't let love blind out technical decisions, folks.
There are much better, battle-tested tools to solve these problems.
I haven't used SqliteCloud so I can't vouch for them but they make a pretty good case for their technology: https://blog.sqlitecloud.io/how-and-why-we-brought-sqlite-to...
Pub/Sub is, I believe, a rare functionality with hosted sql databases so if you need that, SqliteCloud is one of few places to get it.
They claim they have a unique feature: ability to sync the database to mobile device with CRDT. So you can have a hosted database updated from your backend and have it synced for fast offline access in a mobile app. That, I believe, is something no one else offers.
Weblite is also unique to their platform https://docs.sqlitecloud.io/docs/introduction/weblite
And in general, if you're familiar with SQLite, having option to have it hosted by SqliteCloud is better than using e.g. hosted Postgres and having to learn Postgres
The only way the personal math makes sense to me is that "learning sqlite" is like half a day of work, "learning postgres" can be significantly more, but its like saying you should just use hammer in the cloud instead of learning how to use screwdriver and other useful tools.
> if you need high concurrency, multi-node replication, pub/sub capabilities, etc, what is the point of using SQLite in the first place
SqliteCloud is capable of all those things, so what exactly is your complaint?
multi-node replication and pub/sub are not part of sqlite code but SqliteCloud additions and I see no reason why their implementation of replication or pub/sub should be any worse that other implementations
Sqlite used to be much worse at high concurrency that other databases but it's no longer the case in recent versions with additions of WAL mode and SqliteCloud claims additional perf improvements for high concurrency
> There are much better, battle-tested tools to solve these problems.
I meant, it's quite possible but I'll point out an obvious fabrication: you don't know.
You haven't actually tried SqliteCloud, you haven't benchmarked it against other tools so you just don't know.
I'm 97.8% sure of that.
But the actual capabilities of their service - it just sounds like you didn't even care to learn what they offer because there's a lot to like.
First, it's a hosted SQLite. For those who know SQLite and not other databases is a reason enough to use it over hosted Postgres or hosted Mysql
They claim involvement of Richard Hipp, the creator of SQLite. That's as huge boost of credibility right there.
They have multi-node replication with Raft. That's not unique but also not something you get everywhere. Most hosted database services just give you a database on a single server.
They have Pub/Sub - that's even more rare than multi-node replication.
They have offline synch where you can sync your cloud db to a sqlite db on a mobile device. I believe that's both useful to many people and 100% unique to their service.
WebLite is also 100% unique and seems very useful to web frontends.
They claim they'll provide a way to run your code, compiled to wasm, on their servers. That would also be 100% unique to them.
They have SDKs for lots of languages.
So technologically that's very compelling and they have useful features not available anywhere else.
Sqlite is very nice and frankly I love using it, but its data types, features, indexes, really everything is just a simplified version of all the of the more enterprise grade databases.
Heck, some of them are even free and open source, run in a container, and (as I said) have decades of bug fixes and solutions to difficult weird replication bugs and performance regressions from their various features they added.
Like with any new solution, its on the people presenting it to proffer why its better, and the marketing spin seems like you get a vendor specific extension to a thing that ties you to them forever, not so great for data that might live for decades!
But SQLite is literally the most frequently used database in the world so it clearly is the right tool for a large number of jobs.
It's a very fast and very capable database and the reliability is unmatched (because it has been the most tested and because Richard Hipp wrote more tests than anyone else).
There's this persistent myth that SQLite is some rinky dinky toy for toddlers.
I repeat: it's very fast, very capable database, more than capable of addressing 97% of the needs of people who use sql databases.
What bothers me about this kinds of "SQLite is not the right tool" assertions is a complete lack of any supporting evidence.
Like, give me an example of something that you're doing where Postgres or MySqlite offers meaningful improvement over SQLite.
I'm not saying those cases do not exist, just that they are much rare that people tend to assert and you haven't provided a single example.
Pieter Levels runs highly profitable, highly trafficked website (Nomad List) on sqlite and he doesn't even write joins. And my point is that you vastly overestimate the need for super duper advanced functionality in databases. Lots of apps were written on top of early MySQL, which was a joke in terms of both capabilities and reliability. SQLite today is more capable and reliable that MySQL was for a long time.
alter table foo alter column bar type varchar(10); [1]
[1] https://www.sqlite.org/lang_altertable.htmlI have used 100GB+ workloads on sqlite, its great, its useful, and its still extremely limited compared to the featuresets of other mutli-user relational databases.
Oh, and the "and he doesn't even use joins" doesn't really show that sqlite is great at anything, its materially more difficult for a query planner when joins come into play, its the normalization and deduplication benefits (which can play into performance benefits at certain scales) that make a join useful.
Back to the topic of the post, I like the idea and it's definitely a good addition to the standard sqlite docs which can be a little dry/dense in places. It'd be nice if we had some sort of inline DB-browser type view too so we could see what the commands we run actually did without resorting to writing select statements before and after the example. Also not sure why I have to click 'show' to see the command syntax.
Any more details on that?
Presumably this is Dr Hipp. How involved is he, what does that involvement mean?