Présentation d’Azure Cosmos DB : API GremlinIntroduction to Azure Cosmos DB: Gremlin API

Azure Cosmos DB est le service de base de données multimodèle globalement distribué de Microsoft pour les applications stratégiques.Azure Cosmos DB is the globally distributed, multi-model database service from Microsoft for mission-critical applications. Il s’agit d’une base de données multimodèle qui prend en charge les modèles de données sous forme de documents, de graphes, de valeurs-clés et de familles de colonnes.It is a multi-model database and supports document, key-value, graph, and column-family data models. L’API Gremlin d’Azure Cosmos DB est utilisée pour stocker et exploiter les données de graphe dans un service de base de données complètement managé quelle que soit l’échelle.The Azure Cosmos DB Gremlin API is used to store and operate with graph data on a fully managed database service designed for any scale.

Architecture graphique Azure Cosmos DB

Cet article fournit une vue d’ensemble de l’API Gremlin Azure Cosmos DB, et explique comment l’utiliser pour stocker des graphiques volumineux comportant des milliards de sommets et d’arêtes.This article provides an overview of the Azure Cosmos DB Gremlin API and explains how you can use it to store massive graphs with billions of vertices and edges. Vous pouvez interroger les graphiques avec une latence de quelques millisecondes, et faire évoluer facilement leur structure.You can query the graphs with millisecond latency and evolve the graph structure easily. L’API Gremlin d’Azure Cosmos DB est basée sur le standard de base de données graphique Apache TinkerPop  et utilise le langage de requête Gremlin.Azure Cosmos DB's Gremlin API is based on the Apache TinkerPop graph database standard, and uses the Gremlin query language.

L’API Gremlin d’Azure Cosmos DB combine la puissance des algorithmes de base de données de graphes avec une infrastructure hautement évolutive et gérée pour fournir une solution unique et flexible aux problèmes de données les plus courants associés à l’absence de flexibilité et aux approches relationnelles.Azure Cosmos DB's Gremlin API combines the power of graph database algorithms with highly scalable, managed infrastructure to provide a unique, flexible solution to most common data problems associated with lack of flexibility and relational approaches.

Fonctionnalités de la base de données de graphes Azure Cosmos DBFeatures of Azure Cosmos DB graph database

Azure Cosmos DB est une base de données de graphiques entièrement gérée, qui offre une distribution mondiale, une mise à l’échelle élastique du débit et du stockage, des fonctions d’indexation et d’interrogation automatiques, des niveaux de cohérence ajustables et la prise en charge de la norme TinkerPop.Azure Cosmos DB is a fully managed graph database that offers global distribution, elastic scaling of storage and throughput, automatic indexing and query, tunable consistency levels, and support for the TinkerPop standard.

