Vous êtes sur la page 1sur 15

Chapitre n°3 : Le NoSQL

I. Généralités

Entendu pour la première fois au monde par son auteur Carlo Strozzi en 1998, le
terme NoSQL (pour Not Only SQL) est adopté pour nommer son SGBD relationnel
Open Source léger qui n’utilisait pas le langage SQL.

Nous avons vu dans le premier chapitre que le modèle relationnel a trouvé ses limites
pour la gestion des données massives du Web qui a connu une révolution avec
L’avènement des sites web à fort trafic tels que Facebook, Amazon et LinkedIn. Ces
Grands acteurs du web ont été rapidement limités par lesdits systèmes pour deux
raisons majeures :
- Les gros volumes de données;
- Les montées en charge.
Les bases de données relationnelles étaient devenues trop lentes.

N’ayant pas trouvé de solution sur le marché répondant à ces problèmes, ils décidèrent
de développer chacun à l’interne leurs propres SGBD. Ces produits développés de
Manière distincte sont connus sous le nom de base de données NoSQL ou de base de
données non relationnelles. Les besoins en performance, lors de traitement de gros
volumes de données ainsi que d’augmentation de trafic, ne touchent pas seulement
les fameux sites mentionnés ci-dessus, mais aussi de nombreuses entreprises de tous
types d’industries confondues, c’est de ce constat qu’est né le mouvement NoSQL.

Etant un modèle relationnel, il a fallu attendre l’année 2009 pour que le


modèle de Strozzi avec l’apport de la communauté des développeurs des SGBD non-
relationnels, que le terme NoSQL a été mis au goût du jour pour englober tous les
SGBD de type non-relationnel.

Ce concept a ensuite été adopté et popularisé par les GAFAM tels que Google,

Facebook ou Amazon confrontés à d’immenses volumes de données. Les bases de

données relationnelles étaient devenues trop lentes. Au lieu de mettre à jour leur

équipement informatique pour accroître les performances des RDBMS (Relational

Database Management System), les géants de la technologie ont choisi de distribuer


1
________________________________________________________________________________
Cours de Base de données NoSQL-Chap N°3 sur Chap n°4 Version du 05/05/2023
la charge sur de multiples serveurs hôtes. C’est la méthode dite du » scaling out

«Les bases de données NoSQL sont idéales pour le scaling-out, puisqu’elles sont non

relationnelles.

En l’an 2000, la base de données graphique Neo4j fut lancée. Ce fut ensuite le tour

de la Google Bigtable, en 2004, puis CouchDB en 2005. L’histoire des bases de

données NoSQL fut aussi marquée par Amazon Dynamo en 2007.

Puis, en 2008, Facebook rend open source la base de données non-relationnelle qu’elle

utilise en interne : Cassandra. Cet outil devient la référence des databases NoSQL,

et remet le terme NoSQL sous le feu des projecteurs en lui donnant son sens et sa

popularité actuelle.

La première partie de ce chapitre consistera à expliquer ce que sont les bases de

données de type NoSQL, dans quel but que ce genre de base de données a vu le jour.

Nous allons également voir de quelle manière ces type de base de données fonctionnent

et sur quels fondements elles s’appuient, ainsi que les avantages qu’une base de

données de type NoSQL peut avoir en comparaison à une base de données relationnel

standard.

Le NoSQL est un type de bases de données, dont la spécificité est d’être non

relationnelles. Ces systèmes permettent le stockage et l’analyse du Big Data. Découvre

tout ce que vous devez savoir : définition, histoire, fonctionnement, cas d’usage,

avantages, formations...

À l’heure du Big Data, les bases de données relationnelles ne sont plus adaptées.

Pour prendre en charge les immenses volumes de données, les stocker et les analyser,

il est impératif de s’en remettre à de nouvelles solutions.

2
________________________________________________________________________________
Cours de Base de données NoSQL-Chap N°3 sur Chap n°4 Version du 05/05/2023
Une base de données NoSQL est une base de données « non relationnelle ». Il est

possible d’y stocker des données sous une forme non structurée, sans suivre de schéma

