Qu’est-ce qu’une base de données NoSQL ?

Les bases de données NoSQL sont spécialement conçues pour des modèles de données spécifiques et stockent les données dans des schémas flexibles qui se met facilement à l’échelle avec les applications modernes. Les bases de données NoSQL sont largement reconnues pour leur facilité de développement, leur fonctionnalité et leur performance à l'échelle. Cette page comporte des ressources qui vous aideront à mieux comprendre les bases de données NoSQL, ainsi qu'à vous lancer.

Quels sont les avantages des bases de données NoSQL

Les applications modernes sont confrontées à plusieurs défis qui peuvent être résolus par les base de données NoSQL. Par exemple, les applications traitent un volume de données important provenant de sources disparates telles que les réseaux sociaux, les capteurs intelligents et les bases de données tierces. Toutes ces données disparates ne s'intègrent pas parfaitement dans le modèle relationnel. L'application de structures tabulaires peut entraîner des problèmes de redondance, de duplication des données et de performance à l'échelle.

Les bases de données NoSQL sont conçues spécialement pour des modèles de données non-relationnels et disposent de schémas flexibles pour construire des applications modernes. Elles sont largement reconnues pour leur facilité de développement, leur fonctionnalité et leur performance à l'échelle. Les avantages des bases de données NoSQL sont répertoriés ci-dessous.

Flexibilité

Les bases de données NoSQL fournissent généralement des schémas flexibles qui permettent un développement plus rapide et plus itératif. Le modèle de données flexible rend les bases de données NoSQL idéales pour les données semi-structurées et non structurées.

Capacité de mise à l'échelle

Les bases de données NoSQL sont généralement conçues pour monter en puissance en utilisant des clusters de matériel distribué au lieu d'augmenter l'échelle en ajoutant des serveurs coûteux et robustes. Certains fournisseurs de cloud gèrent ces opérations en coulisses comme un service entièrement géré.

Haute performance

Les bases de données NoSQL sont optimisées pour des modèles de données et des modèles d'accès spécifiques. Elles permettent d'obtenir de meilleures performances que si vous essayiez d'exécuter des fonctionnalités similaires avec des bases de données relationnelles.

Hautement fonctionnelles

Les bases de données NoSQL fournissent des API et des types de données hautement fonctionnels qui sont conçus spécialement pour chacun de leurs modèles de données respectifs.

Quels sont les cas d'utilisation des bases de données NoSQL ?

Vous pouvez utiliser les bases de données NoSQL pour créer une grande variété d'applications mobiles, Internet des objets (IoT), de jeux et web à hautes performances avec une expérience utilisateur exceptionnelle à l'échelle. L'éventail des bases de données NoSQL et leurs cas d'utilisation respectifs sont très variés. Bien qu'il soit difficile de décrire une série représentative de cas d'utilisation, vous trouverez ci-dessous quelques exemples illustratifs pour vous aider à réfléchir et vous encourager à en apprendre davantage sur chaque base de données NoSQL et leurs cas d'utilisation respectifs.

Gestion des données en temps réel

Vous pouvez fournir des recommandations en temps réel, des personnalisations et des expériences utilisateur améliorées grâce aux bases de données NoSQL. Par exemple, Disney+ fournit sa vaste bibliothèque de contenu numérique à plus de 150 millions d'abonnés grâce à la technologie de base de données NoSQL. Celle-ci peut se mettre à l'échelle et offrir des fonctionnalités populaires telles que le visionnage en continu, la liste à regarder et les recommandations personnalisées grâce à Amazon DynamoDB.

Sécurité dans le cloud

Vous pouvez utiliser des bases de données orientées graphe pour découvrir rapidement des relations complexes au sein de vos données. Par exemple, Wiz a repensé la sécurité du cloud sous forme de graphe à l'aide d'Amazon Neptune. Wiz aide ses clients à améliorer leur posture de sécurité en identifiant et en corrigeant rapidement les risques les plus critiques. L'entreprise utilise un modèle de graphe stocké dans Amazon Neptune pour découvrir la combinaison toxique de facteurs de risque qui représentent des risques critiques. Les moteurs de risque Wiz parcourent le graphe et, en quelques secondes, combinent une série de facteurs de risque interconnectés dans un graphe de sécurité.

