Qu’est-ce qu’Azure Cosmos DB for Apache Gremlin ?

S’APPLIQUE À : Gremlin

Azure Cosmos DB est une base de données NoSQL et relationnelle complètement managée pour développer des applications modernes.

Azure Cosmos DB for Apache Gremlin est un service de base de données de graphe utilisé pour stocker des graphes volumineux comportant des milliards de sommets et d’arêtes. Vous pouvez interroger les graphiques avec une latence de quelques millisecondes, et faire évoluer facilement leur structure. L’API pour Gremlin est basée sur Apache TinkerPop, une infrastructure de calcul de graphes qui utilise le langage de requête Gremlin.

Important

Le moteur graphique Azure Cosmos DB suit étroitement la spécification Apache TinkerPop. Toutefois, il existe des différences dans les détails de l’implémentation qui sont spécifiques à Azure Cosmos DB. Certaines fonctionnalités prises en charge par Apache TinkerPop ne sont pas disponibles dans Azure Cosmos DB. pour en savoir plus sur les fonctionnalités non prises en charge, consultez l’article compatibilité avec Apache TinkerPop .

L’API Gremlin combine la puissance des algorithmes de base de données de graphe avec une infrastructure managée et hautement évolutive. Cette approche fournit une solution unique et flexible aux problèmes de données courants associés à l’absence de flexibilité ou aux contraintes relationnelles.

Conseil

Vous voulez essayer l’API pour Gremlin sans engagement ? Créez un compte Azure Cosmos DB en utilisant Essayer Azure Cosmos DB gratuitement.

Avantages de l’API pour Gremlin

L’API pour Gremlin offre l’avantage supplémentaire d’être basée sur Azure Cosmos DB :

  • Mise à l’échelle élastique du débit et du stockage : dans le monde réel, les graphiques doivent pouvoir être mis à l’échelle au-delà de la capacité d’un seul serveur. Azure Cosmos DB prend en charge les bases de données de graphes horizontalement scalables dont la taille peut être illimitée en termes de stockage et de débit provisionné. 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.

  • Réplication multirégion : Azure Cosmos DB peut répliquer automatiquement vos données de graphes dans n’importe quelle région Azure du monde entier. La réplication mondiale simplifie le développement d’applications qui exigent un accès global aux données. En plus de minimiser la latence de lecture et d’écriture partout dans le monde, Azure Cosmos DB fournit un mécanisme de basculement régional automatique managé par service. Ce mécanisme peut assurer la continuité de votre application dans le cas rare d’une interruption de service dans une région.

  • Requêtes et traversées rapides avec la norme de requête graphique la plus largement adoptée : Stockez des sommets et des arêtes hétérogènes, et interrogez-les par le biais d’une syntaxe Gremlin familière. Gremlin est un langage de requête fonctionnel impératif dont l’interface riche permet d’implémenter des algorithmes graphiques courants. L’API pour Gremlin 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. Pour plus d’informations, consultez Graphiques de requête à l’aide de Gremlin.

  • Base de données de graphes complètement managée : Ne vous souciez plus de gérer les ressources de base de données et d’ordinateur. 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. 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. Chaque graphique est automatiquement sauvegardé et protégé contre les défaillances régionales. Avec cette gestion, les développeurs peuvent ainsi 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.

  • Indexation automatique : Par défaut, l’API pour Gremlin indexe automatiquement toutes les propriétés des nœuds (également appelés sommets) et des arêtes du graphe, et n’attend ou ne nécessite aucun schéma ou création d’index secondaires. Pour plus d’informations, consultez Indexation dans Azure Cosmos DB.

  • Compatibilité avec Apache TinkerPop : l’API pour Gremlin prend en charge la norme open source Apache TinkerPop. La norme Apache Tinkerpop dispose d’un vaste écosystème d’applications et de bibliothèques qui peuvent être facilement intégrées avec l’API.

  • Niveaux de cohérence réglables : 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. 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. Ces niveaux de cohérence bien définis et granulaires vous permettent de trouver un bon compromis entre cohérence, disponibilité et latence. Pour plus d’informations, voir Niveaux de cohérence ajustables dans Azure Cosmos DB.

Scénarios courants pour l’API pour Gremlin