Voici les fonctionnalités différenciées offertes par l’API Gremlin d’Azure Cosmos DB :The following are the differentiated features that Azure Cosmos DB Gremlin API offers:

  • Stockage et débit extensibles de façon élastiqueElastically scalable throughput and storage

    Les graphiques dans le monde réel doivent pouvoir augmenter leur échelle au-delà de la capacité d’un serveur unique.Graphs in the real world need to scale beyond the capacity of a single server. Azure Cosmos DB prend en charge les bases de données de graphes horizontalement scalables dont la taille peut être pratiquement illimitée en termes de stockage et de débit provisionné.Azure Cosmos DB supports horizontally scalable graph databases that can have a virtually unlimited size in terms of storage and provisioned throughput. Au fur et à mesure que l’échelle de la base de données des graphes augmente, les données sont automatiquement réparties à l’aide du partitionnement graphique.As the graph database scale grows, the data will be automatically distributed using graph partitioning.

  • Réplication multirégionMulti-region replication

    Azure Cosmos DB peut répliquer automatiquement vos données de graphes dans n’importe quelle région Azure du monde entier.Azure Cosmos DB can automatically replicate your graph data to any Azure region worldwide. La réplication mondiale simplifie le développement d’applications qui exigent un accès global aux données.Global replication simplifies the development of applications that require global access to data. En plus de minimiser la latence de lecture et d’écriture quel que soit l’emplacement géographique, Azure Cosmos DB offre un mécanisme de basculement régional automatique qui peut assurer la continuité de votre application dans les rares cas d’une interruption de service dans une région.In addition to minimizing read and write latency anywhere around the world, Azure Cosmos DB provides automatic regional failover mechanism that can ensure the continuity of your application in the rare case of a service interruption in a region.

  • Requêtes et traversées rapides avec la norme de requête graphique la plus largement adoptéeFast queries and traversals with the most widely adopted graph query standard

    Stockez des sommets et des arêtes hétérogènes, et interrogez-les par le biais d’une syntaxe Gremlin familière.Store heterogeneous vertices and edges and query them through a familiar Gremlin syntax. Gremlin est un langage de requête fonctionnel impératif dont l’interface riche permet d’implémenter des algorithmes graphiques courants.Gremlin is an imperative, functional query language that provides a rich interface to implement common graph algorithms.

    Azure Cosmos DB autorise les requêtes enrichies en temps réel et les traversées sans qu’il soit nécessaire de spécifier des indicateurs de schéma, des index secondaires ou des vues.Azure Cosmos DB enables rich real-time queries and traversals without the need to specify schema hints, secondary indexes, or views. Pour en savoir plus, consultez Interroger des graphes à l’aide de Gremlin.Learn more in Query graphs by using Gremlin.

  • Base de données de graphes complètement managéeFully managed graph database

    Ne vous souciez plus de gérer les ressources de base de données et d’ordinateur.Azure Cosmos DB eliminates the need to manage database and machine resources. La plupart des plateformes de bases de données de graphes existantes dépendent des limites de leur infrastructure et nécessitent souvent un degré élevé de maintenance pour assurer leur fonctionnement.Most existing graph database platforms are bound to the limitations of their infrastructure and often require a high degree of maintenance to ensure its operation.

    En tant que service complètement managé, Cosmos DB élimine la nécessité de gérer les machines virtuelles, de mettre à jour les logiciels d’exécution, de gérer le partitionnement ou la réplication, et de vous préoccuper des mises à niveau complexes de la couche Données.As a fully managed service, Cosmos DB removes the need to manage virtual machines, update runtime software, manage sharding or replication, or deal with complex data-tier upgrades. Chaque graphique est automatiquement sauvegardé et protégé contre les défaillances régionales.Every graph is automatically backed up and protected against regional failures. Ces garanties permettent aux développeurs de se concentrer sur la création de valeur applicative plutôt que sur l’exploitation et la gestion de leurs bases de données de graphes.These guarantees allow developers to focus on delivering application value instead of operating and managing their graph databases.

  • Indexation automatiqueAutomatic indexing

    Par défaut, Azure Cosmos DB indexe automatiquement toutes les propriétés des nœuds et des arêtes du graphe et n’attend ou ne nécessite aucun schéma ou création d’index secondaires.By default, Azure Cosmos DB automatically indexes all the properties within nodes and edges in the graph and doesn't expect or require any schema or creation of secondary indices. En savoir plus sur l’indexation dans Azure Cosmos DBLearn more about indexing in Azure Cosmos DB.

  • Compatibilité avec Apache TinkerPopCompatibility with Apache TinkerPop

    Azure Cosmos DB prend en charge la norme open source Apache TinkerPop.Azure Cosmos DB supports the open-source Apache TinkerPop standard. La norme Tinkerpop dispose d’un vaste écosystème d’applications et de bibliothèques qui peuvent être facilement intégrées avec l’API Gremlin d’Azure Cosmos DB.The Tinkerpop standard has an ample ecosystem of applications and libraries that can be easily integrated with Azure Cosmos DB's Gremlin API.

  • Niveaux de cohérence ajustablesTunable consistency levels

    Azure Cosmos DB fournit cinq niveaux de cohérence bien définis pour obtenir le bon compromis entre la cohérence et les performances de votre application.Azure Cosmos DB provides five well-defined consistency levels to achieve the right tradeoff between consistency and performance for your application. Pour les requêtes et les opérations de lecture, Azure Cosmos DB propose cinq niveaux de cohérence distincts : Fort, En fonction de l’obsolescence, Par session, Préfixe cohérent et Éventuel.For queries and read operations, Azure Cosmos DB offers five distinct consistency levels: strong, bounded-staleness, session, consistent prefix, and eventual. Ces niveaux de cohérence bien définis et granulaires vous permettent de trouver un bon compromis entre cohérence, disponibilité et latence.These granular, well-defined consistency levels allow you to make sound tradeoffs among consistency, availability, and latency. Pour plus d’informations, consultez Niveaux de cohérence des données paramétrables dans Azure Cosmos DB.Learn more in Tunable data consistency levels in Azure Cosmos DB.

Scénarios susceptibles d’utiliser l’API GremlinScenarios that can use Gremlin API