Applications à haute disponibilité

Les bases de données NoSQL distribuées sont excellentes pour créer des applications à haute disponibilité et à faible latence pour la messagerie, les réseaux sociaux, le partage de fichiers, etc. Par exemple, Snapchat compte plus de 290 millions d'utilisateurs qui envoient des milliards de photos et de messages vidéo chaque jour. Le réseau social utilise des systèmes de base de données NoSQL pour réduire de 20 % la latence médiane d'envoi de messages.

Comment les bases de données NoSQL fonctionnent-elles ?

Les bases de données NoSQL utilisent divers modèles de données pour l'accès aux données et leur gestion. Ces types de bases de données sont spécialement optimisés pour les applications qui nécessitent un volume de données important, une faible latence et des modèles de données flexibles, qui sont obtenus en assouplissant certaines des restrictions de cohérence des données des autres bases de données relationnelle. La mise en œuvre n'est pas la même selon le modèle de données. Cependant, de nombreuses bases de données NoSQL utilisent la notation Javascript Object Notation (JSON), un format ouvert d'échange de données qui représente les données sous la forme d'un ensemble de paires nom-valeur.

Exemple de base de données NoSQL

Prenons l'exemple suivant de modélisation de schéma pour une base de données de livres simple :

  • Dans une base de données relationnelle, un enregistrement de livre est souvent désassemblé (ou normalisé) et stocké dans des tables séparées, et les relations sont définies par des contraintes clés primaires et étrangères. Dans cet exemple, la table Livres comporte des colonnes pour l'ISBN, le titre du livre et le numéro d'édition ; la table Auteurs contient des colonnes pour l'identifiant AuteurID et le Nom de l'auteur ; et enfin, la table Auteur-ISBN contient des colonnes pour AuteurID et ISBN. Le modèle relationnel est conçu pour permettre à la base de données de renforcer l'intégrité référentielle entre les tables de la base de données, normalisé pour réduire la redondance, et généralement optimisé pour le stockage.
  • Dans une base de données NoSQL, un enregistrement de livre est généralement stocké sous la forme d'un document. Pour chaque livre, l'article, l'ISBN, le titre du livre, le numéro d'édition, le nom de l'auteur et l'identifiant de l'auteur AuteurID sont stockés en tant qu'attributs dans un seul document. Dans ce modèle, les données sont optimisées pour un développement intuitif et une capacité de mise à l'échelle horizontale.

SQL vs. Terminologie NoSQL

Le tableau suivant compare la terminologie utilisée par certaines bases de données NoSQL avec la terminologie utilisée par les bases de données SQL.

SQL MongoDB DynamoDB Cassandra  Couchbase
Table Collection Table Table Compartiment de données
Rangée Document Élément Rangée Document
Colonne Champ Attribut Colonne Champ
Clé primaire ObjectId Clé primaire
Clé primaire ID de document
Index Index Index secondaire Index Index
Afficher Afficher Index secondaire global Vue matérialisée Afficher
Table ou objet imbriqué Document intégré Carte Carte Carte
Tableau Tableau Liste Liste Liste

Quels sont les types de bases de données NoSQL ?

Il existe plusieurs systèmes de bases de données NoSQL en raison des variations dans la façon dont ils gèrent et stockent les données sans schéma. Nous présentons ci-dessous certains types courants.

Bases de données clé-valeur

