Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Les bases NoSQL

Par Claudia BROUCHE Publié le 13/08/2017 à 14:09:44 Noter cet article:
(0 votes)
En attente de relecture par le comité de lecture

Présentation du NoSQL

Depuis plusieurs années, on constate une augmentation massive des données que doivent gérer les entreprises. C’est particulièrement vrai pour les grandes entreprises du web. Cette explosion de la volumétrie connaît plusieurs origines, la principale étant l’essor des réseaux sociaux et des objets connectés qui sont de grands générateurs de données. Chaque jour 7 téraoctets de données sont créés sur Twitter et 10 téraoctets sur Facebook. La baisse quasi continue du prix de stockage depuis plus de cinquante ans entre aussi en ligne de compte. Alors qu’ 1Mb coûtait 10000$ en 1956, aujourd’hui 1Gb coûte environ 8 centimes. Stocker une donnée ne coûte pas cher, mais encore faut-il pouvoir la traiter.

Evolution du prix de stockage (source : http://www.ginjfo.com/wp-content/uploads/2015/11/hddisk-1024x512.png)

De grandes entreprises comme Google, Facebook ou Amazon exploitent ces données et en tirent des bénéfices. On dit que les données ont une valeur cachée. Pour pouvoir en extraire des informations utiles ces entreprises ont dû développer des outils adaptés telles que les bases NoSQL (Not Only SQL).

Les bases NoSQL sont capables de stocker et d’analyser de très grandes quantités de données. Avec elles on s’affranchit des limites technologiques des SGBD classiques qui ne sont pas adaptés pour supporter des volumétries de plusieurs téraoctets. Elles constituent également une alternative économique intéressante. La scalabilité horizontale permet la réduction du coût matériel. De plus de nombreuses bases NoSQL sont Open Source.

La principale différence entre les SGBD classiques et le NoSQL réside dans l’absence de schéma. Dans une base NoSQL, des objets appartenant à une même table ne sont pas contraints d’avoir les mêmes colonnes. Cette absence de schéma permet d’intégrer des données non structurées.

Mais c’est quoi la différence entre une donnée structurée ou non structurée ? Une donnée structurée rentre dans un cadre précis, le plus souvent on peut la présenter sous la forme d’un tableau. Par exemple une liste de salariés avec leur nom, leur date d’entrée dans l’entreprise et leurs salaires, forment un ensemble de données structurées. On pourra facilement stocker cette liste dans un table SQL composée de 3 colonnes.

A l’inverse, une donnée non structurée ne respecte pas un schéma prédéfini, par exemple un mail, une image, un tweet…Il n’est pas possible de la stocker dans une base SQL.

Tout comme les bases SQL, Les bases NoSQL respectent le théorème CDP. Ce théorème a été établi en par Eric Brewer en 2002. Il est basé sur trois principes :

- Cohérence : les utilisateurs doivent avoir la même vue des données, tous les noeuds doivent donc avoir la même version des données

- Disponibilité : les données doivent être accessibles à tout instant

- Tolérance aux pannes : le système doit pouvoir continuer à répondre même si un problème (chaque sous système doit pouvoir fonctionner de manière autonome)

Le théorème CDP dit qu’il est impossible pour un système informatique de respecter ces trois principes en même temps. Une base de données doit répondre à au moins deux de ces principes.

Théorème CDP (en anglais CPA, coherence / partitionning / avaibility)

Les systèmes SGBD sont cohérent et disponibles (CD) alors que le NoSQL sont DP (disponible et tolérant aux pannes) ou CP (cohérent et tolérant aux pannes). Le NoSQL ne répond pas aux mêmes besoins que le SQL, c’est à vous de choisir la solution qui correspond le plus à vos besoins.

Faut il passer au NoSQL ?

Il est important de choisir une technologie par rapport aux besoins du projet que l’on développe. Les bases NoSQL ne constituent pas une solution miracle pour stocker tout et n’importe quoi. Avant de se lancer il faut bien étudier les données que l’on veut stocker. Sous quelles formes se présentent elles ? De quelles sources viennent elles ?

Soyez vigilant, avec un passage au NoSQL bien étudié vous obtiendrez de meilleurs temps de réponse et vous ferez sûrement des économies. Mais si le projet n’est pas bien pensé, vous risquez de perdre beaucoup de temps à mettre en place un système qui aura les mêmes performances que les bases SQL, et qui peut même s’avérer plus lent dans certaines situations.

Une fois la décision prise de passer à une base NoSQL, il faut encore déterminer le type de base NoSQL le plus adapté.

Il existe 4 types de bases NoSQL : orientées colonnes, basées sur la théorie des graphs, orientées clé /valeur et orientées document

Les différents types de bases

Bases orientées Colonnes

Dans ce type de base les données ne sont plus stockées en lignes mais en colonnes. Le nombre de colonnes est dynamique.

Les valeurs nulles ne sont pas stockées ce qui libère de l’espace de stockage. Le regroupement par colonne permet de ne pas dupliquer les valeurs identiques. Les bases orientées colonnes permettent d’avoir des requêtes très efficaces pour chercher une valeur particulière. En revanche elles ne sont pas du tout adaptées pour une requête portant sur tous les champs (select *) car il faudra parcourir toutes les lignes plutôt qu’une.

Comparaison entre le stockage en lignes et le stockage en colonnes

Prenons par exemple le tableau suivant

Si on stocke les valeurs du tableau dans une base SQL (orienté ligne), on obtient :

1, Dupont, vert, Paris, 23

2, Dupond, bleu, Paris, 32

3, Doe, jaune, Toulouse, null

1, Dupont, vert, Paris, 23

Les valeurs sont stockées de la même façon que dans le tableau. Si on les stocke dans une base orientée colonnes :

Dupont : 1, Dupond : 2 , Doe : {3 , 4}

vert : 1, bleu : 2, jaune : 3, rose :4

Paris : {1, 2}, Toulouse : 3, Lyon : 4

23 : 1 , 32 : 2, 45 : 4

Chaque ligne correspond à une colonne du tableau précédent. On a donc 4 lignes (nom, couleur; ville, âge). La ligne 1 contient tous les noms. Chaque nom est suivi du ou des id qui lui sont associés.

On voit que toutes les lignes n’ont pas le même nombre de colonnes, cela vient de la suppression des valeurs nulles et du regroupement des valeurs identiques. Contrairement au SQL il n’y a pas de valeurs redondantes. Pour la ligne nom, Doe n’est présent qu’une fois, mais il est associé à deux id.

On peut facilement vérifier l’efficacité d’une requête sur un seul champ. Si l’on souhaite connaître le nom de toutes les personnes dont l’id est plus grand que 1, il suffira de lire la première ligne qui contient les noms. Pour la même requête en SQL, il aurait fallu parcourir toutes les lignes ayant un id plus grand que 1 pour lire leur nom.

En revanche si l’on veut connaître toutes les données sur la personne ayant l’id 1 il faudra parcourir toutes les lignes pour récupérer chaque information.

Les bases orientées colonnes sont optimisées pour l’écriture et pour la lecture de valeur unique. Elles sont souvent utilisées dans le secteur financier pour stocker des valeurs boursières, ces valeurs étant souvent modifiées unitairement.

Exemple de bases orientées colonnes: Cassandra, HBase

Bases orientées Graph

Les bases orientées graphs permettent de suivre les relations entre les données. Leur fonctionnement est basé sur la théorie des graphs. Elles se concentrent sur les différents liens que l’on peut établir entre les données stockées. Dans les bases SQL on modélise les relations entre les données par des clés étrangères. Le problème est que la multiplication des clés entraîne un temps de latence plus important et augmente la complexité de la base.

source : http://www.lemagit.fr/definition/Base-de-donnees-orientee-graphes

Avec une base orientée graphes, on répond à des questions très importantes comme : parmi les conducteurs de BMW, combien travaillent chez IBM ? Selon la réponse, BMW pourra savoir s’il est pertinent d’installer son nouveau concessionnaire sur la route conduisant aux bureaux d’IBM…

Les avantages de ce type de bases sont la flexibilité(on peut ajouter de nouvelles relations entre les objets très facilement) et la performance (elle sont capables de gérer de très grandes quantités de données). En revanche elles ne sont pas adaptées pour faire de l’agrégation sur de grands volumes, dans ce cas-là les bases SQL sont plus performantes.

Les bases orientées graphes sont principalement utilisées pour analyser les données issues des réseaux sociaux car elles sont capables de traiter des données semi structurées (comme les tweets). Elles sont également très prisées par les sites de rencontres qui s’en servent pour faire correspondre les profils de leurs utilisateurs en fonction de leurs affinités.

A l’heure actuelle Neo4j est le leader du marché des bases orientées graphs, il est suivi par OrientBD et Titan.

Bases orientées Clé / Valeur

Les bases orientées clé / valeur, comme leur nom l’indique, stockent les données sous la forme d’un couple clé/valeur. Leur objectif est de simplifier le stockage. Elles ont de très bonne performances car les lectures et écritures sont réduites à un accès disque simple.

Cette représentation clé/valeur est particulièrement adaptée aux caches et pour les accès rapides aux informations. Il n’y a pas de schéma et les données ne sont pas liées entre elles. On les utilisent quand le modèle de données est simple.

Stockage des données sous la forme d'un couple clé / valeur

Ces bases sont souvent utilisées pour stocker des préférences utilisateurs, des statistiques, des scores dans un jeu… et les valeurs boursières. En effet ces dernières se présentent sous la forme d’un nom d’action et d’un prix, qui sont très souvent modifiées. Les bases clés/ valeurs sont utilisées quand les données sont appelées à changer régulièrement car elles ont un accès en lecture et écriture très rapide.

Les bases les plus connues sont Redis, Riak et Voldemort.

Base orientée Document

La base de données orienté document est une évolution de la base clé valeur. Les données sont stockées dans des objets qu’on appelle documents et dont la structure n’est pas figée. Un document se compose d’un ensemble de couple clés/ valeurs. Ils se présentent le plus souvent sous la forme d’objets JSON ou XML. Ces bases sont particulièrement adaptées au stockage de données semi structurées. Elles sont également recommandées aux applications web pour leur simplicité d’utilisation et de déploiement.

Structure d'un document
Exemple de document

Si on veut associer des données il est possible de faire des jointures, mais c’est fortement déconseillé car ces bases ne sont pas faites pour, le temps de traitement risque d’être plus long que pour une base SQL. D’autres mécanismes tels que l’imbrication de documents ou les références permettent de remplacer efficacement les jointures.

Ces bases sont optimisées pour réaliser des opérations d’agrégation sur de grandes quantités de données.

Les bases orientées document les plus connues sont MongoDB et CouchDB.

Ce qu'il faut retenir

Les bases NoSQL sont plus souples car elles n’ont pas de schéma. Mais une plus grande facilité de stockage ne doit pas signifier stocker n’importe quoi !

Les bases orientées colonnes ont un nombre de colonnes dynamiques. Elles sont adaptées pour la recherche de valeurs particulières.

Les bases orientées graphes modélisent les relations entre les objets. Leur objectif est de faire des liens.

Les bases clés valeurs sont utilisées pour les modèles de données simples et sont très performantes en lecture et écriture.

Les bases orientées documents sont une évolution des bases clés valeurs. Elles sont optimisées pour les opérations d’agrégations sur de très grandes volumétries.

Quelques bases NoSQL parmi tant d'autres...
A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels