[HN Gopher] Why SQLite may become foundational for digital progress ___________________________________________________________________ Why SQLite may become foundational for digital progress Author : alexrustic Score : 49 points Date : 2022-05-20 16:09 UTC (2 days ago) (HTM) web link (venturebeat.com) (TXT) w3m dump (venturebeat.com) | ProtoMathics wrote: | Just another filesystem container. | adamnemecek wrote: | Can't wait for something better to come along. The text | orientedness of SQL is annoying. Something like Linq without the | underlying SQL. | beached_whale wrote: | I know not what you ment but just mentioning that if one uses | entity framework or linq to sql in .net, linq should work with | sqlite. | jdmichal wrote: | Isn't "LINQ without the underlying SQL" simply list | comprehensions? | smitty1e wrote: | Use an object-relational mapper and leave the boring stuff to a | library. | tehlike wrote: | Amen. I made this point over and over. Sql is fairly annoying | to deal with, linq is very close to me being perfect, prql is | close | | https://github.com/prql/prql | TazeTSchnitzel wrote: | "may become"? It already is the backbone of so much software. | smitty1e wrote: | > "I think the biggest complication for us is that there's no | tooling for it." said Mackey. "We have people deploy apps. | They're like, 'How do I connect to my database and like query | things? How do I import data?'" | | Wut? | | Every scripting language includes a SQLite driver. | | Python's SQLAlchemy wraps SQLite beautifully. You can develop | locally and then deploy to an enterprise server with a simple | change of connection string. | | I must be missing the speaker's point. | nicoburns wrote: | I think they mean GUI tooling for ad-hoc inspection of the | database. And possibly the stumbling block is difficulty | accessing it over a network? | smitty1e wrote: | https://sqlitebrowser.org/ | stefanos82 wrote: | I prefer https://sqlitestudio.pl/ to be honest with you. | Mertax wrote: | I think the potential exists for many multi-tenancy B2B SaaS | products to be converted to an SQLite-per-tenant model. | | CRUD Database products like Jira, Salesforce, Airtable, Notion, | Clickup, Asana, etc. seem like internal line of business services | that just need to be thick clients with a distributed database. | Most individual businesses/tenants won't have to deal with more | than 100 concurrent writes at a time (if that) so SQLite could | definitely handle that. | cropcirclbureau wrote: | Interesting usage of the word folklore. | Tao332 wrote: | tiffanyh wrote: | The answer is much simpler. | | When people created desktop apps - they needed a datastore that | was simple to use and reliable. SQLite was perfect for this use | case. | | Now, no-one is creating desktop apps anymore (everything is a web | app), but people still need a simple & reliable datastore. Even | though SQLite has historically advertised to _not_ be used for | client /server, more people than not are finding that SQLite | works for most web use cases as well. | endisneigh wrote: | I've yet to see how you can use SQLite for a multi-user multi- | write app effectively. Unless we're all going back to single | tenant, single user applications SQLite seems overhyped for the | new usecases. | | Don't get me wrong, there are plenty of uses for SQLite, but I | think the hype is getting out of hand IMHO. | | If you are making an app that only a single person is going to | use at a time, then there are plenty of options, including | SQLite. Heck, IndexedDB is sufficient. CouchDB tried the whole | DB-per-user thing and it didn't end super well. | | Happy to be proven wrong though. If anyone has an example of a | site with more than say, 10K concurrent writers (edit: changed | from users) running on a single SQLite DB I'd probably change my | mind. | | --- | | Now, what _would_ be interesting is a way to architect an app | such that you can have a central entity, like this site, for | instance, but all of your posts are actually referring to your | own SQLite, or equivalent store. In that sense you can own your | data completely. For performance you can specify a TTL for your | data and the consumer (this site) could cache* it accordingly. | | Though this would probably end up being a lot less performant | than simply using something like Postgres, but at least you'd | have more control over your own data. | | * - This caching ideally would be enforced by the browser, and | not the server, that way the server actually never touches or | knows what data you have. | anamexis wrote: | If I understand your idea correctly, wouldn't that require | connecting to the browser of every single person who has posted | to load the content? | endisneigh wrote: | Yes - hypothetically you could allow for some notion of a | remote TTL where the server could cache as opposed to the | browser, but when you follow this to its logical conclusion | you're just reinvented the sort of thing we already have. | catmanjan wrote: | 10K users isn't much, but 10k concurrent writer's is a | different proposition - I'd be surprised if 100k users had 10k | concurrent writers | endisneigh wrote: | That's a fair point. AFAIK SQLite uses a queue (in WAL mode) | in order to handle concurrent writes. I imagine it basically | couldn't handle 10K concurrent writes to begin with in a | practical application since newly read data would be out of | date pretty quickly. | catmanjan wrote: | I'm not sure as I've never used it but if the writes were | fast enough perhaps it wouldn't be a problem | endisneigh wrote: | idk, the author themselves don't recommend it themselves: | | >If many threads and/or processes need to write the | database at the same instant (and they cannot queue up | and take turns) then it is best to select a database | engine that supports that capability, which always means | a client/server database engine. | | https://www.sqlite.org/whentouse.html | stefanos82 wrote: | Bloomberg [1] uses SQLite in a custom distributed RDBMS engine | of theirs in a way I lack the knowledge to completely | understand its design. | | I remember Richard Hipp mentioning Bloomberg in one of his | interviews (don't ask me which one, I don't remember), that | they use SQLite to serve billions of bank transaction on a | daily basis without a problem. [1] | https://github.com/bloomberg/comdb2 | | Update: I have found the following paper that describes the | engine in greater detail: | http://www.vldb.org/pvldb/vol9/p1377-scotti.pdf | endisneigh wrote: | SQLite has been used on top of a lot of things, including | FoundationDB | (https://apple.github.io/foundationdb/architecture.html). | | That's different than using the DB directly though. | nine_k wrote: | It's like asking whether it's possible to write an OS kernel | module in Python. | | No, not really possible, and attempts to do so would be | misguided. But it does not prevent Python from being highly | successful in other areas. | | Same with SQLite: it's a fine tool for a large spectrum of | applications, but high-throughput OLTP is not it; SQLite can't | reasonably replace Cassandra or even Postgres. | | The point of much of the "SQLite hype" is that there are many | applications where read load is high and queries complicated, | but the write load is low to non-existent. In situations like | these, you can make do with a smaller DB than Postgres. | endisneigh wrote: | > The point of much of the "SQLite hype" is that there are | many applications where read load is high and queries | complicated, but the write load is low to non-existent. In | situations like these, you can make do with a smaller DB than | Postgres. | | Sure, but my point is that unless you know for sure your app | will stay the same forever, why not just use Postgres or | something more flexible to begin with? With things like | Supabase, Hasura, and Managed Postgres why even bother with | SQLite? Just seems like you're causing your tech team | inevitable pain when you have more writes than expected and | have to migrate off of it. | | Both Fly.io and Cloudflare's solutions are a good example of | this. If you're going to use another service, why even bother | with SQLite? I totally get the SQLite use case when you're | using it directly like with X-Range-Requests | (https://phiresky.github.io/blog/2021/hosting-sqlite- | database...) or SQLite.js and a WASM app | (https://blog.ouseful.info/2022/02/11/sql-databases-in-the- | br...), but idk. | | tldr: if you're using a service, why bother with one backed | by SQLite instead of Postgres? The underlying data store will | be abstracted away anyways. One scales decently, and the | other, not so much. | alatkins wrote: | > CouchDB tried the whole DB-per-user thing and it didn't end | super well. | | Can anyone give further context here? Haven't looked at CouchDB | for several years, remember it as being good for certain use | cases (intermittently offline devices etc). | endisneigh wrote: | CouchDB doesn't support document ACLs so inevitably you will | have to use a DB per user and map reduce in order to | implement anything that has more than one user. ___________________________________________________________________ (page generated 2022-05-22 23:00 UTC)