fixe. Les jointures ne sont plus nécessaires, et le scaling est facilité.

On utilise notamment les bases de données NoSQL pour les Data Stores distribués

aux besoins élevés en capacité de stockage. Ainsi, NoSQL est utilisé pour le Big

Data et les applications web en temps réel. Les géants de la technologie comme

Twitter, Facebook ou Google collectent chaque jour plusieurs terabytes de données sur

leurs utilisateurs.

Le terme » NoSQL » signifie en fait » Not Only SQL « (pas seulement SQL). En

effet, les bases de données relationnelles utilisent la syntaxe SQL pour le stockage

et l’analyse de données. Ce n’est pas le cas d’une database non-relationnelle. Les

systèmes NoSQL sont compatibles avec une large variété de technologies permettant

le stockage de données structurées, non structurées, semi-structurées ou

polymorphique.

3
________________________________________________________________________________
Cours de Base de données NoSQL-Chap N°3 sur Chap n°4 Version du 05/05/2023
II- Qu'est-ce qu'une base de données NoSQL ?

La base de données NoSQL (Not Only SQL) est un système de base de données non

relationnelle. Elle est utilisée pour stocker des données sous une forme non structurée,

tout ceci sans toutefois suivre de schémas de construction fixes. Ce système aide à

organiser les données de façon libre, sans pour autant respecter la structure

contraignante des bases de données relationnelles comme c'est le cas avec le SQL. Il

offre donc la possibilité de faciliter le scaling et ne nécessite plus l'utilisation des

jointures.

Les bases de données NoSQL sont particulièrement utiles pour les Data Stores

distribués qui ont besoin de capacité de stockage élevée. Raison pour laquelle cette

solution légère open source est souvent utilisée pour les applications web, mais aussi

pour le Big Data en temps réel. Les systèmes NoSQL sont aussi compatibles avec

4
________________________________________________________________________________
Cours de Base de données NoSQL-Chap N°3 sur Chap n°4 Version du 05/05/2023
une grande variété de technologies. Celles-ci permettent le stockage de données non

structurées, structurées, semi-structurées ou encore polymorphiques.

III. Les caractéristiques de NoSQL

La principale particularité des bases de données NoSQL est qu’elles ne suivent pas

le modèle relationnel et ne présentent pas de tableaux sous forme de colonnes

fixes. Ces bases de données ne nécessitent pas de normalisation de données ou de

mapping relationnel. Il est possible d’interagir sans utiliser de langages de requête

complexe.

Une autre particularité est l’absence ou la flexibilité des schémas. Il n’est pas

nécessaire de définir de schéma des données, et les données de différentes structures

peuvent donc être regroupées sur un même système.

Les bases de données non relationnelles se distinguent aussi par une interface simple

d’utilisation pour le stockage et la requête de données. Des APIs permettent de

manipuler les données avec diverses méthodes de sélection. Les protocoles, basés sur

le texte, reposent principalement sur HTTP REST avec JSON. On utilise en général

un langage de requête NoSQL.

La dernière caractéristique d’une base de données NoSQL est d’être distribuée. De

multiples bases NoSQL peuvent être exécutées de façon distribuée, offrant des

capacités d’auto-scaling et de fail-over. Le concept ACID peut être délaissé au profit

de l’élasticité et des performances.

IV. Les différents types de bases de données NoSQL

5
________________________________________________________________________________
Cours de Base de données NoSQL-Chap N°3 sur Chap n°4 Version du 05/05/2023
On distingue quatre principaux types de bases de données NoSQL : paire clé / valeur,

orientée colonne, orientée graph, et orientée document. Chacune de ces catégories a

un attribut unique et des limites spécifiques.

Toutefois aucun de ces quatre types de bases de données ne permet de résoudre

n’importe quel problème. Il est nécessaire de choisir la base de données adéquate en

fonction du cas d’usage.

Dans le cas des bases de données de type paire clé / valeur, les données sont stockées

sous forme de paires clé/valeur. Ceci permet la prise en charge de larges volumes de

données et de charges lourdes. Les données sont entreposées dans un tableau de »

hash » au sein duquel chaque clé est unique. La valeur peut être un JSON, un objet

