Cours

Nous proposons un tour d'horizon complet des bases de données NoSQL pour les data scientists, avec leurs forces et leurs limites.
Data science et bases de données NoSQL
Être data scientist, ce n'est pas seulement construire des modèles d'apprentissage automatique, c'est aussi savoir traiter, analyser et mieux communiquer vos résultats à partir de données de formats variés.
Les bases SQL traditionnelles ont longtemps été le seul type de base utilisé. Cependant, avec l'essor fulgurant d'internet au milieu des années 1990 et la transformation numérique, un nouveau type de données s'est imposé : les bases de données NoSQL. Elles ont été introduites en réponse aux limites des bases SQL classiques.
Les bases NoSQL peuvent être utilisées, par exemple, par les data scientists et les machine learning engineers pour stocker des données, des métadonnées de modèles, des features et des paramètres d'opérations. De leur côté, les data engineers peuvent s'en servir pour stocker et récupérer des données nettoyées.
Dans cet article conceptuel (sans code), nous commencerons par consolider votre compréhension des bases NoSQL avant d'explorer leur importance. Nous comparerons ensuite SQL et NoSQL, passerons en revue les usages et les catégories de NoSQL, puis nous examinerons les bases NoSQL les plus populaires pour les data scientists.
Qu'est-ce qu'une base de données NoSQL ?
NoSQL signifie Not Only SQL, ce qui indique que les bases NoSQL ont la particularité de ne pas être relationnelles, car elles peuvent stocker des données de façon non structurée. Le graphique suivant met en avant les cinq caractéristiques clés des bases NoSQL.

Pourquoi les bases NoSQL sont-elles importantes ?
Les bases NoSQL sont devenues populaires dans l'industrie pour les raisons suivantes :
- Données multi-modèles : plus flexibles que les bases SQL traditionnelles, elles acceptent des données structurées (par ex. issues de capteurs), non structurées (images, vidéos, etc.) et semi-structurées (XML, JSON, etc.).
- Scalabilité facilitée : grâce à des architectures pair-à-pair, il est simple d'ajouter plusieurs machines.
- Disponibilité mondiale : l'accès simultané aux mêmes données depuis différentes zones géographiques est possible, la base étant répliquée à l'échelle globale.
- Flexibilité : les bases NoSQL s'adaptent rapidement à l'évolution des besoins avec des mises à jour et de nouvelles fonctionnalités fréquentes.
Bases NoSQL vs bases SQL
|
Bases SQL |
Bases NoSQL |
|
|
Langage |
Les bases SQL utilisent des langages de requêtes structurés pour exécuter des opérations, avec des schémas prédéfinis pour interagir efficacement avec les données. |
Les bases NoSQL utilisent un schéma dynamique pour interroger les données. Certaines proposent aussi une syntaxe proche de SQL pour manipuler des documents. |
|
Schéma de données |
Les bases SQL ont un format prédéfini et fixe, qui ne peut pas être modifié pour de nouvelles données. |
Les bases NoSQL sont plus souples. Cette flexibilité permet de créer des enregistrements sans structure prédéfinie, chaque enregistrement ayant sa propre structure. |
|
Scalabilité |
Les bases SQL ne sont scalables que verticalement, c'est-à-dire qu'une seule machine doit augmenter CPU, RAM, SSD, jusqu'à un certain niveau pour répondre à la demande. |
Les bases NoSQL sont scalables horizontalement : on ajoute des machines à l'infrastructure existante pour absorber la croissance du stockage. |
|
Support du big data |
Le passage à l'échelle vertical complique le stockage de très gros volumes (pétaoctets) pour les bases SQL. |
La scalabilité horizontale et le schéma de données dynamique rendent NoSQL adapté au big data. Les bases NoSQL ont d'ailleurs été développées par les grands acteurs du web (Amazon, Google, Yahoo, etc.) pour relever le défi de l'explosion des données. |
|
Propriétés |
Les bases SQL s'appuient sur les propriétés ACID (atomicité, cohérence, isolation, durabilité). |
Les bases NoSQL, elles, se réfèrent au théorème CAP (cohérence, disponibilité, tolérance au partitionnement). |
Quand utiliser des bases NoSQL ?
Dans un environnement en forte croissance et concurrentiel, les entreprises doivent collecter un maximum de données pour atteindre leurs objectifs. Collecter des données est une chose, les stocker dans la bonne infrastructure en est une autre. La difficulté tient à la diversité des formats : images, vidéos, texte, sons. Utiliser des bases relationnelles pour tout stocker n'est pas toujours judicieux. La question demeure :
Quand privilégier NoSQL plutôt que SQL ?
Envisagez NoSQL dans les situations suivantes :
- Évolution constante des données : vous ne savez pas comment votre système ou vos applications vont évoluer, et vous pourriez vouloir intégrer de nouveaux types de données, de nouvelles fonctions, etc.
- Fort volume de données : votre activité manipule d'énormes volumes appelés à croître avec le temps.
- Cohérence non critique : la cohérence stricte et l'intégrité à 100 % ne sont pas prioritaires. Par exemple, pour un réseau social interne, que tous les employés voient un post exactement au même instant n'est pas forcément essentiel.
- Scalabilité et coûts : les bases NoSQL offrent plus de flexibilité et permettent de mieux maîtriser les coûts à mesure que vos besoins évoluent.
4 principaux types de bases NoSQL
Les bases NoSQL se répartissent en quatre grandes catégories. Chacune a ses spécificités : choisissez celle qui correspond le mieux à votre cas d'usage. Ci-dessous, nous mettons en lumière les principaux exemples de bases NoSQL. Cette section présente le rôle de chaque type, une liste non exhaustive de leurs avantages et limites, ainsi que leurs cas d'usage.

