Chapitre 4.2.3
NoSQL
Depuis plusieurs années, la croissance massive des données générées par les applications web, mobiles, objets
connectés ou plateformes numériques a conduit à ce qu'on appelle le Big Data : des volumes de
données si importants, variés et produits à grande vitesse qu'ils ne peuvent plus être traités efficacement par les
outils traditionnels.
Face à cette explosion, une nouvelle approche s'est imposée : stocker un maximum de
données, souvent sans savoir exactement ce qu'on en fera, pour pouvoir en extraire de la valeur plus tard grâce à
l'analyse, à l'automatisation ou à l'intelligence artificielle.
C'est dans ce contexte que les bases de
données relationnelles, historiquement très performantes pour des structures bien définies, ont commencé à montrer
leurs limites lorsque :
- Les volumes deviennent massifs,
- La structure des données varie ou évolue souvent,
- Les données doivent être réparties sur de nombreuses machines,
- Les performances doivent rester élevées malgré une forte charge d'utilisateurs.
C'est pour répondre à ces nouveaux besoins qu'une autre famille de bases de données a émergé : les bases
NoSQL.
Contrairement à ce que son nom pourrait laisser penser, NoSQL ne signifie pas une absence totale de SQL.
Certaines de ces bases proposent des langages proches ou compatibles.
D'où la redéfinition fréquente du terme en "Not Only SQL".
NoSQL désigne de manière générale les bases de données qui ne reposent pas sur le modèle relationnel classique.
Il regroupe un ensemble hétérogène de technologies fondées sur d'autres logiques de structuration des données.
Chaque type de base est optimisé pour des usages spécifiques.
On distingue généralement quatre grandes familles :
-
Bases clé-valeur : Ce sont les plus simples, chaque donnée est stockée sous la forme d'une paire
clé + valeur. C'est-à-dire qu'en connaissant la clé, je peux directement et très rapidement retrouver la valeur
stockée. Nous reviendrons sur ce type de bases dans les prochains chapitres quand nous aborderons le cache
applicatif.
Technologies les plus connues : Redis, Amazon DynamoDB, Memcached. -
Bases orientées colonnes : Pour l'utilisateur, ces bases ressemblent à des bases de données
relationnelles.
La différence se situe dans la façon dont les données sont stockées et lues par le moteur.
Il stocke les données colonne par colonne plutôt que ligne par ligne.
Imaginons une application qui a accès à tes relevés bancaires pour te fournir des statistiques. Elle peut aspirer des données et les réorganiser dans une table : type de dépense, montant, lieu, date. Pour t'afficher "ce mois-ci, vous avez dépensé X euro en restaurants", elle va fonctionner colonne par colonne en filtrant le "type de dépense" et les "dates" puis en additionnant toutes les lignes correspondantes de la colonne "montant". À aucun moment le moteur n'a parcouru la colonne des "lieux".
Les bases de données orientées colonnes sont très performantes pour des besoins statistiques, pour agréger des données. Elles ne sont par contre pas optimisées pour gérer des relations complexes ou des opérations transactionnelles fréquentes sur une production.
Technologies les plus connues : Google BigQuery, Amazon Redshift, Snowflake, Apache Cassandra. -
Bases orientées graphes : elles sont conçues pour représenter et interroger facilement les relations
complexes entre les données.
Au lieu de stocker les données sous forme de tableaux comme c'est le cas dans une base relationnelle, elles
utilisent une structure en graphes avec des noeuds et des relations. Les relations sont des éléments de première
classe,
physiquement matérialisées avec leurs propres attributs. Ces bases sont très utilisées par les moteurs de
recommandations
et de personnalisation.
Exemple : vous pourriez connaître X, car il a travaillé dans la même entreprise que vous en 2019.
Technologie la plus connue : Neo4j. -
Bases orientées documents :
Un document, c'est comme une fiche contenant toutes les informations sur un élément donné.
Par exemple, si tu gères une application de livraison, un document pourrait représenter un client
et contenir dans une seule fiche son nom, son historique de commandes, etc.
Le point clé, c'est qu'ils ne sont pas obligés de tous avoir la même structure. Certains clients n'ont par exemple pas d'historique de commandes.
Les bases orientées documents sont particulièrement adaptées lorsqu'on souhaite stocker et récupérer rapidement un objet complet, tel quel, sans avoir à faire de jointures entre plusieurs tables comme dans une base relationnelle.
Certaines bases, comme Elasticsearch, reprennent cette structure orientée documents, mais avec un objectif différent : permettre des recherches très rapides et flexibles sur de grands volumes de données non structurées. On les retrouve souvent dans des cas comme les moteurs de recherche, les systèmes de suggestion ou les outils d'analyse de logs, où l'on a besoin de filtrer, trier, agréger ou effectuer des recherches de texte.
Technologies les plus connues : Elasticsearch, MongoDB, Firebase Firestore, Amazon DocumentDB.
En résumé, les bases de données NoSQL ne remplacent pas les bases relationnelles, elles répondent à d'autres
besoins. Leur diversité permet de s'adapter à des contextes variés : données massives, structures flexibles,
exigences de performance.
Chaque type de base NoSQL a ses avantages, mais aussi ses
limites. Le choix de la technologie dépend donc avant tout du cas d'usage : rapidité d'accès, volume, complexité des
relations, besoins analytiques, etc.
Comprendre ces modèles permet de mieux appréhender les architectures
modernes et de choisir les bons outils au bon moment, en fonction des objectifs du projet.
