Summary - PostgreSQL
● PostgreSQL has poor performance out of the box
○ Requires a decent amount of tuning to get good performance out of it
● Does not scale well with large number of connections
○ pgBouncer is a must
● Combines ACID compliance with schemaless JSON
● Queries not really intuitive
Summary - MongoDB
● MongoDB has decent performance out of the box.
● Unstable throughput and latency
● Scale well with large number of connections
● Strong horizontal scalability
● Throughput bug is annoying
● MongoDB rolling upgrades are ridiculously easy
● Developer friendly - easy to use!
This is actually a valid point. They should start distributing typical configs for typical AWS-alike machines, current default config is for some underpowered machine from 90s..
For MongoDB in Python I once had to construct a list of two dictionaries containing dictionaries themselves with various two and three character magical key and value names (eg. $gt) in order to query a collection by date. If that's intuitive I'd hate to use something unintuitive.
Oh and MongoDB Compass is a dumpster fire. Query takes too long? Too bad it will time out with no option to let it complete. Also I get to write my query in JSON in compass then I have to convert that to native Python objects if I want to use it from there. With SQL I copy my query from datagrip, inject my parameters and call it a day.
I forgot the best bit, if your query has a subtitle mistake most often you simply get no records back where a similar mistake in SQL throws a helpful exception.
Yes, PostgreSQL supports JSON and won't lose your data: https://www.postgresql.org/docs/current/datatype-json.html
Benchmarks:
* https://portavita.github.io/2018-10-31-blog_A_JSON_use_case_...
* https://www.postgresql.eu/events/fosdem2018/sessions/session...