Voici quelques scénarios où la prise en charge des graphes par Azure Cosmos DB peut être utile :Here are some scenarios where graph support of Azure Cosmos DB can be useful:

  • Réseaux sociaux/Client 365Social networks/Customer 365

    En associant des données sur vos clients et leurs interactions avec d’autres personnes, vous pouvez développer des expériences personnalisées, prédire le comportement des clients ou connecter entre elles des personnes ayant les mêmes intérêts.By combining data about your customers and their interactions with other people, you can develop personalized experiences, predict customer behavior, or connect people with others with similar interests. Azure Cosmos DB peut servir à gérer des réseaux sociaux et à suivre les données et les préférences des clients.Azure Cosmos DB can be used to manage social networks and track customer preferences and data.

  • Moteurs de recommandationRecommendation engines

    Ce scénario est couramment utilisé dans le secteur de la vente au détail.This scenario is commonly used in the retail industry. En associant des informations sur les produits, les utilisateurs et les interactions des utilisateurs (achats, navigation ou notation d’un article), vous pouvez générer des recommandations personnalisées.By combining information about products, users, and user interactions, like purchasing, browsing, or rating an item, you can build customized recommendations. Azure Cosmos DB, avec sa faible latence, sa mise à l’échelle élastique et sa prise en charge native des graphes, est idéal pour ces scénarios.The low latency, elastic scale, and native graph support of Azure Cosmos DB is ideal for these scenarios.

  • GéospatialGeospatial

    De nombreuses applications dans les secteurs des télécommunications, de la logistique et de la planification de voyages nécessitent de trouver un lieu intéressant dans une zone donnée, ou de rechercher l’itinéraire le plus court/optimal entre deux lieux.Many applications in telecommunications, logistics, and travel planning need to find a location of interest within an area or locate the shortest/optimal route between two locations. Azure Cosmos DB constitue une solution naturelle à ces problèmes.Azure Cosmos DB is a natural fit for these problems.

  • Internet des objetsInternet of Things

    Avec le réseau et les connexions entre les appareils IoT modélisés sous forme de graphe, vous pouvez obtenir un meilleur aperçu de l’état de vos appareils et ressources.With the network and connections between IoT devices modeled as a graph, you can build a better understanding of the state of your devices and assets. Vous pouvez aussi découvrir comment les modifications apportées à une partie du réseau peuvent potentiellement en affecter une autre partie.You also can learn how changes in one part of the network can potentially affect another part.

Présentation des bases de données de graphesIntroduction to graph databases

Les données telles qu’elles apparaissent dans le monde réel sont naturellement connectées.Data as it appears in the real world is naturally connected. La modélisation traditionnelle des données consiste à définir les entités séparément et à calculer leurs relations au moment de l’exécution.Traditional data modeling focuses on defining entities separately and computing their relationships at runtime. Bien que ce modèle présente des avantages, la gestion des données hautement connectées peut s’avérer difficile avec ses contraintes.While this model has its advantages, highly connected data can be challenging to manage under its constraints.

En fait, une approche de base de données de graphes repose sur des relations persistantes dans la couche de stockage, ce qui optimise les opérations de récupération de graphiques.A graph database approach relies on persisting relationships in the storage layer instead, which leads to highly efficient graph retrieval operations. L’API Gremlin d’Azure Cosmos DB prend en charge le modèle de graphique de propriétés.Azure Cosmos DB's Gremlin API supports the property graph model.

Objets graphiques de propriétéProperty graph objects

Un graphique de propriété est une structure composée de sommets et d’arêtes.A property graph is a structure that's composed of vertices and edges. Les deux objets peuvent avoir un nombre arbitraire de paires clé-valeur définies en tant que propriétés.Both objects can have an arbitrary number of key-value pairs as properties.

  • Sommets – Les sommets désignent des entités discrètes, comme une personne, un lieu ou un événement.Vertices - Vertices denote discrete entities, such as a person, a place, or an event.

  • Arêtes – Les arêtes désignent les relations entre les sommets.Edges - Edges denote relationships between vertices. Par exemple, une personne peut en connaître une autre, être impliquée dans un événement et avoir récemment été dans un lieu.For example, a person might know another person, be involved in an event, and recently been at a location.

  • Properties – Les propriétés expriment des informations sur les arêtes et les sommets,Properties - Properties express information about the vertices and edges. Les sommets et les arêtes peuvent comporter un nombre illimité de propriétés qui permettent de décrire et de filtrer les objets dans une requête.There can be any number of properties in either vertices or edges, and they can be used to describe and filter the objects in a query. Les exemples de propriétés incluent un sommet qui a un nom et un âge, ou une arête, qui peut avoir un horodatage et/ou un poids.Example properties include a vertex that has name and age, or an edge, which can have a time stamp and/or a weight.

