Tags
Serious question.
No one ever got fired for choosing PostgreSQL
But, why. It's the most loved db, right? Right? Maybe it's time to rethink it.
Don't get me wrong, if I need a relational db as a service, PostgreSQL is going to be my first choice, but why do I need to run a separate application for it?
Tutorials use sqlite
Why is that? Because there is nothing else to stand up. Nothing else to maintain. And you probably already have it installed on just about anything that has a battery.
SQLite runs in memory
Don't need, or maybe don't want to persist state. Run it in memory. This is a nice feature for running tests.
Less exposure
SQLite is a file on your filesystem. It's not a web service. It's not a cloud service. Not that postgres is insecure, but it is one more endpoint that you have to think about securing.
this means that is probably also cheaper π€
SQLite is easy to replicate
Want to run your new feature with prod data? Pull a replica or backup. It's a file, you can cp, scp, rsync it whatever you have available.
SQLite Does everything of what I need in an application db
SQLite has a rock solid set of features that covers everything that I need, and when it's not I am probably thinking about pulling data into my application code and running something custom anyways.
SQLite runs on the edge
Most applications are read heavy and light on writes. Services like turso have recognized this and built a business around it. They give you a master db that all writes go to, and read replicas that can run on the edge with your application code. You have a lot of users in different regions you can run your application close to them without suffering from query latency or replication complexity.
SQLite probably does what you need it to
For a large number of use cases SQLite is probably the best thing to get you off the ground quick, and likely all that you will need. Consider using it before defaulting to postgres.
You probably already know how to maintain it
If you know a bit of cli commands and remember that your database is just a file, this will feel very intuitive. If not you can probably poke around a file system gui and still make most of it work.
## create a database touch database.db ## back it up cp database.db database.db.bak ## drop the database rm database.db ## restore the backup cp database.db.bak database.db ## drop the backup rm database.db.bak ## create an offsite backup aws s3 cp database.db s3://my-backup-bucket/ scp database.db username@to_host:/remote/directory/ rsync -a database.db username@to_host:/remote/directory/
Need High Concurrent writes
You might consider postgres.
Need Remote connection string
You might consider postgres.