Les bases de données clé-valeur sont hautement partitionnables et permettent une mise à l'échelle horizontale à des niveaux que d'autres types de bases de données NoSQL ne peuvent atteindre. Une base de données clé-valeur stocke les données sous forme de paires clé-valeur dans lesquelles une clé sert d'identifiant unique. Les clés et les valeurs peuvent se présenter sous toutes les formes, des objets simples aux objets composés complexes. Les cas d'utilisation tels que le jeu, la technologie publicitaire et l'IoT se prêtent particulièrement bien au modèle de données de stockage clé-valeur. Amazon DynamoDB est conçu pour fournir une latence d'une milliseconde à un chiffre pour n'importe quelle échelle de charges de travail. 

Bases de données document

Les bases de données document ont le même format de modèle de document que celui utilisé par les développeurs dans leur code d'application. Elles stockent les données sous forme d'objets JSON qui sont flexibles, semi-structurés et hiérarchiques par nature. La nature flexible, semi-structurée et hiérarchique des documents et des bases de données documents leur permet d'évoluer avec les besoins des applications. Le modèle de base de données document fonctionne bien avec les catalogues, les profils d'utilisateurs et les systèmes de gestion de contenu où chaque document est unique et évolue au fil du temps. Amazon DocumentDB (compatible avec MongoDB) et MongoDB sont des bases de données document populaires qui fournissent des APIs puissantes et intuitives pour un développement flexible et itératif.

Bases de données orientées graphe

Les bases de données orientées graphes sont spécialement conçues pour faciliter la création et l'exécution d'applications qui fonctionnent avec des jeux de données hautement connectés. Elles recourent à des nœuds pour stocker les entités de données, ainsi qu'à des périphéries pour stocker les relations entre les entités. Une arête possède toujours un nœud initial, un nœud final, un type et une direction. Elle peut décrire les relations, les actions, la propriété parents-enfants, etc. Le nombre et le type de relations qu'un nœud peut avoir sont illimités. Vous pouvez utiliser une base de données orientée graphe pour créer et exécuter des applications qui fonctionnent avec des jeux de données hautement connectés. Les cas d'utilisation typiques d'une base de données orientée graphe comprennent les réseaux sociaux, les moteurs de recommandation, la détection des fraudes et les graphiques de connaissances. Amazon Neptune est un service de base de données orientée graphe entièrement géré qui prend en charge à la fois le modèle Property Graph et le modèle Resource Description Framework (RDF) avec le choix entre deux API graphiques (TinkerPop et RDF/SPARQL).

Bases de données en mémoire

Alors que d'autres bases de données non relationnelles stockent les données sur disque ou sur SSD, les magasins de bases de données en mémoire sont conçus pour éliminer le besoin d'accéder aux disques. Ils sont idéaux pour les applications qui nécessitent des temps de réponse de l'ordre de la microseconde ou qui présentent des pics de trafic importants. Vous pouvez les utiliser dans les applications de jeu et de technologie publicitaire pour des fonctionnalités telles que les classements, les magasins de sessions et l'analyse en temps réel. Amazon MemoryDB for Redis est un service de base de données en mémoire, durable et compatible avec Redis, qui offre une latence de lecture de l'ordre de la microseconde, une latence d'écriture de l'ordre de quelques millisecondes et une durabilité Multi-AZ. Amazon ElastiCache est un service de mise en cache en mémoire, entièrement géré et compatible avec Redis et Memcached, destiné aux charge de travail à faible latence et à haut débit. Amazon DynamoDB Accelerator (DAX) est un autre exemple de magasin de données spécialement conçu pour accélérer les lectures de DynamoDB.

Base de données de recherche

Une base de données de moteur de recherche est un type de base de données non relationnelle dédiée à la recherche de contenu de données, comme les journaux de sortie des applications utilisés par les développeurs pour résoudre les problèmes. Elle utilise des index pour classer les caractéristiques similaires parmi les données et améliorer les capacités de recherche. Les bases de données de moteur de recherche sont optimisées pour trier les données non structurées telles que les images et les vidéos. Amazon OpenSearch Service est conçu pour fournir des visualisations et des analyses en temps quasi-réel de données générées par machine en indexant, agrégeant et recherchant des journaux et des métriques semi-structurés.

