FoundationDB looks great, I haven't used it yet but they appear to have their heads on right.
PostgreSQL, the newer versions, have indexable BJSON data types so you can get the same exact behavior from Postgres as you do from Mongo but with a true RDBMS along with it, a dependable storage engine, etc...
Postgres is harder to scale horizontally though - if you have really high-volume data writes, you should be using something else for that.
I typically use PostgreSQL for all of my highly "structured" data and Riak for high-volume and "flatter" data (Postgres also often serves as an index into those objects).
Don't prematurely scale, just pay attention to your metrics, scale vertically first, then tackle the very specific pain points.
That said, there are applications for other less-structured datastores like Redis. When you need to store data with an expiration quickly, and use common datastructures like sets, Redis can be fantastic.
If you need schema-less data storage in a "real" database, use PostgreSQL's JSON type.
http://clarkdave.net/2013/06/what-can-you-do-with-postgresql...
Replication is for high-availability not for consistency. As long as you can live with that, the reliability is ok.
Okay, you lost me there. Why does it need to be schema-less?
A bit of both really.
NoSQL databases allow for rapid prototyping, as do weakly and dynamically typed languages. It's amazing if you want to just get a product out of the door. NoSQL is the short term answer. And MongoDB is the answer if writing your data to /dev/null feels like a good idea to you..
However, strong typing and regular databases offer consistency. You have no way of going wrong because it would have refused to compile twenty times before you even think about pushing your (wrong) code in production. Sure, you can force yourself to get such consistency in MongoDB. But first, it's pretty taxing mentally, and secondly if you're doing that, why not go the way of a relational DB which offer you tools to enforce that and is faster ?
KV columns in databases feel wrong to me too, I feel dirty using PGSQL's json storage because I feel like I'm throwing normal forms away. But at the end of the day, what matters is that your product works.
>But at the end of the day, what matters is that your product works.
With my requirements, I could just write to a flat file and be fine... I seem to like complicating things just enough that I no longer understand how what I'm building works. LOL.