1. Bases orientées documents
Ce type de base est conçu pour stocker et interroger des documents JSON, XML, BSON, etc. Chaque document correspond à une ligne ou un enregistrement dans la base et adopte un format clé-valeur. Un document stocke les informations d'un objet et ses données associées. Par exemple, la base suivante contient trois enregistrements, chacun décrivant un étudiant. Pour le premier document, firstname est une clé et Franck sa valeur.
Avantages des bases documentaires
- Sans schéma : pas de contraintes sur le format et la structure du stockage. Un atout particulier quand la base évolue en continu.
- Mise à jour aisée : on peut ajouter ou supprimer une information sans modifier les autres champs du document.
- Performance améliorée : toutes les informations d'un document se trouvent au même endroit. Pas besoin de références externes, contrairement aux bases relationnelles qui exigent parfois de joindre d'autres tables.
Limites des bases documentaires
- Vérification de cohérence : les documents n'ont pas nécessairement de relations entre eux et peuvent présenter des champs différents.
- Problèmes d'atomicité : si deux collections doivent être modifiées, il faut exécuter une requête distincte pour chaque document.
Quand utiliser des bases documentaires
- Recommandées lorsque votre schéma de données est susceptible d'évoluer fréquemment.
Cas d'usage
- Grâce à leur flexibilité, elles conviennent aux profils utilisateurs en ligne, où chaque profil peut avoir des attributs différents. Chaque profil ne stocke alors que ses attributs pertinents.
- Elles sont adaptées à la gestion de contenu, qui nécessite de stocker efficacement des données issues de multiples sources, puis de créer et intégrer de nouveaux types de contenus.
2. Bases clé-valeur
Il s'agit des bases NoSQL les plus simples. Chaque élément est stocké sous forme de paire clé-valeur. On peut les assimiler à une table avec exactement deux colonnes : la première contient une clé unique, la seconde la valeur associée. Les valeurs peuvent être de types simples (entier, chaîne, flottant) ou complexes (image, document).
L'exemple suivant illustre une base clé-valeur contenant des informations clients où la clé est le numéro de téléphone et la valeur l'achat mensuel.

Avantages des bases clé-valeur
- Simplicité : la structure clé-valeur est directe. L'absence de typage strict simplifie l'usage.
- Rapidité : le format simple accélère les opérations de lecture et d'écriture.
Limites des bases clé-valeur
- Impossible de filtrer sur la colonne valeur, car la valeur renvoyée correspond à tout le contenu stocké dans ce champ.
- Optimisées pour une seule clé et une seule valeur. Stocker plusieurs valeurs nécessiterait un parseur.
- La valeur se met à jour dans son intégralité : il faut récupérer l'ensemble, traiter, puis réécrire l'ensemble. Cela peut poser des problèmes de performance si le traitement est coûteux.
Quand utiliser des bases clé-valeur
- Adaptées aux applications reposant sur des requêtes simples basées sur une clé.
- Utiles pour des applications simples qui doivent stocker temporairement des objets légers, comme un cache.
- Pertinentes lorsque l'accès aux données en temps réel est requis.
Applications
- Idéales pour des applications simples nécessitant un stockage temporaire d'objets comme le cache.
3. Bases en colonnes larges
Comme leur nom l'indique, les bases orientées colonnes stockent les données par collections de colonnes, chaque colonne étant traitée séparément. Leur conception s'appuie sur le papier Google Bigtable. Elles sont principalement utilisées pour des charges analytiques : business intelligence, gestion d'entrepôts de données, gestion de la relation client.
Par exemple, on calcule rapidement l'âge moyen des clients ou le prix moyen des produits via la fonction d'agrégation AVG sur chaque colonne.