Les bases de données de graphes sont souvent incluses dans la catégorie de base de données NoSQL, ou non relationnelle, puisqu’il n’y a aucune dépendance envers un schéma ou un modèle de données contraint.Graph databases are often included within the NoSQL or non-relational database category, since there is no dependency on a schema or constrained data model. Cette absence de schéma permet de modéliser et de stocker naturellement et efficacement les structures connectées.This lack of schema allows for modeling and storing connected structures naturally and efficiently.

Gremlin par l’exempleGremlin by example

Nous allons utiliser un exemple de graphe pour comprendre comment les requêtes peuvent être exprimées dans Gremlin.Let's use a sample graph to understand how queries can be expressed in Gremlin. L’illustration suivante montre une application métier qui gère les données sur les utilisateurs, les centres d’intérêt et les appareils sous la forme d’un graphe.The following figure shows a business application that manages data about users, interests, and devices in the form of a graph.

Exemple de base de données montrant des personnes, des appareils et des centres d’intérêt

Ce graphe présente les types suivants de sommet (appelés « label » dans Gremlin) :This graph has the following vertex types (called "label" in Gremlin):

  • Personnes : le graphique comporte trois personnes (Robin, Thomas et Ben).People: The graph has three people, Robin, Thomas, and Ben
  • Centres d’intérêt : leurs centres d'intérêt, dans cet exemple, le football.Interests: Their interests, in this example, the game of Football
  • Appareils : les appareils utilisés par ces personnes.Devices: The devices that people use
  • Systèmes d’exploitation : systèmes d'exploitation de ces appareils.Operating Systems: The operating systems that the devices run on

Nous représentons les relations entre ces entités à l’aide des types/labels d’arête suivants :We represent the relationships between these entities via the following edge types/labels:

  • Connaît : par exemple, « Thomas connaît Robin »Knows: For example, "Thomas knows Robin"
  • S’intéresse : pour représenter les centres d'intérêt des personnes dans notre graphe, par exemple, « Ben s'intéresse au football »Interested: To represent the interests of the people in our graph, for example, "Ben is interested in Football"
  • ExécuteSE : l'ordinateur portable exécute le système d'exploitation WindowsRunsOS: Laptop runs the Windows OS
  • Utilise : pour représenter l'appareil qu'une personne utilise.Uses: To represent which device a person uses. Par exemple, Robin utilise un téléphone Motorola dont le numéro de série est 77For example, Robin uses a Motorola phone with serial number 77

Nous allons exécuter certaines opérations sur ce graphe à l’aide de la Console Gremlin.Let's run some operations against this graph using the Gremlin Console. Vous pouvez également effectuer ces opérations à l’aide de pilotes de Gremlin dans la plateforme de votre choix (Java, Node.js, Python ou .NET).You can also perform these operations using Gremlin drivers in the platform of your choice (Java, Node.js, Python, or .NET). Avant d’examiner ce qui est pris en charge dans Azure Cosmos DB, penchons-nous sur quelques exemples pour vous familiariser avec la syntaxe.Before we look at what's supported in Azure Cosmos DB, let's look at a few examples to get familiar with the syntax.

En premier lieu, examinons CRUD.First let's look at CRUD. L’instruction Gremlin suivante insère le vertex « Thomas » dans le graphe :The following Gremlin statement inserts the "Thomas" vertex into the graph:

:> g.addV('person').property('id', 'thomas.1').property('firstName', 'Thomas').property('lastName', 'Andersen').property('age', 44)

Ensuite, l’instruction Gremlin suivante insère une arête « connaît » entre Thomas et Robin.Next, the following Gremlin statement inserts a "knows" edge between Thomas and Robin.

:> g.V('thomas.1').addE('knows').to(g.V('robin.1'))

La requête suivante renvoie les vertex « personne » dans l’ordre décroissant de leur prénom :The following query returns the "person" vertices in descending order of their first names:

:> g.V().hasLabel('person').order().by('firstName', decr)

Les graphes brillent lorsque vous devez répondre aux questions telles que « Quels systèmes d’exploitation les amis de Thomas utilisent-ils ? ».Where graphs shine is when you need to answer questions like "What operating systems do friends of Thomas use?". Vous pouvez exécuter la traversée Gremlin qui suit pour obtenir cette information à partir du graphe :You can run this Gremlin traversal to get that information from the graph:

:> g.V('thomas.1').out('knows').out('uses').out('runsos').group().by('name').by(count())

Étapes suivantesNext steps

Pour en savoir plus sur la prise en charge des graphiques dans Azure Cosmos DB, consultez :To learn more about graph support in Azure Cosmos DB, see: