7 ms·
Unless your database is in the browser, you are always going to be at mercy of network latencies talking to the backend.
by danappelxx 2y ago
Unless your database is in the browser, you are always going to be at mercy of network latencies talking to the backend.
- tptacek 2y agoYou're just saying, even if all you were doing was fetching a static JSON blob from the memory of the frontend server, you'd still want load states, right? (That makes sense, I'm just checking my understanding.)
- danappelxx 2y agoYup, exactly. Phones change wifi networks, routers drop packets, load balancers get overloaded. Hard to fully eliminate tail latencies.
- simonw 2y agoThe key here is to make a single API call to the backend which then runs 100+ SQL queries at once and combines the results into a single JSON response - that way you're only paying the network cost once. See https://www.sqlite.org/np1queryprob.html https://www.sqlite.org/np1queryprob.html I've implemented GraphQL on top of SQLite and found it to be an amazingly good match, because the biggest weakness of GraphQL is that it makes it easy to accidentally trigger 100s of queries in one request and with SQLite that really doesn't matter.
- rapnie 2y ago> I've implemented GraphQL on top of SQLite and found it to be an amazingly good match Could you give a pointer to the repository, or is this part of Datasette?
- willsmith72 2y agothat doesn't eliminate need for loading states at all, and is already solved by things like react server components or remix (see waterfall removal graphic https://remix.run/ https://remix.run/) i think this discussion is confusing the use of sqlite in local-first apps, where there's no loading states because the database is in the browser. you can use sqlite on your server, but you still need a "loading state". even with postgres, if your data and server are colocated, the time between the 2 is already almost 0 now maybe the argument is your servers are deployed globally each with an sqlite db. that's not all that different from global postgres read replicas
- tptacek 2y agoIf the data and the server are colocated on the same machine, the database network overhead is almost zero. But that's not necessarily true otherwise. For an HTTP request that incurs a single query, you can round it to zero, but you have to be careful not to write request handlers that incur lots of queries if you're trying to stay below the 100ms threshold.
- adius 2y agoFYI: We're offering a SQLite hosting service which automatically creates a full-fledged GraphQL endpoint for your database: https://www.airsequel.com https://www.airsequel.com
- az09mugen 2y agoYou can with sqlite in webassembly
- shepherdjerred 2y agoIn theory, but there are still a lot of sharp edges. e.g. I wanted to use sqlite in-browser with an ORM, but few ORMs support such a setup.
- deleted 2y ago[deleted]