4. Bases graphe/nœuds
Les bases graphe servent à stocker, cartographier et rechercher des relations entre des nœuds via des arêtes. Un nœud représente un élément de données, aussi appelé objet ou entité. Chaque nœud possède des arêtes entrantes ou sortantes. Une arête représente la relation entre deux nœuds et porte des propriétés liées aux nœuds qu'elle connecte.
« Zoumana étudie à Texas Tech University. Il aime courir dans le parc au sein de l'université »

Avantages des bases graphe/nœuds
- Structure agile et flexible.
- Les relations entre nœuds sont explicites et lisibles par l'humain, donc faciles à comprendre.
Limites des bases graphe/nœuds
- Absence de langage de requête standardisé, chaque solution ayant son propre langage.
- Par conséquent, il peut être plus difficile de trouver de l'aide en ligne en cas de problème.
Quand utiliser des bases graphe/nœuds
- À privilégier lorsque vous devez modéliser des relations entre éléments et les interroger rapidement.
Applications
- Détection de fraude en temps réel sur des transactions financières.
- Exploitation de données issues des réseaux sociaux : par exemple, LinkedIn utilise une base graphe pour identifier qui suit qui, ainsi que les relations entre utilisateurs et leurs expertises (ML Engineer).
- Cartographie de réseaux : excellente représentation sous forme de graphe, les réseaux modélisant les relations entre matériels et services associés.
7 meilleures bases NoSQL pour la data science
Maintenant que vous maîtrisez mieux les bases NoSQL, examinons une sélection de solutions populaires pour les projets de data science. Cette analyse se concentre uniquement sur les bases NoSQL open source.

1. MongoDB
MongoDB est une base documentaire open source qui stocke les données en JSON. C'est la base la plus utilisée, conçue pour une haute disponibilité et une forte scalabilité, avec sharding automatique et réplication intégrée. Notre cours Introduction to MongoDB couvre l'utilisation de MongoDB et Python. Il vous aide à acquérir les compétences pour manipuler et analyser des données à la structure flexible avec MongoDB. Uber, LaunchDarkl, Delivery Hero et 4 300 entreprises utilisent MongoDB dans leur stack.
2. Cassandra
Cassandra est également une base en colonnes open source à grande échelle. Elle répartit les données sur plusieurs machines et re-partitionne automatiquement lorsque vous ajoutez de nouveaux nœuds à votre infrastructure. Uber, Facebook, Netflix et 506 autres entreprises l'utilisent dans leur stack.
3. Elasticsearch
Comme MongoDB, Elasticsearch est une base documentaire open source. C'est un moteur de recherche et d'analytique de premier plan, axé sur la scalabilité et la vitesse. Uber, Shopify, Udemy et environ 3 760 autres entreprises l'utilisent.
4. Neo4J
Neo4J est une base graphe open source. Elle est principalement utilisée pour gérer des données en croissance comportant de nombreuses relations. Environ 220 entreprises l'emploient dans leur stack.
5. HBase
Base distribuée et orientée colonnes, HBase offre des capacités similaires à Google Bigtable au-dessus d'Apache Hadoop. 81 entreprises l'utilisent dans leur stack.
6. CouchDB
CouchDB est aussi une base documentaire open source qui collecte et stocke les données au format JSON. Environ 84 entreprises l'utilisent dans leur stack.
7. OrientDB
Également open source, OrientDB est une base multi-modèle prenant en charge les modèles graphe, document, clé-valeur et objet. Seulement 13 entreprises l'utiliseraient dans leur stack.
Conclusion
Nous avons parcouru les principaux aspects des bases NoSQL et montré en quoi elles peuvent accélérer vos projets de data science dans des environnements en forte croissance. Vous avez désormais les clés pour choisir et déployer la base la plus adaptée à votre cas d'usage. Si vous hésitez encore, c'est le moment pour vous et vos équipes de tirer parti de la puissance de ces bases.
Pour aller plus loin, notre cours sur les concepts NoSQL renforcera vos connaissances des quatre grandes familles présentées.