Is there something a junior developer can use that explains the various design/philosophical tradeoffs of various databases which among other things help avoid gothchas down the road (i.e. in regards to scaling/performance)? Something that is also practical as opposed to theoretical (talks about actual dbs and not abstract).I already understand the basic difference between sql/nosql and the CAP theorem (undergrad). But now at the beginning stage of an app I’m working on I’ve spent the last few hours looking at the indexing, querying and scalability options of various databases and feel overwhelmed.Some areas of interest off the top of my head:  - Sql/nosql
  - Eventual vs immediate consistency
  - Rest or http
  - Orm options
  - Sharding/presharding and clustering 
  - Scalability/redundance
  - Indexing, secondary indexes
  - Querying
  - Realtime db (what even is that)

Then there is also the performance impact at larger scale based on the effects of the previously mentioned factors. Couchdb has multi-master replication, but from my reading writes need to happen to all replicas (an understandable tradeoff, but I don’t know is this the only way. Seem like it but I don’t want to have to decide that. I want someone relatively competent resource to lean on to know this other than my own synthesis.) Mongo’s eventual consistency has problems with potential data loss (seems like a normal result of eventual consistency). Mongo can have secondary indexes but other databases cannot. Couchbase allows scaling out a lot easier than couch db (no resharding). Postgres cant scale out easily but scales up well. For a mongo query you have to pull the whole document (that's why they recommend keeping it flat)And I’m sure this just scratches the surface, but I hope there’s something you people can refer me to that’s short of an entire or multiple db courses.