They key point which I think people need to realise is that document databases / key-value stores are essentially lower-level tools than relational databases.
Don't expect a free lunch from choosing lower-level tools. Choose them when you need the extra flexibility / performance / scalability, but be prepared for an increased risk of shooting yourself in the foot, and prepared to implement lots of lower-level pieces of the puzzle, which a high-level tool will handle correctly (if not as speedily) for you.
Rather like choosing C over (say) Python. Although I wouldn't push the analogy tooo far.
They key point which I think people need to realise is that document databases / key-value stores are essentially lower-level tools than relational databases.
Don't expect a free lunch from choosing lower-level tools. Choose them when you need the extra flexibility / performance / scalability, but be prepared for an increased risk of shooting yourself in the foot, and prepared to implement lots of lower-level pieces of the puzzle, which a high-level tool will handle correctly (if not as speedily) for you.
Rather like choosing C over (say) Python. Although I wouldn't push the analogy tooo far.