NoSQL does not mean :
We don't want to work with SQL anymore
but :
We don't want to work only with SQL
id | street | postcode | city |
<?xml version="1.0" encoding="UTF-8" ?>
<address>
<city postcode="38000">Grenoble
<street>85 rue des Alliés
</address>
{
"city": {
"postcode": "38000",
"value" : "Grenoble"
},
"street": "85 rue des Alliés"
}
address:
city:
postocode: 38000
value: Grenoble
street: 85 rue des alliés
Your data are well structured and never mutate ? Prefer Schema !
You data structure is evolving all the time to match new requirements ? Consider Schema-less datawarehouses.
Master group
Slaves group
Master group
Slaves group
Always an access by one primary key. Key can be user or system defined.
Possibility to setup multiple secondary indexes. Comes mainly with a storage cost.
Only supported by a few NoSQL Engine so far but this is one of the key feature nearly everyone is working on !
Multiple interface types : SOAP, REST, HTTP, Thrift, Binary, Telnet-like, ...
Multiple query languages : Solr-like, BSon, ...
Many supported features :
Fully manual : developers are using an indexer API to define what should be indexed
Schema driven : a data schema is helping the NoSQL database to perform indexation
Automatic : the NoSQL database tries to guess what is the best type for each element (column or node)
Synchrone or Asychrone
Near realtime (less than 20ms) or... quite slow (more than 3-4 seconds)
Only supported by a few NoSQL Engine so far but this is a cool feature !
Multiple supported languages : Java, Javascript, Erlang, ...
Map phase can use some extra features like Search, key filtering, ...
Many supported features related to big data management : storage, search, processing, ...
Performances are really great for most of them : it's not the only way to make your choice
You can use multiple NoSQL frameworks at the same time. Eg : Yokozuna, MongoDB Connector, ...