Aller au contenu

Le mouvement NoSQL#

Définition#

  • Terme "flou"
  • Types de bases de données non (seulement) relationnelles
    • stocker les données dans un format différent des "tables" relationnelles
  • Interroger à l’aide d'un langage spécifique
    • non algébrique
    • non-relationnel
    • mais "riche" quand même (selon la BDD)
  • Permettre une scalabilité horizontale facile
  • Manipuler de volumes de données importants

Théorie#

  • Orienté-agrégats
    • groupe de données (documents) modifiée en meme temps
    • encapsulation de données dans d'autres données (au lieu d'une relation)
  • Orienté-graphes
    • documents = node
    • requetes multi-document sans jointures
    • ne pas confondre avec triple-stores (orienté relation)
  • Sans-schéma
    • capacité d'intégration de données hétérogènes
    • facilité d'évolution
    • déporter les vérifications de cohérence & consistance coté applicatif

Typologies#

  • Clé-valeur (ex: Redis, Riak)
  • Graphe (Neo4j, HyperGraphDB)
  • Document (MongoDB, CouchDB)
  • Big Table (Cassandra, HBase)

Les propriétés ACID... mises à l'écart#

Les capacités ACID garantissent que si plusieurs utilisateurs font de manière simultanée des modifications des données:

  • Toutes les modifications vont être prises en compte,
  • Dans un ordre précis et maîtrisé de manière à avoir un résultat cohérent (intégrité des données)
  • Avec l'historique des modifications faites par chacun.

La mise en œuvre stricte des capacités ACID entraîne des coûts logiciels importants et un niveau de performance moindre à infrastructure matérielle équivalente.

Plusieurs bases de données NoSQL ne garantissent pas les propriétés ACID.

Références#