BLOB, une ligne de code ou autre.

Ce type de base de données est le plus basique. Il permet au développeur de stocker

plus facilement des données sans schéma. En guise d’exemples, on peut citer Redis

ou Dynamo. D’ailleurs, Amazon Dynamo est le modèle initial de cette catégorie de

database.

Les bases de données orientées colonnes, comme leur nom l’indique, repose sur des

colonnes. Elles sont basées sur le modèle BigTable de Google. Chaque colonne est

traitée séparément, et les valeurs sont stockées de façon contigüe.

Cette catégorie de base de données offre de hautes performances pour les requêtes

d’agrégation comme SUM, COUNT, AVG et MIN. Pour cause, les données sont déjà

disponibles et prêtes dans une colonne. En guise d’exemples, on peut citer HBase,

Cassandra ou Hypertable.

Les bases de données Graph-Based stockent les entités et les relations entre ces

entités. L’entité est stockée sous forme de noeud, et les relations comme bordures.

6
________________________________________________________________________________
Cours de Base de données NoSQL-Chap N°3 sur Chap n°4 Version du 05/05/2023
Il est ainsi facile de visualiser les relations entre les noeuds. Chaque noeud et chaque

bord ont un identifiant unique.

Ce type de base de données est multirelationnel. On l’utilise principalement pour les

réseaux sociaux, la logistique ou les données spatiales. Parmi les exemples les plus

populaires, on peut citer Neo4J, Infinite Graph, OrientDB et FlockDB.

Les bases de données orientées document stockent et retrouvent-elles aussi les données

sous forme de paire clé-valeur. Toutefois, la valeur est stockée sous forme

de document au format JSON ou XML. La valeur est ainsi comprise par la base de

données et peut être trouvée à l’aide d’une requête. Ce type de base de données

offre donc une flexibilité accrue. Il est principalement utilisé pour les systèmes CMS,

les plateformes de blogging, ou les applications de e-commerce. En revanche, il ne

convient pas pour les transactions complexes nécessitant des opérations ou des

requêtes multiples sur des structures agrégées variables. Les exemples les plus connus

dans cette catégorie sont Amazon SimpleDB, CouchDB, MongoDB, Riak, Lotus Notes

et MongoDB.

V. Utilisation du NoSQL

Les bases de données NoSQL conviennent pour plusieurs cas d’usage. Elles sont

adaptées pour stocker et retrouver de larges volumes de données. Elles conviennent

aussi lorsque les relations entre les données ne sont pas spécialement importantes.

On peut aussi s’en servir si les données changent au fil du temps et ne sont pas

structurées. Elles conviennent enfin quand le volume de données augmente en continu

et que le scaling régulier de la base de données est nécessaire pour les prendre en

charge.

7
________________________________________________________________________________
Cours de Base de données NoSQL-Chap N°3 sur Chap n°4 Version du 05/05/2023
C’est une évidence de dire qu’il convient de choisir la bonne technologie en fonction
du besoin. Il existe cependant certains critères déterminants pour basculer sur du
NoSQL :

1. Taille
Le NoSQL est conçu pour supporter un nombre important d’opérations, de données,
d’utilisateurs etc… C’est à cause de cette grande masse de données que le système
doit devenir distribué. Bien que tous les systèmes NoSQL ne soient pas conçus pour
cette problématique, il est possible de la résoudre sans problème.

2. Performance en écriture
Celle-ci est l’intérêt principal du géant Google, Facebook, Twitter, gérant des masses
des données qui augmentent considérablement chaque année exigeant un temps très
important pour stocker ces données. En conséquence, l’écriture se doit être distribuée
sur un cluster de machines, ce qui implique du MapReduce, la réplication, la tolérance
aux pannes, et la cohérence.
3. Type de données flexibles
Les solutions NoSQL supportent de nouveaux types de données et c’est une
innovation majeure. Les objets complexes peuvent être mappés sans trop de problèmes
avec la bonne solution.

4. ACID
Bien que ce ne soit pas le but premier du NoSQL, il existe des solutions permettant
de conserver certains (voire tous) aspects des propriétés ACID. Se référer au
théorème CAP plus bas dans le manuscrit et aux propriétés BASE

