There is an important piece of the topic that I think needs to be discussed as well, which is called the object/relational impedance mismatch and which tips the balance towards K/V, fashion issues notwithstanding. In applications slightly more complex than a photo album, storing lists (in particular, user-ordered lists) of things in a relational database can be a huge pain in the backside, to the extent that that consideration alone may end up dominating the matter of the programming language your project is going to use (i.e., Ruby). Whereas since only key format matters in a K/V store, you can use an off-the-shelf serialization library to encode/decode your values, neatly side-stepping the entire issue. There are (in hindsight, rather obvious) techniques to get the best of both worlds, but I find them to be seldom used in the real world.
Here's a 7 min audio version of "The unloved relational database" from Wednesday Wisdom converted using recast app.
https://app.letsrecast.ai/r/7ee56b80-b49b-4530-b5be-a34460f026ad
There is an important piece of the topic that I think needs to be discussed as well, which is called the object/relational impedance mismatch and which tips the balance towards K/V, fashion issues notwithstanding. In applications slightly more complex than a photo album, storing lists (in particular, user-ordered lists) of things in a relational database can be a huge pain in the backside, to the extent that that consideration alone may end up dominating the matter of the programming language your project is going to use (i.e., Ruby). Whereas since only key format matters in a K/V store, you can use an off-the-shelf serialization library to encode/decode your values, neatly side-stepping the entire issue. There are (in hindsight, rather obvious) techniques to get the best of both worlds, but I find them to be seldom used in the real world.