Quelles sont les différences entre les bases de données NoSQL et SQL

Pendant des décennies, le modèle de données prédominant dans le développement d'applications était le modèle de données relationnels qui stockait les données dans des tables composées de lignes et de colonnes. Le langage de requête structuré SQL (Structured Query Language) était utilisé pour créer et modifier ces tables relationnelles. Les bases de données SQL modélisent les relations entre les données sous forme de tables. Les lignes d'une table représentent un ensemble de valeurs liées d'un objet ou d'une entité. Chaque colonne de la table représente un attribut de données, et un champ (ou une cellule de table) stocke la valeur réelle de l'attribut. Vous pouvez utiliser un système de gestion de base de données relationnelle (RDBMS) pour accéder aux données de différentes manières sans réorganiser les tables de base de données elles-mêmes.

Ce n'est qu'au milieu ou à la fin des années 2000 que d'autres modèles de données flexibles ont commencé à être adoptés et utilisés de façon significative. Pour différencier et catégoriser ces nouvelles classes de bases de données et de modèles de données, le terme NoSQL a été créé. Le terme NoSQL n'est pas uniquement synonyme de SQL ou de non-SQL. Il est souvent utilisé comme un synonyme du terme non relationnel. Les principales différences entre les bases de données relationnelles et non relationnelles sont indiquées dans le tableau ci-dessous.

 

Bases de données relationnelles

Bases de données NoSQL

Charges de travail optimales

 

 

Les bases de données relationnelles sont conçues pour les applications de traitement transactionnel et de traitement des transactions en ligne (OLTP). Elles conviennent également pour le traitement analytique en ligne (OLAP).   

Les bases de données NoSQL sont conçues pour un certain nombre de schémas d'accès aux données qui incluent des applications à faible latence. Les bases de données de recherche NoSQL sont conçues pour l'analyse de données semi-structurées.

 

Modèle de données

Le modèle relationnel normalise les données dans des tables composées de lignes et de colonnes. Un schéma définit strictement les tables, rangées, colonnes, index, relations entre les tables et autres éléments de base de données. La base de données renforce l'intégrité référentielle dans les relations entre les tables.

Les bases de données NoSQL offrent une variété de modèles de données comme les clés-valeurs, les documents, les graphes et les colonnes, qui sont optimisés pour les performances et la mise à l'échelle.

Propriétés ACID

Les bases de données relationnelles fournissent des propriétés d'atomicité, de cohérence, d'isolation et de durabilité (ACID) :

  • L'Atomicité exige qu'une transaction s'exécute complètement ou pas du tout.
  • La Cohérence signifie que les données doivent se conformer au schéma de base de données une fois qu'une transaction a été engagée.
  • L'Isolation nécessite que les transactions simultanées s'exécutent séparément.
  • La Durabilité implique la capacité à revenir au dernier état connu après une panne système ou une coupure de courant inattendue.

La plupart des bases de données NoSQL offrent des compromis en assouplissant certaines des propriétés ACID des bases de données relationnelles en faveur d'un modèle de données plus flexible qui peut se mettre à l'échelle horizontalement. Cela fait des bases de données NoSQL un excellent choix pour les cas d'utilisation à haut débit et à faible latence qui ont besoin de se mettre à l'échelle horizontalement au-delà des limites d'une seule instance.

Performances

Les performances dépendent généralement du sous-système disque. L'optimisation des requêtes, des index et de la structure des tables est nécessaire pour obtenir des performances élevées.

Les performances dépendent généralement de la taille du cluster matériel sous-jacent, de la latence réseau et de l'application appelante.

Mise à l'échelle

Les bases de données relationnelles sont généralement augmentées en améliorant les capacités de calcul du matériel ou montées en puissance en ajoutant des réplicas pour les charges de travail en lecture seule.

Les bases de données NoSQL sont généralement partitionnables, car les modèles d'accès sont capables de monter en puissance en utilisant une architecture distribuée pour augmenter le débit qui fournit des performances constantes à une échelle quasi illimitée.

