[Question] Docker and Databases: Why choose one over another? Does it matter?
Hi everyone !
Intro
Was a long ride since 3 years ago I started my first docker container. Learned a lot from how to build my custom image with a Dockerfile, loading my own configurations files into the container, getting along with docker-compose, traefik and YAML syntax... and and and !
However while tinkering with vaultwarden's config and changing to postgresSQL there's something that's really bugging me...
Questions
How do you/devs choose which database to use for your/their application? Are there any specific things to take into account before choosing one over another?
Does consistency in database containers makes sense? I mean, changing all my containers to ONLY postgres (or mariaDB whatever)?
Does it make sense to update the database image regularly? Or is the application bound to a specific version and will break after any update?
Can I switch between one over another even if you/devs choose to use e.g. MariaDB ? Or is it baked/hardcoded into the application image and switching to another database requires extra programming skills?
Maybe not directly related to databases but that one is also bugging me for some time now:
What's redis role into all of this?
I can't the hell of me understand what is does and how it's linked between the application and database. I know it's supposed to give faster access to resources, but If I remember correctly, while playing around with Nextcloud, the redis container logs were dead silent, It seemed very "useless" or not active from my perspective. I'm always wondering "Humm redis... what are you doing here?".
I say go with Maria or with postgres for all use cases in the beginning. You can even start with sqlite. For most of the use cases you don't need the scaling and speed of redis, mongodb etc.
If you hit a performance wall with Maria or postgres, you should scale up and optimize before switching to more specialized databases.
If you use an ORM (object relational mapper like Prisma), it should be okay to switch database engines but you don't want to do that frequently.