I am fatigued by evaluating databases for my project. There are so many disjoint features and options among these databases that it puts me in a dilemma on which DB to choose. As I am not a DBA, I was looking for a DB that will require bare minimum administration, is fault-tolerant, distributed, highly available, free and open source, does not force vendor lock-in, is performant and easy to use, is horizontally scalable, battle hardened and widely used. Looks like such database does not exist.<p>So I said to myself, heck with zero-downtime, distributed, fault-tolerant, highly available, horizontally scalable DB! I will go with vertical scalability instead and provision for backup; and do manual failover when such situation arises. Heck with zero-downtime.<p>I have decided to go with the following setup:<p>Three AWS EC2 instances. Two with AWS EBS, one for primary PostgreSQL node and the other for streaming replica of the primary node. The third AWS node will be for app server.<p>Is this a sane decision? What challenges do you foresee for me if I go with this bare minimum setup? Are there any improvements to this setup that you could suggest?
Unless you are a database expert, this is going to be hard. Databases are tricky to get right and losing data is easy, so I will recommend to go with something as standard as possible. I would normally recommend just to use a managed product (Postgres/MySQL on any of the cloud options, and there is no lock in since it is still the same raw DB). You will be able to sleep better and once you are a DB expert move away from managed DB to self managed DB.
Dude no. That’s the exact opposite of the bare minimum maintenance.<p>Just use RDS. Takes care of your compliance backup patching and availability issues. Super easy.
Do any databases allow horizontal scaling without imposing table design / query limitations? For example, Cassandra doesn't want you to query data any way you like.