5. Simplicité de développement
L’accès aux données est simple. Bien que le modèle relationnel soit simple pour les
utilisateurs finaux, il n’est pas très intuitif pour les développeurs puisque les données
sont restituées selon la structure de la base.

6 Scalabilité
La scalabilité est le terme utilisé pour définir l’aptitude d’un système à maintenir
un même niveau de performance face à l’augmentation de charge ou de volumétrie
de données, par augmentation des ressources matérielles.

8
________________________________________________________________________________
Cours de Base de données NoSQL-Chap N°3 sur Chap n°4 Version du 05/05/2023
Il y a deux façons de rendre un système extensible : la scalabilité horizontale (externe)
ainsi que la scalabilité verticale (interne).

Figure n°1 : Scalabilité horizontale et vertical

6.1 Scalabilité horizontale


Le principe de la scalabilité horizontale consiste à simplement rajouter des serveurs
en parallèle, c'est la raison pour laquelle on parle de croissance externe. On part d'un
serveur basique et on rajoute des nouveaux serveurs identiques afin de réponse à
l'augmentation de la charge.

6.2 Scalabilité verticale


Le principe de la scalabilité verticale consiste à modifier les ressources d’un seul
serveur, comme- par exemple le remplacement du CPU par une modèle plus puissant
ou par l’augmentation de la mémoire RAM. La croissance interne consiste au fait
d’évoluer une machine dans le temps.
Le but des systèmes NoSQL est de renforcer la scalabilité horizontale, les SGBD
NoSQL sont basés sur des systèmes innovants permettant la scalabilité horizontale
et dont la plupart d’entre eux sont Open Source, ils sont conçus pour répondre à
des besoins spécifiques et assurer une extensibilité sur de très grands ensembles de
données.

VI. Théorème de CAP


