EA2014-NoSQL

From air
Jump to navigation Jump to search

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).


Comparaison des marques noSQL en rapport avec les 3 propié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.

Types de sharding.png

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.
Mongo sharding.png
  • 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.
Cassandra sharding.png

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/