API

Les requêtes de stockage et d'extraction de données sont communiquées à l'aide de requêtes conformes à un langage structuré (SQL). Ces requêtes sont analysées et exécutées par la base de données relationnelle.

Les API reposant sur des objets permettent aux développeurs d'applications de stocker et de récupérer très facilement des structures de données. Les clés de partition permettent aux applications de rechercher des paires clé-valeur, des jeux de colonnes ou des documents semi-structurés contenant des objets et attributs d'applications en série.

Dans quels cas les bases de données NoSQL sont-elles un meilleur choix que les bases de données SQL ?

Les bases de données NoSQL sont idéales pour gérer des données indéterminées, non liées ou évoluant rapidement. Leur utilisation est intuitive pour les développeurs lorsque l'application dicte le schéma de base de données. Vous pouvez les utiliser pour les applications qui :

  • Besoin de schémas flexibles qui permettent un développement plus rapide et plus itératif.
  • Priorisation des performances plutôt que de la cohérence des données et du maintien des relations entre les tables de données (intégrité référentielle).
  • Nécessité d'une mise à l'échelle horizontale en partitionnant les données entre les serveurs.
  • Prise des données structurées, semi-structurées et non structurées.

Vous n'avez pas toujours à choisir entre un schéma de base de données relationnel ou non relationnel. Vous pouvez utiliser une combinaison de bases de données SQL et NoSQL dans vos applications. Cette approche hybride est assez courante et garantit que chaque charge de travail est mappée à la bonne base de données pour un rapport qualité-prix optimal.

Comment AWS peut-il prendre en charge vos besoins en matière de bases de données NoSQL ?

AWS propose plusieurs services de base de données NoSQL pour répondre à tous vos besoins en la matière. Par exemple :

  • Amazon DynamoDB est un service de base de données clé-valeur entièrement géré sans serveur qui fournit des performances cohérentes à un chiffre en millisecondes avec une capacité de mise à l'échelle illimitée.
  • Amazon DocumentDB (compatible avec MongoDB) est une base de données document JSON native entièrement gérée qui facilite et réduit le coût de l'exploitation de charges de travail de documents critiques à pratiquement n'importe quelle échelle, sans gérer l'infrastructure.
  • Amazon Neptune est un service de base de données orientée graphe entièrement géré et sans serveur, conçu pour augmenter la capacité de mise à l'échelle et la disponibilité, capable d'interroger des milliards de relations en quelques secondes.
  • Amazon MemoryDB for Redis est un service de base de données en mémoire durable qui offre des temps de réponse de lecture et d'écriture de l'ordre de la microseconde, pour des performances ultra-rapides.
  • Amazon ElastiCache est un service de mise en cache et de stockage de données en mémoire entièrement géré, compatible avec Redis et Memcached, qui fournit des performances en temps réel optimisées en termes de coûts.
  • Amazon Keyspaces (pour Apache Cassandra) est une base de données à larges colonnes sans serveur et entièrement gérée, conçue pour une disponibilité allant jusqu'à 99,999 % avec une réplication multirégionale. Un service de base de données géré compatible avec Apache Cassandra, évolutif, et hautement disponible.
  • Amazon Timestream est une base de données de séries temporelles sans serveur et entièrement gérée qui facilite le stockage et l'analyse de milliards d'événements par jour, jusqu'à 1 000 fois plus rapidement que les bases de données relationnelles. 
  • Amazon OpenSearch Service est une suite de recherche et d'analyse distribuée entièrement gérée qui permet de rechercher, de surveiller et d'analyser en temps réel les données commerciales et opérationnelles.

Commencez à utiliser les bases de données NoSQL sur AWS en créant un compte gratuit dès aujourd'hui !

Quelles bases de données NoSQL sont-elles adaptées pour vous ?
Moderniser vos applications avec les bases de données sur mesure