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