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.