EA2014-NoSQL
http://fr.slideshare.net/larsga/nosql-databases-the-cap-theorem-and-the-theory-of-relativity
Introduction noSQL
nosql is an ensemble of concept to stocker les donnees nosql types are architectures
Rappel sur les bases relationnels
Concept de noSQL
Théoreme de Brewer
Dans le monde des systèmes distribués, le théoreme de Brewer(connu aussi sous le nom théoreme de CAP) dit qu'il est impossible d'avoir simultanément la garantie des ces 3 propriétés :
- Consistency(cohérence) - Chaque noeud/serveur voir les même données au même moment
- Availability(disponibilité) - Toutes les requêtes reçoivent use réponse en temps fini
- Partition tolerance(résistance au morcellement) - Apart d'une coupure totale, le système fonctionnement(répondre correctement) même s'il y a des partitionnement généré par des pannes sur un ou plusieur noeuds.
Les architectures noSQL sont distribué par nature et donc ce théoreme s'applique.
Pendant la conception d'une base noSQL, il faut bien choisir 2 parmi ces 3 propriétés qu'on veut et ensuite regarder parmi les marques de noSQL sur le marché lesquelles garanties ces 2 propriétés. (Deux marques noSQL de même type ne garantissent pas forcéments les mêmes propriétés CAP).
Heureusement dans la plupart des cas, c'est les deux dernières qui sont choisies car les données EVENTUELLEMENT cohérente sont suffisante pour notre applications. Le fait d'avoir une donées qui est FORTEMENT cohérente dans un délai de quelques secondes (ou même millisecondes) nous semble moins important que ne pas avoir de résultat du tout.
Sharding
Dans les bases de données distribués comme noSQL, sharding décrire un ensemble de techniques qui découpe une base de données entière en plusieurs shards(tranches/noeuds/serveurs). Imaginons une vitre qui représente une base de données et on la casse en plusieurs morceaux, chaque morceaux contient les données qui ne se trouvent pas dans les autres morceaux (pas de réplication).
Chez les grands applications web qui se charge du stockage de de l'analyse d'énormes quantité de données, il n'est plus possible de tout mettre sur un serveur unique. Une machine quel que soit sa puissance immense n'est pas suffisant pour indexer tout l'internet.
Une bases de données peut être "shardé" horizontalement ou verticalement. La difference c'est que le sharding vertical stocke une ou plusieurs tables dans un noeud et le sharding horizontal stocke des éléments unitaire obtenu à partir des tables. Dans noSQL le dernier est bien sûr plus préféré.
Il y a plusieurs techniques pour 'sharder' une base de données, par exemple :
- MongoDB utilise plusieurs serveurs d'indexe(config servers) pour repérer les données dans un nombre de shards, ensuite redirige les requêtes vers les shards qui contiennet les données demandés.
- CassandraDB utilise un grid de serveurs ou chaque serveur gère un certain nombre de données borné par une intervalle dehash(random hash distribution). Si un shard reçoit une requête pour une intervalle de hash qui n'existe pas localement ou la fin de l'intervalle ne se situe pas localement, il retransfere la requête vers un autre shard dans le réseau.
Les 4 grands types de noSQL
Les marques de noSQL sur le marché
http://air.imag.fr/index.php?title=EA2012-NoSQL&action=edit http://davidmasclet.gisgraphy.com/post/2010/06/09/10-minutes-pour-comprendre...NoSQL http://blog.neoxia.com/nosql-5-minutes-pour-comprendre/