Présentation de la base de données Azure Cosmos : API GremlinIntroduction to Azure Cosmos DB: Gremlin API

Azure Cosmos DB est le service de base de données multimodèle mondialement distribué de Microsoft pour les applications stratégiques.Azure Cosmos DB is the globally distributed, multimodel 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 en colonnes, documents, graphes et clé-valeur.It is a multimodel database and supports document, key-value, graph, and columnar data models. L’API Azure Cosmos DB Gremlin permet de stocker, d’utiliser,The Azure Cosmos DB Gremlin API is used to store and operate on graph data. de modéliser et de parcourir des données de graphes.Gremlin API supports modeling Graph data and provides APIs to traverse through the graph data.

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 de bords.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 et leur schéma.You can query the graphs with millisecond latency and evolve the graph structure and schema easily. Pour interroger Azure Cosmos DB, vous pouvez utiliser le langage de parcours de graphe Apache TinkerPop ou Gremlin.To query Azure Cosmos DB, you can use the Apache TinkerPop graph traversal language, or Gremlin.

Qu’est une base de données de graphesWhat is a graph database

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 de données traditionnelle se concentre sur les entités.Traditional data modeling focuses on entities. Pour bon nombre d’applications, il y a aussi un besoin de modélisation ou de modélisation des entités et des relations de façon naturelle.For many applications, there's also a need to model or to model both entities and relationships naturally.

Un graphique est une structure composée de sommets et de bords.A graph is a structure that's composed of vertices and edges. Les sommets et les bords peuvent avoir un nombre arbitraire de propriétés.Both vertices and edges can have an arbitrary number of properties.

  • Sommets – Les sommets désignent des objets discrets, comme une personne, un lieu ou un événement.Vertices - Vertices denote discrete objects, 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. par exemple, le nom et l’âge d’un sommetExample properties include a vertex that has name and age. ou la date, l’heure et le poids d’une arête.An edge, which has a time stamp and/or a weight. Plus formellement, ce modèle est appelé un graphique de propriétés.More formally, this model is known as a property graph. Azure Cosmos DB prend en charge le modèle de graphique de propriétés.Azure Cosmos DB supports the property graph model.

Ainsi, l’exemple de graphe suivant met en évidence des relations entre des personnes, des appareils mobiles, des centres d’intérêt et des systèmes d’exploitation :For example, the following sample graph shows relationships among people, mobile devices, interests, and operating systems:

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

Les bases de données de graphiques vous permettent de modéliser et de stocker des graphiques naturellement et efficacement, ce qui les rend utiles pour de nombreux scénarios.Graph databases let you model and store graphs naturally and efficiently, which makes them useful for many scenarios. Les bases de données de graphiques sont généralement des bases de données NoSQL, car ces cas d’utilisation requièrent souvent aussi une flexibilité des schémas et une itération rapide.Graph databases are typically NoSQL databases because these use cases often also need schema flexibility and rapid iteration.

Vous pouvez combiner les traversées rapides qu’offrent les bases de données de graphes avec des algorithmes de graphe tels que la recherche de profondeur, la recherche de largeur et l’algorithme de Dijkstra, pour résoudre des problèmes dans divers domaines tels que les réseaux sociaux, la gestion de contenu, les questions géospatiales et les recommandations.You can combine the fast traversals that graph databases provide with graph algorithms, like depth-first search, breadth-first search, and Dijkstra's algorithm, to solve problems in various domains like social networking, content management, geospatial, and recommendations.

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.

Architecture graphique Azure Cosmos DB

