Présentation de NoSQL

Bases de données non relationnelles hautes performances avec des modèles de données flexibles.

Que sont les bases de données NoSQL ?

Les bases de données NoSQL sont conçues spécialement pour des modèles de données spécifiques et disposent de schémas flexibles pour construire des applications modernes. Les bases de données NoSQL sont largement reconnues pour leur facilité de développement, leur fonctionnalité et leur performance à l'échelle. Elles utilisent une variété de modèles de données, y compris le document, le graphique, la valeur clé, la mémoire et la recherche. Cette page comprend des ressources pour vous aider à mieux comprendre les bases de données NoSQL et à démarrer.

Pendant des décennies, le modèle de données prédominant qui a été utilisé pour le développement d'applications a été le modèle de données relationnelles utilisé par les bases de données relationnelles telles que Oracle, DB2, SQL Server, MySQL et PostgreSQL. Ce n'est qu'au milieu ou à la fin des années 2000 que d'autres modèles de données 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 » est, souvent, utilisé de manière interchangeable avec « non relationnelle ».


Nouveautés pour les bases de données non relationnelles AWS spécialement conçues

Comment fonctionne une base de données NoSQL (non relationnelle) ?

Les bases de données NoSQL utilisent une variété de modèles de données pour accéder à des données et gérer ces dernières, comme le document, le graphique, la valeur clé, la mémoire et la recherche. 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.

Prenons l'exemple de la modélisation du 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 a des colonnes pour l'ISBN, le titre du livre et le numéro d'édition, la table Auteurs a des colonnes pour l'ID de l'auteur et le nom de l'auteur, et enfin la table Auteur-ISBN a des colonnes pour l'ID de l'auteur et l'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 JSON. Pour chaque livre, l'article, l'ISBN, le titre du livre, le numéro d'édition, le nom de l'auteur et l'ID de l'auteur 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 évolutivité horizontale.

Pourquoi utiliser une base de données NoSQL ?

Les bases de données NoSQL conviennent parfaitement à de nombreuses applications modernes telles que les applications mobiles, Web et les jeux qui nécessitent des bases de données flexibles, évolutives, performantes et hautement fonctionnelles pour offrir une expérience utilisateur exceptionnelle.

  • 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.
  • Évolutivité : les bases de données NoSQL sont généralement conçues pour se développer 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 spécifiques (tels que le document, la valeur clé et le graphique) et des modèles d'accès qui permettent d'obtenir de meilleures performances qu'en essayant d'accomplir des fonctionnalités similaires avec des bases de données relationnelles.
  • Hautement fonctionnel : 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.

Types de bases de données NoSQL

nosql_keyvalue_g

Valeur clé : les bases de données à valeur clé sont hautement divisibles et permettent une mise à l'échelle horizontale à des échelles que d'autres types de bases de données ne peuvent pas atteindre. Les cas d'utilisation tels que le jeu, la technologie publicitaire et l'IdO se prêtent particulièrement bien au modèle de données à valeur clé. Amazon DynamoDB est conçu pour fournir une latence d'une milliseconde à un chiffre pour n'importe quelle échelle de charges de travail. Ces performances constantes expliquent en grande partie pourquoi la fonctionnalité Snapchat Stories, qui inclut la plus grande charge de travail de stockage en écriture de Snapchat, a été transférée vers DynamoDB.

nosql_document_g

Document : certains développeurs ne considèrent pas leur modèle de données en termes de lignes et de colonnes dénormalisées. Typiquement, dans le niveau de l'application, les données sont représentées comme un document JSON parce qu'il est plus intuitif pour les développeurs de considérer leur modèle de données comme un document. La popularité des bases de données de documents s'est accrue parce que les développeurs peuvent persister dans une base de données en utilisant le même format de modèle de document qu'ils utilisent dans leur code d'application. DynamoDB et MongoDB sont des bases de données documentaires populaires qui fournissent des API puissantes et intuitives pour un développement flexible et agile.

nosql_graph_g

Graphique : l'objectif d'une base de données de graphiques est de faciliter la création et l'exécution d'applications qui fonctionnent avec des ensembles de données hautement connectés. Les cas d'utilisation typiques d'une base de données de graphiques 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 bases de données entièrement géré. Neptune prend en charge à la fois le modèle Property Graph et le Resource Description Framework (RDF), offrant le choix entre deux API graphiques : TinkerPop et RDF/SPARQL. Les bases de données de graphiques populaires comprennent Neo4j et Giraph.

nosql_inmemory_g

En mémoire : les applications de jeu et de technologie publicitaire ont des cas d'utilisation tels que des tableaux d'affichage, des enregistrements de session et des analyses en temps réel qui nécessitent des temps de réponse de l'ordre de la microseconde et peuvent avoir des pics de trafic importants à tout moment. Amazon ElastiCache offre Memcached et Redis, pour servir des charges de travail à faible latence et à haut rendement, comme McDonald's, qui ne peuvent pas être servies avec des stockages de données sur disque. Amazon DynamoDB Accelerator (DAX) est un autre exemple de stockage de données spécialement conçu à cet effet. DAX permet à DynamoDB de lire un ordre de grandeur plus rapidement.

nosql_search_g

Recherche : de nombreuses applications produisent des rapports pour aider les développeurs à résoudre les problèmes. Amazon Elasticsearch Service (Amazon ES) 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 rapports et des métriques semi-structurés. Amazon ES est également un moteur de recherche puissant et performant pour les cas d'utilisation de la recherche plein texte. Expedia utilise plus de 150 domaines Amazon ES, 30 To de données et 30 milliards de documents pour une variété de cas d'utilisation critiques, allant de la surveillance opérationnelle et du dépannage au traçage distribué des piles d'applications et à l'optimisation des prix.

Bases de données SQL (relationnelles) vs NoSQL (non relationnelles).

Bien qu'il existe de nombreux types de bases de données NoSQL avec des fonctionnalités différentes, le tableau suivant montre certaines des différences entre les bases de données SQL et les bases de données NoSQL.

  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) et sont bonnes pour le traitement analytique en ligne (OLAP). Les bases de données NoSQL à valeur de clé, document, graphique et en mémoire sont conçues pour l'OLTP pour un certain nombre de modèles 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 utilisent une variété de modèles de données, y compris le document, le graphique, la valeur clé, la mémoire et la recherche.
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 qu'une fois qu'une transaction a été engagée, les données doivent se conformer au schéma de base de données.
  • 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.
Les bases de données NoSQL font souvent des compromis en assouplissant certaines des propriétés ACID des bases de données relationnelles pour un modèle de données plus flexible qui peut évoluer 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 d'évoluer 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.
Évolutivité Les bases de données relationnelles sont généralement mises à l'échelle en augmentant les capacités de calcul du matériel ou en ajoutant des répliques pour les charges de travail en lecture seule. Les bases de données NoSQL sont typiquement partitionnables parce que les modèles d'accès à valeur clé sont capables d'évoluer en utilisant une architecture distribuée pour augmenter le débit qui fournit des performances constantes à une échelle quasi illimitée.
API Les demandes 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 en mémoire. 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.

Terminologie de la comparaison entre les bases de données SQL et 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
Liste
Liste
Clé primaire

Démarrage avec DynamoDB

Pour commencer à utiliser DynamoDB, c'est très simple. Consultez la page Web de démarrage de DynamoDB et créez votre première table en quelques clics. Vous pouvez également télécharger un livre blanc AWS pour connaître les meilleures pratiques de migration des charges de travail d'un système de gestion de bases de données relationnelles (SGBDR) vers DynamoDB.

Qu'est-ce qu'Amazon DynamoDB ?