Le théorème CAP ou CDP, aussi connu sous le nom de théorème de Brewer, dit qu'il
est impossible sur un système informatique de calcul distribué de garantir en même
temps (c'est-à-dire de manière synchrone) les trois contraintes suivantes :

1. Cohérence (Consistency en anglais) : tous les nœuds du système voient


exactement les mêmes données au même moment ;
9
________________________________________________________________________________
Cours de Base de données NoSQL-Chap N°3 sur Chap n°4 Version du 05/05/2023
2. Disponibilité (Availability en anglais) : garantie que toutes les requêtes
reçoivent une réponse ;
3. Tolérance au partitionnement (Partition Tolerance en anglais) : aucune panne
moins importante qu'une coupure totale du réseau ne doit empêcher le système
de répondre correctement (ou encore : en cas de morcellement en sous-réseaux,
chacun doit pouvoir fonctionner de manière autonome).

Attention : dans cette définition, le terme « partitionnement » ne doit pas être


compris au sens que, dans une base, un objet peut être scindé en plusieurs destinations
de stockage, mais comme des machines distinctes (appelées généralement nœuds)
possédant chacune une partie des données tel que, seul, l’ensemble des nœuds permet
de reconstituer l’intégralité des données de la base.

D'après ce théorème, un système de calcul/stockage distribué ne peut garantir à un


instant que deux de ces contraintes mais pas les trois.

Aujourd’hui, les informaticiens s’appuient sur ce théorème lors de la création d’un


nouveau système distribué et choisissent un modèle de base axé sur deux des trois
propriétés. Selon le théorème CAP, les groupes d’ordinateurs indépendants au sein
d’un même système peuvent par conséquent être classés dans trois catégories :

 système CP (cohérence et tolérance au partitionnement)


 système AP (disponibilité et tolérance au partitionnement)
 système CA (cohérence et disponibilité)

VII. Portée des bases de données NoSQL

Savoir manipuler les bases de données NoSQL est une compétence très recherchée.

Les entreprises croulent aujourd’hui sous les données, et ont donc besoin d’experts

capables d’entreposer et d’analyser ces données sur des systèmes non relationnels.

Pour apprendre à utiliser les bases de données SQL et NoSQL, vous pouvez opter

pour les formations DataScientest. En suivant nos différents parcours Data Analyst, Data

Engineer ou Data Scientist, les databases n’auront plus de secrets pour vous.

10
________________________________________________________________________________
Cours de Base de données NoSQL-Chap N°3 sur Chap n°4 Version du 05/05/2023
Nos différentes formations vous préparent aux différents métiers de la Data Science.

Conçues par des professionnels pour répondre aux besoins réels des entreprises, elles

permettent d’accéder immédiatement au marché de l’emploi.

Les bases de données NoSQL peuvent être utiles dans de nombreux cas d'usage. Elles

sont en effet adaptées pour sauvegarder, gérer et analyser de grands volumes de

données. Elles sont également utiles lorsque les relations entre les données ne sont

pas spécialement importantes.

Les systèmes de base de données NoSQL peuvent également être utilisés lorsque les

données changent au fil du temps et ne sont pas structurées. NoSQL convient enfin

lorsque le volume de données augmente en continu et que le scaling régulier de la

base de données est indispensable pour les prendre en charge.

VIII.Les avantages et les inconvénients d'une base NoSQL

Comme la plupart des outils de stockage de données, la base de données NoSQL

présente une grande série d'avantages, mais elle apporte aussi quelques inconvénients.

1. Les avantages d'une base de données NoSQL

Comme la plupart des bases de données distribuées, NoSQL offre la possibilité de

stocker les données sur différents serveurs en local ou en Cloud. Il s'agit d'un des

principaux points forts de NoSQL. Le Cloud aide en effet à mettre à disposition des

utilisateurs une plus grande quantité de serveurs, ceci à un prix relativement faible.

Idéales pour le stockage et l'analyse du Big Data, les bases de données NoSQL

permettent aussi d'éviter un point de défaillance unique. Elles facilitent ainsi la

réplication des données sur plusieurs serveurs. Cela offre la possibilité de diminuer la

11
________________________________________________________________________________
Cours de Base de données NoSQL-Chap N°3 sur Chap n°4 Version du 05/05/2023
latence et la charge de travail des data centers pour les utilisateurs. Cette «

disponibilité » de la donnée garantit au NoSQL toute sa performance et la possibilité

d'une scalabilité horizontale.

De plus, les bases de données NoSQL sont capables de prendre en charge les données

non structurées et les données structurées de la même façon. Cette capacité de

NoSQL à s'adapter à tous les types de data lui confère sa grande flexibilité. Pour

utiliser les données, le Data Scientist n'a plus besoin de les structurer, de les ranger

puis de les extraire. Elles sont directement exploitables, ce qui aide à développer de

façon agile et rapide des logiciels ou des applications web.

Contrairement au SQL qui reste avant tout un langage de programmation de requête,

les interfaces de support offrent une utilisation simple et une parfaite lisibilité. Son

interface est très ergonomique, ce qui aide les Data Scientists et les Data Analysts

à travailler de manière rapide et efficace.

Les autres avantages de NoSQL sont :

a. Plus évolutif

NoSQL est plus évolutif. C’est en effet l’élasticité de ses bases de données NoSQL

qui le rend si bien adapté au traitement de gros volumes de données. Au contraire,

les bases de données relationnelles ont souvent tendance à utiliser la scalabilté

verticale, quand celui-ci atteint ses limites.

b. Plus flexible

N’étant pas enfermée dans un seul et unique modèle de données, une base de données

NoSQL est beaucoup moins restreinte qu’une base SQL. Les applications NoSQL

peuvent donc stocker des données sous n’importe quel format ou structure, et

changer de format en production. En fin de compte, cela équivaut à un gain de temps

12
________________________________________________________________________________
Cours de Base de données NoSQL-Chap N°3 sur Chap n°4 Version du 05/05/2023
considérable et à une meilleure fiabilité. Par contre une base de données relationnelle

doit être gérée attentivement, car un changement, aussi mineur, peut entraîner un

ralentissement ou un arrêt du service.

c. Plus économique

Les serveurs destinés aux bases de données NoSQL sont généralement bon marché

contrairement à ceux qui sont utilisés par les bases relationnelles. De plus, la très

grande majorité des solutions NoSQL sont Open Source, ce qui reflète une économie

importante sur le prix des licences.

d. Plus simple

Les bases de données NoSQL ne sont pas forcément moins complexes que les bases

relationnelles, mais elles sont beaucoup plus simples à déployer. La façon dont elles

ont été conçues permet une gestion beaucoup plus légère.

2. Les inconvénients d'une base de données NoSQL

Malgré ses multiples avantages, l’utilisation des bases de données NoSQL apporte

néanmoins quelques inconvénients. L'un des principaux points faibles de cet outil de

stockage de données est l'absence de règles de standardisation. En effet, les données

sont dénormalisées, mais elles traitent également avec des enregistrements sur les

serveurs, contrairement au SQL qui fonctionne par référencement. C'est notamment

le cas des documents lorsqu'il s'agit du type de données orientées document.

Il s'agit d'un problème majeur que rencontre cet outil, car la plupart des utilisateurs

optent pour des données normalisées afin d'éviter les anomalies et les duplications de

données. Si l'on prend par exemple le cas des transactions financières, elles utilisent

des règles de normalisation très strictes. L'utilisation de données non normalisées est

13
________________________________________________________________________________
Cours de Base de données NoSQL-Chap N°3 sur Chap n°4 Version du 05/05/2023
susceptible d'entrainer un risque d'erreur dans les transactions. Cela pourrait avoir un

impact très grave pour les utilisateurs de NoSQL.

NoSQL fonctionne également parfaitement sur une table, mais est vite limité lorsqu'il

s'agit de manipuler plusieurs tables. Cet outil est en effet incapable d'effectuer des

jointures complexes. La base de données NoSQL est enfin incapable d'imbriquer les

requêtes WHERE pour extraire des informations spécifiques dans la database. Ce n'est

pas le cas avec SQL.

XI. Le requêtage NoSQL

Dans le monde du NoSQL il n’y a pas de langage standard comme SQL l’est dans le

monde des bases de données relationnelles. L’interrogation des bases de données

NoSQL se fait au niveau applicatif à travers principalement la technique dite de

«MapReduce ».

MapReduceest une technique de programmation distribuée très utilisée dans le milieu

NoSQL et qui vise à produire des requêtes distribuées. Cette technique se décompose

en deux grandes étapes :

1. Etape de mapping

Chaque item d’une liste d’objets clé-valeur passe par la fonction map qui va retourner

un nouvel élément clé-valeur. Exemple de la fonction map : à chaque couple (UserId,

User), on assigne le couple (Role, User). A l’issue de l’étape de mapping, on obtient

une liste contenant les utilisateurs groupés par rôle.

2. Etape de Reduce

La fonction reduce est appelée sur le résultat de l’étape de mapping et permet

d’appliquer une opération sur la liste. Exemples de fonction reduce :

- Moyenne des valeurs contenues dans la liste

14
________________________________________________________________________________
Cours de Base de données NoSQL-Chap N°3 sur Chap n°4 Version du 05/05/2023
- Comptabilisation des différentes clés de la liste

- Comptabilisation du nombre d’entrées par clé dans la liste.

L’étape de mapping peut être parallélisée en traitant l’application sur différents

noeuds

du système pour chaque couple clé-valeur. L’étape de réduction n’est pas parallélisée

et ne peut être exécutée avant la fin de l’étape de mapping. Les bases de données

NoSQL proposent diverses implémentations de la technique MapReduce permettant

le plus souvent de développer les méthodes map et reduce en Java Scriptou en Java.

Conclusion

Au regard de ce qui précède, il est à retenir que les base de données NoSQL est une

technologie principalement développée dans un contexte où la volumétrie des données

rendait indispensable l’utilisation des systèmes distribués pour assurer leur stockage

et leur traitement. Elles sont venues révolutionner le monde de la data, en apportant

non seulement la technologie mais aussi l’émergence des sciences de la donnée.

15
________________________________________________________________________________
Cours de Base de données NoSQL-Chap N°3 sur Chap n°4 Version du 05/05/2023

Vous aimerez peut-être aussi