mercredi 16 juin 2010

RDBMS vs noSQL , CAP théorème


Linux journal du mois de juillet (195) propose un article sur le mouvement NoSQL. Cet article est un peu partial en faveur des RDBMS (Relational Database Management System) .

En revanche il reprend les notions de base:

Norme ACID :
  • Atomicity : la transaction se termine complètement avec succès ou on revient à l'état initial
  • Consistency: La base est un dans état stable avant et après la transaction
  • Isolation: Une transaction est indépendante d'une autre. Une file d'attente doit gérer les conflits.
  • Durability: Une fois que la transaction est terminée avec succès, les changements dans la base seront acquis un fois pour toute.


Cette norme est un principe fort de fonctionnement des bases de données.


Théorème de CAP ou de Brewer (eric)

  • Consistency : (diffère du la notion éponyme dans ACID) , Quel que soit le moment de l'écriture d'une donnée, la lecture de cette donnée retournera la dernière version.
Une 'éventuelle consistance' signifie que l'on accepte une différence de version de la donnée.
  • Availability: On peut toujours attendre qu'une base de données réponde à une requête . cette disponibilité peut être réalisée par plusieurs serveurs émulant une seule instance.

  • Partition :(partition tolerance) La base de donnée est accessible en lecture ou en écriture même un des noeuds est inaccessible. Lorsque le service reviens à la normale le noeud est mis à niveau.


Ce théorème démontré par Gilbert et Lynch du MIT en 2002 , montre qu'il est impossible pour un système de données partagées de garantir les trois propriétés simultanément.

Un RDBMS privilégie une consistance forte et une disponibilité assurée par une instance miroir.
Un système NoSQL se contentera d'une 'éventuelle consistance' au regard du flux important d'information (exemple :twitter)

Les systèmes NoSQL sont souvent basés sur des magasins de clés-valeurs. Le langage associé est de plus en plus, le Javascript . On peut noter l'existence d'un projet original 'Friendly' qui permet de faire du NoSQL sur MySQL. Une table est créée par champs : si une table normale possède 5 champs, elle sera éclatée en 5 tables (je simplifie) . Cela permet d'avoir une base de données sans contrainte de schémas.
Les NoSQL sont qualifiés de 'post-moderne' : au lieu de vous donner une réponse 'juste' ils vous donnent la meilleure réponse possible.






1 commentaire:

Anonyme a dit…
Ce commentaire a été supprimé par un administrateur du blog.