Azure Cosmos DB se démarque des autres bases de données de graphiques sur le marché en proposant les fonctionnalités suivantes :Azure Cosmos DB offers the following differentiated capabilities when compared to other graph databases in the market:

  • 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. Avec Azure Cosmos DB, vous pouvez mettre à l’échelle vos graphiques en toute transparence sur plusieurs serveurs.With Azure Cosmos DB, you can scale your graphs seamlessly across multiple servers. Vous pouvez également mettre à l’échelle le débit de votre graphique de manière indépendante, en fonction de vos modèles d’accès.You can also scale the throughput of your graph independently based on your access patterns. Azure Cosmos DB prend en charge des bases de données de graphiques qui peuvent être mises à l’échelle pour atteindre des tailles de stockage quasi illimitées et un débit approvisionné.Azure Cosmos DB supports graph databases that can scale to virtually unlimited storage sizes and provisioned throughput.

  • Réplication multirégionMulti-region replication

    Azure Cosmos DB réplique en toute transparence vos données de graphique vers toutes les régions que vous avez associées votre compte.Azure Cosmos DB transparently replicates your graph data to all regions that you've associated with your account. La réplication vous permet de développer des applications qui requièrent un accès global aux données.Replication enables you to develop applications that require global access to data. Il existe des compromis dans les domaines de la cohérence, de la disponibilité, des performances et des garanties correspondantes.There are tradeoffs in the areas of consistency, availability, and performance and corresponding guarantees. Azure Cosmos DB fournit un basculement régional transparent avec des API d’hébergement multiple.Azure Cosmos DB provides transparent regional failover with multi-homing APIs. Vous pouvez mettre à l’échelle de façon élastique le débit et le stockage dans le monde entier.You can elastically scale throughput and storage across the globe.

  • Requêtes et parcours rapides avec une syntaxe Gremlin familièreFast queries and traversals with familiar Gremlin syntax

    Stockez des sommets et des bords hétérogènes, et interrogez ces documents via une syntaxe Gremlin familière.Store heterogeneous vertices and edges and query these documents through a familiar Gremlin syntax. Azure Cosmos DB utilise une technologie d’indexation parallèle, structurée par des journaux et sans verrouillage qui permet d’indexer automatiquement tout le contenu.Azure Cosmos DB utilizes a highly concurrent, lock-free, log-structured indexing technology to automatically index all content. Cette capacité autorise des requêtes et traversées enrichies en temps réel, sans qu’il soit nécessaire de spécifier des indicateurs de schéma, des index secondaires ou des vues.This capability 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.

  • Gestion intégraleFully managed

    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. En tant que service Microsoft Azure entièrement géré, vous n’avez pas à gérer de machines virtuelles, à déployer et configurer des logiciels, à gérer la mise à l’échelle ni à vous préoccuper des mises à niveau complexes de la couche Données.As a fully managed Microsoft Azure service, you don't need to manage virtual machines, deploy and configure software, manage scaling, 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. Vous pouvez facilement ajouter un compte Azure Cosmos DB et approvisionner la capacité dont vous avez besoin afin de vous concentrer pleinement sur votre application plutôt que sur l’exploitation et la gestion de votre base de données.You can easily add an Azure Cosmos DB account and provision capacity as you need it so that you can focus on your application instead of operating and managing your database.

  • 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.

  • Compatibilité avec Apache TinkerPopCompatibility with Apache TinkerPop

    Azure Cosmos DB prend nativement en charge la norme Open Source Apache TinkerPop, et peut être intégré à d’autres systèmes graphiques compatibles avec TinkerPop.Azure Cosmos DB natively supports the open-source Apache TinkerPop standard and can be integrated with other TinkerPop-enabled graph systems. Vous pouvez donc facilement migrer depuis une autre base de données de graphe, comme Titan ou Neo4j, ou utiliser Azure Cosmos DB avec des frameworks d’analytique de graphe, comme Apache Spark GraphX.So, you can easily migrate from another graph database, like Titan or Neo4j, or use Azure Cosmos DB with graph analytics frameworks like Apache Spark GraphX.

  • Niveaux de cohérence ajustablesTunable consistency levels

    Effectuez un choix parmi cinq niveaux de cohérence bien définis pour obtenir un équilibre optimal entre cohérence et performances.Select from five well-defined consistency levels to achieve optimal tradeoff between consistency and performance. 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.

Azure Cosmos DB peut également utiliser plusieurs modèles, tels que des documents et des graphiques, au sein des mêmes conteneurs/bases de données.Azure Cosmos DB also can use multiple models, like document and graph, within the same containers/databases. Vous pouvez utiliser un conteneur de documents pour stocker des données de graphiques côte à côte avec des documents.You can use a document container to store graph data side by side with documents. Vous pouvez utiliser tant des requêtes SQL sur JSON que des requêtes Gremlin pour interroger les mêmes données en tant que graphique.You can use both SQL queries over JSON and Gremlin queries to query the same data as a graph.

Prise en mainGet started

Pour créer des comptes d’API Gremlin Azure Cosmos DB, il est possible d’utiliser l’interface de ligne de commande (CLI) Azure, Azure PowerShell ou le Portail Azure.You can use the Azure command-line interface (CLI), Azure PowerShell, or the Azure portal to create and access Azure Cosmos DB Gremlin API accounts. Une fois le compte créé, vous pouvez accéder à ses bases de données de graphes à l’aide d’un point de terminaison de service API Gremlin, https://<youraccount>.gremlin.cosmosdb.azure.com, qui fournit un serveur frontal WebSocket pour Gremlin.After you create an account, you can access the graph databases within that account by using a Gremlin API service endpoint https://<youraccount>.gremlin.cosmosdb.azure.com, that provides a WebSocket frontend for Gremlin. Vous pouvez configurer vos outils compatibles avec TinkerPop, tels que la console Gremlin, pour vous connecter à ce point de terminaison et créer des applications en Java, Node.js, ou tout pilote de client Gremlin.You can configure your TinkerPop-compatible tools, like the Gremlin Console, to connect to this endpoint and build applications in Java, Node.js, or any Gremlin client driver.

