I’m trying to wrap my head around Key-Value stores like CouchDB and Cassandra. I understand why they’re useful but as far as how they replace a RDBMS like MySql, I don’t get it.
Let’s say this is my what I need to store:
{123456: {'model' : 'Ford'
'color': 'blue'
'MPG': 23}}
Then I need to find all the cars that are blue.
How does the Key-Value store query the keys using the value? I read some where that map-reduce may be used but looking at the source of a few projects I can’t find an example.
Let me know if I’m asking the right question.
Essentially, when you are using key-value stores, you are building a database out of the same components that a relational database has internally. The reason for doing this is to have more control and flexibility over scaling and performance, or just for straightforwardness.
In this case, you need to store the equivalent of the table rows and the index as two separate things. So if you want to index on color, then you need to store
in the equivalent of an index table.
Of course, some key-value stores provide indexing and searching mechanisms for you so there is no general rule that fits all.