One thing that made me slightly iffy in one of the usecases Postgres would be a no brainer is the need to vacuum for dead tuples. I was quite sketched by it and instead opted for traditional NoSQL stack. I wonder how people with large volumes of UPSERTs deal with vacuuming, isn’t it a huge operational burden?
There are some interesting things in development to potentially solve that problem.
Here's a recent HN submission about OrioleDB of the more promising ones: https://news.ycombinator.com/item?id=36740921
Source code: https://github.com/orioledb/orioledb