Voici quelques scénarios où la prise en charge des graphes par Azure Cosmos DB peut être utile :

  • Réseaux sociaux/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. Azure Cosmos DB peut servir à gérer des réseaux sociaux et à suivre les données et les préférences des clients.

  • Moteurs de recommandation : Ce scénario est couramment utilisé dans le secteur de la vente au détail. 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. 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.

  • Géospatial : 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. Azure Cosmos DB constitue une solution naturelle à ces problèmes.

  • Internet des objets : 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. Vous pouvez aussi découvrir comment les modifications apportées à une partie du réseau peuvent potentiellement en affecter une autre partie.

Présentation des bases de données de graphes

Les données telles qu’elles apparaissent dans le monde réel sont naturellement connectées. 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. 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.

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. L’API pour Gremlin prend en charge le modèle de graphique de propriétés.

Objets graphiques de propriété

Un graphique de propriété est une structure composée de sommets et de bords. Les deux objets peuvent avoir un nombre arbitraire de paires clé-valeur définies en tant que propriétés.

  • Sommets/nœuds : Les sommets désignent des entités discrètes, comme une personne, un lieu ou un événement.

  • Arêtes/relations : Les arêtes désignent les relations entre les sommets. Par exemple, une personne peut en connaître une autre, être impliquée dans un événement ou avoir récemment été dans un lieu.

  • Properties : Les propriétés expriment des informations (ou métadonnées) sur les arêtes et les sommets. Les sommets et les bords peuvent comporter un nombre illimité de propriétés qui permettent de décrire et de filtrer les objets dans une requête. 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.

  • Étiquette – Une étiquette est un nom ou l’identificateur d’un sommet ou d’une arête. Les étiquettes peuvent regrouper plusieurs sommets ou arêtes de telle sorte que tous les sommets/arêtes d’un groupe aient une certaine étiquette. Par exemple, un graphe peut avoir plusieurs sommets ayant comme type d’étiquette « Personne ».

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. Cette absence de schéma permet de modéliser et de stocker naturellement et efficacement les structures connectées.

Exemple de base de données de graphe

Nous allons utiliser un exemple de graphe pour comprendre comment les requêtes peuvent être exprimées dans 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.

Exemple de graphique de propriétés montrant les personnes, les appareils et les centres d’intérêt.

Ce graphe présente les types suivants de sommet. Ces types sont également appelés étiquettes dans Gremlin :

  • Personnes : le graphique comporte trois personnes (Robin, Thomas et Ben).

  • Centres d’intérêt : leurs centres d’intérêt incluent, dans cet exemple, le football.

  • Appareils : les appareils utilisés par ces personnes.

  • Systèmes d’exploitation : le système d’exploitation de ces appareils.

  • Emplacement : emplacement où les appareils sont accessibles.

Nous représentons les relations entre ces entités à l’aide des types d’arêtes suivants :

  • Knows : représente la familiarité. Par exemple, « Thomas connaît Robin ».

  • Interested : Représente les intérêts des personnes dans notre graphique. Par exemple, « Ben s’intéresse au football ».

  • RunsOS : représente le système d’exploitation exécuté par un appareil. Par exemple « L’ordinateur portable exécute le système d’exploitation Windows ».

  • Utilisations : pour représenter l’appareil qu’une personne utilise. Par exemple, « Robin utilise un téléphone Motorola dont le numéro de série est 77 ».

  • Situé dans : pour représenter le lieu d’accès aux appareils.

La console Gremlin est un terminal interactif offert par Apache TinkerPop. Ce terminal sert à interagir avec les données de graphe. Pour plus d’informations, consultez le guide de démarrage rapide de la console Gremlin. 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). Les exemples suivants montrent comment exécuter des requêtes sur ces données de graphe à l’aide de la console Gremlin.

Examinons d’abord la création, la lecture, la mise à jour et la suppression (CRUD). L’instruction Gremlin suivante insère le vertexThomas dans le graphe avec quelques propriétés :

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

Conseil

Si vous suivez ces exemples, vous pouvez utiliser l’une de ces propriétés (age, firstName, lastName) comme clé de partition lorsque vous créez votre graphique. La propriété id n’est pas prise en charge en tant que clé de partition dans un graphique.

Ensuite, l’instruction Gremlin suivante insère un bord connaît entre Thomas et 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 :

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 ? ». Vous pouvez exécuter la traversée Gremlin qui suit pour obtenir cette information à partir du graphe :

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

Étapes suivantes