Le tableau suivant présente des pilotes Gremlin courants que vous pouvez utiliser sur Azure Cosmos DB :The following table shows popular Gremlin drivers that you can use against Azure Cosmos DB:

DownloadDownload DocumentationDocumentation Mise en routeGetting Started Version du connecteur prise en chargeSupported connector version
.NET.NET Gremlin.NET sur GitHubGremlin.NET on GitHub Créer un graphe avec .NETCreate Graph using .NET 3.4.0-RC23.4.0-RC2
JavaJava Gremlin JavaDocGremlin JavaDoc Créer un graphe avec JavaCreate Graph using Java 3.2.0+3.2.0+
Node.JSNode.js Gremlin-JavaScript sur GitHubGremlin-JavaScript on GitHub Créer un graphe avec Node.jsCreate Graph using Node.js 2.6.02.6.0
PythonPython Gremlin-Python sur GitHubGremlin-Python on GitHub Créer un graphe avec PythonCreate Graph using Python 3.2.73.2.7
PHPPHP Gremlin-PHP sur GitHubGremlin-PHP on GitHub Créer un graphe avec PHPCreate Graph using PHP 3.1.03.1.0
Console GremlinGremlin console Documents TinkerPopTinkerPop docs Créer un graphe à l’aide de la console GremlinCreate Graph using Gremlin Console 3.2.0 +3.2.0 +

Considérations relatives à la conception de bases de données de graphesGraph database design considerations

Lors de la conception du graphe, le choix de modéliser une entité sous la forme d’un sommet à part entière, et non d’une propriété d’autres entités de sommet, a des conséquences sur les performances et les coûts.During graph design, the decision of modelling an entity as a vertex of its own, as opposed to as a property of other vertex entities has performance and cost implications. Le facteur déterminant de cette décision est la manière dont les données sont interrogées, ainsi que sur l’extensibilité du modèle lui-même.The main driver for this decision relies on how the data is going to be queried, as well as the scalability of the model itself.

Pour prévoir la modélisation de l’entité, posez-vous les questions suivantes :Consider the following questions before planning on how to model the entity:

  • Quelles sont les entités à récupérer sous forme de sommets pour la plupart de mes requêtes ?What are the entities that need to be retrieved as vertices for most of my queries?

  • Parmi les informations que j’intègre au graphe, lesquelles sont ajoutées à des fins de filtrage des données ?What is the information that I’m including in the graph that is added for data filtering purposes?

  • Quelles entités sont de simples connexions à d’autres entités, qui sont ensuite récupérées pour leur valeur ?What entities are mere connections to other entities, which are then retrieved for their values?

  • Quelles sont les informations que ma requête doit récupérer ? À combien s’élèveront les frais de RU ainsi générés ?What pieces of information does my query need to retrieve, and what is the RU charge that they’re going to generate?

Prenons par exemple le graphe suivant :For example, assume the following graph design:

Exemple de considérations relatives à la conception de graphes

  • Selon les requêtes, il est possible que la relation District (« quartier ») -> Store (« magasin ») soit exclusivement utilisée pour filtrer les sommets Store,Depending on the queries, it is possible that the District->Store relationship is used uniquely for filtering the Store vertices. par exemple, si les requêtes sont sous la forme « Obtenir tous les magasins qui appartiennent à un certain quartier ».For example, if queries are in the format - “obtain all the stores that belong to a specific district”. Il peut dans ce cas être intéressant de ramener l’entité District d’un sommet à part entière à une propriété du sommet Store.If this is the case, then it is worth to consider collapsing the District entity from a vertex of its own to a property of the Store vertex.

  • Cette approche présente l’avantage de réduire les coûts : pour chaque sommet Store, il fallait récupérer trois objets de graphe à la fois (District, District -> Store, Store), contre un seul sommet Store maintenant.This approach has the benefit of reducing the cost of retrieving each Store vertex from obtaining three graph objects at a time (District, District->Store, Store) to a single Store vertex. Les performances peuvent s’en trouver améliorées, de même que le coût par requête.This can provide performance improvements, as well as a reduced cost per query.

  • Dans la mesure où le sommet Store est lié à deux entités différentes, Employee (« employé ») et Product (« produit »),Because the Store vertex links to two different entities- Employee and Product. il peut offrir des possibilités de parcours supplémentaires. C’est donc un sommet nécessaire.It makes the Store a necessary vertex since it can provide additional possibilities to traverse.

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

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

  • Réseaux sociauxSocial networks

    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 graphiques, est idéal pour la modélisation de ces interactions.The low latency, elastic scale, and native graph support of Azure Cosmos DB is ideal for modeling these interactions.

  • Questions géospatialesGeospatial

    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.

É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: