Historique
Systèmes de base de données non relationnels
noSQL, c'est quoi?
Le NoSQL, pour "not only SQL", désigne les bases de données qui ne sont pas fondées sur l'architecture classique des bases de données relationnelles. Développé à l'origine pour gérer du big data, l'utilisation de base de données NoSQL a explosée depuis quelques années. Mais qu'est-ce que réellement le NoSQL ?
Plusieurs espèces de NoSQL
Lorsque l'on parle de NoSQL, on regroupe des systèmes de base de données qui ne sont pas relationnels, mais il faut savoir qu'il existe plusieurs types de bases de données "NoSQL".
- Les bases clef/valeur, permettent de stocker des informations sous forme d'un couple clef/valeur où la valeur peut être une chaine de caractère, un entier ou un objet sérialisé. Une base de données Redis (VMWare) ou SimpleDB (Amazon). Ce type de base de données offre de très bonne performances par sa simplicité et peut même être utilisé pour stocker les sessions utilisateur ou le cache de votre site par exemple.
- Les bases orientées colonnes, ressemble aux bases de données relationnelles, car les données sont sauvegardées sous forme de ligne avec des colonnes, mais se distingue par le fait que le nombre de colonnes peut varier d'une ligne à l'autre. Les solutions les plus connues sont HBase (Apache, Hadoop) ou Elasticsearch (elastic).
- Les bases orientées document, représente les informations sous forme d'objet XML ou JSON. L'avantage est de pouvoir récupérer simplement des informations structurées de manière hiérarchique. Les solutions les plus connues sont CouchDB, RavenDB et MongoDB ou Cassandra.
- Les bases orientées graphe, présentent les données sous forme de noeud et de relation. Cette structure permet de récupérer simplement des relations complexes. Un exemple de base graphe est Neo4J.
Avantages / Inconvénients
Il est tentant d'utiliser une base de données NoSQL pour sauvegarder rapidement des données sans avoir à réfléchir au préalable à la structure des données. C'est ce qui justifie en grande partie le succès de base comme MongoDB. Mais cette simplicité est à double tranchant, car si les données sont sauvegardées de manière trop anarchique il sera très difficile de manipuler et organiser nos données par la suite.
Cassandra est un système de gestion de base de données développé par Facebook, dont le but était de créer un SGBD sans défaillance et d'offrir une disponibilité maximale.
MongoDB est une base de données libre de diagrammes, orientée vers les documents. La base de données est basée sur l'entrepôt de documents, ce qui signifie qu’elle stocke des valeurs (dénommés documents) sous la forme de données codées au format JSON.
Qu'est-ce qui différencie NoSQL?
Une différence essentielle entre les bases de données NoSQL et les bases de données relationnelles traditionnelles réside dans le fait que NoSQL est une forme de stockage non structuré. Une base de données No-SQL est une base de données dans laquelle la structure de la table n'est pas fixe, contrairement aux bases de données SQL structurées. MongoDB stocke les données sous la forme d'une chaîne JSON quel que soit le nombre d'attributs ou les noms d'attributs dans une colonne spécifique.
Cela permet aux développeurs d'apporter rapidement des modifications aux entités sans qu'il soit nécessaire de modifier le niveau de la base de données.