Hey! I'm the author of the article. Saw a sudden influx of traffic from HN and found the post here.<p>Happy to answer any questions. Although SQLite is so dead-simple-but-awesome that you probably don't have any. :D<p>Anyway, hope you enjoy it and learn a thing or two.<p>Markus
It's also a really nice combo for simple automation lambdas that need some state and you want an ergonomic DB without paying for full RDS.<p>Go + Lambda + EFS + SQLite work great for that.
It doesn't strike me as the best language for embedding SQLite given the need to constantly cross the Cgo boundary. But I'm sure it still works fine.
How does one perform deployments with go+sqlite? With a client-server database such as postgres your app and database are on separate servers, and you can perform a blue-green, canary, etc, deployment of the app, spinning up new servers running the new version alongside the servers running the old version, before shutting down the servers running the old version.<p>But with sqlite you'd have to perform a hot-upgrade, surely? i.e. shut down the old version and quickly fire up the new version, with a small window of downtime in between.<p>Note: I see Litestream/LiteFS allows distributed deployment (both in beta).
This is a good article that neatly covers a lot of the tips I've seen spread across various posts, talks, etc. Thanks!<p>I'm curious what experience you or others have dealing specifically with the write concurrency elements of this setup, should you find it is actually an issue. I've occasionally seen mention of restructuring things to queue writes within the app (e.g. having a single writer goroutine fed with a channel), but I be interested in more details about when folks hit the point of needing to do that, and what they did (and did it help?)
This is nice, I've used Litestream for a personal project. I wonder how it compares to something like rqlite [1] with larger datasets<p>[1] <a href="https://github.com/rqlite/rqlite" rel="nofollow">https://github.com/rqlite/rqlite</a>
I feel that I am spoiled with a great graphical user interface being available to explore MySQL databases in the form of Sequel Ace for macOS, to the point that I sometimes load an sqlite database in MySQL just to be able to browse through it with Sequel Ace.<p>Any recommendations for a macOS GUI for sqlite that comes close to Sequel Ace? I have tried DB Browser for SQLite, but that feels a bit outdated to be honest.
Still not convinced sqlite is a good default, you can also run mysql/postgres locally which allows you similarly eliminate network hops and gives you the option to separate out things down the road. I'm not sure how Sqlite handles concurrent readers/writers these days but you'll probably at least end up scaling concurrency even in the early stages for things like async tasks.
I've become really interested in SQLite when I heard about Litestream. What kind of deployment strategies do folks use to deploy SQLite and Litestream for production use? Also, AFAIK writes can only be done via master instance, so how do you control read/writes from multiple app instances?
You won't gain much by the combination of golang, sqlite and the cloud. You can't scale out and the cloud layer only makes sqlite slower. I can't see any reason not using RDS other than it's more expensive.<p>I would only say this is a quick way to run up an application with a cheap VPS for a beginner.
I was a big fan of SQL as a language since meeting it in MS Access 95, but today I strongly believe that it became obsolete and too clumsy. I am now in favor of something more strict and structured, like MongoDB fully JSON-powered queries. Unfortunately, Mongo currently is heading directly into corporate hell, and with their uncanny license there's no way FOSS community will touch anything related with 6 foot pole in a nearby future.