4 - Nos outils4.2 - Les bases de données

Chapitre 4.2.3
NoSQL

Adapter son stockage aux besoins modernes.
Temps de lecture : 2 minutes


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.