Wat is Azure Cosmos DB voor Apache Gremlin?

VAN TOEPASSING OP: Gremlin

Azure Cosmos DB is een volledig beheerde NoSQL- en relationele database voor het ontwikkelen van moderne apps.

Azure Cosmos DB voor Apache Gremlin is een graafdatabaseservice die kan worden gebruikt voor het opslaan van enorme grafieken met miljarden hoekpunten en randen. U kunt query's uitvoeren voor de grafieken met een latentie van milliseconden en eenvoudig de grafiekstructuur ontwikkelen. De API voor Gremlin is gebouwd op basis van Apache TinkerPop, een graafcomputingframework dat gebruikmaakt van de Gremlin-querytaal.

Belangrijk

Azure Cosmos DB Graph Engine volgt nauw de Apache TinkerPop-specificatie. Er zijn echter enkele verschillen in de implementatiedetails die specifiek zijn voor Azure Cosmos DB. Sommige functies die worden ondersteund door Apache TinkerPop zijn niet beschikbaar in Azure Cosmos DB voor meer informatie over de niet-ondersteunde functies. Zie het artikel over compatibiliteit met Apache TinkerPop .

De API voor Gremlin combineert de kracht van grafiekdatabasealgoritmen met zeer schaalbare, beheerde infrastructuur. Deze aanpak biedt een unieke en flexibele oplossing voor veelvoorkomende gegevensproblemen met betrekking tot inflexibele of relationele beperkingen.

Tip

Wilt u de API voor Gremlin zonder toezegging proberen? Maak gratis een Azure Cosmos DB-account met behulp van Azure Cosmos DB uitproberen.

API voor Gremlin-voordelen

De API voor Gremlin heeft extra voordelen toegevoegd van het bouwen op Azure Cosmos DB:

  • Elastisch schaalbare doorvoer en opslag: Grafieken in de echte wereld moeten worden geschaald buiten de capaciteit van één server. Azure Cosmos DB biedt ondersteuning voor horizontaal schaalbare grafiekdatabases die een onbeperkte grootte kunnen hebben in termen van opslag en ingerichte doorvoer. Naarmate de schaal van de grafiekdatabase toeneemt, worden de gegevens automatisch gedistribueerd met behulp van grafiekpartitionering.

  • Replicatie in meerdere regio's: Azure Cosmos DB kan uw grafiekgegevens automatisch repliceren naar elke Azure-regio over de hele wereld. Met behulp van wereldwijde replicatie wordt de ontwikkeling van toepassingen waarvoor wereldwijde toegang tot gegevens vereist is, vereenvoudigd. Naast het minimaliseren van de lees- en schrijflatentie overal ter wereld, biedt Azure Cosmos DB een door de service beheerd regionaal failovermechanisme. Dit mechanisme kan de continuïteit van uw toepassing garanderen in het zeldzame geval van een serviceonderbreking in een regio.

  • Snelle query's en doorkruisingen met de meest gebruikte grafiekquerystandaard: heterogene hoekpunten en randen opslaan en er query's op uitvoeren via een bekende Gremlin-syntaxis. Gremlin is een belangrijke, functionele querytaal die een uitgebreide interface beidt om algemene grafiekalgoritmen te implementeren. De API voor Gremlin maakt uitgebreide realtime query's en doorkruisingen mogelijk zonder dat u schemahints, secundaire indexen of weergaven hoeft op te geven. Zie querygrafieken met gremlin voor meer informatie.

  • Volledig beheerde grafiekdatabase: Azure Cosmos DB elimineert de noodzaak om database- en machinebronnen te beheren. De meeste bestaande graafdatabaseplatformen zijn afhankelijk van de beperkingen van hun infrastructuur en vergen vaak een hoge mate van onderhoud om de werking ervan te kunnen blijven garanderen. Omdat Cosmos DB een volledig beheerde service is, hoeven virtuele machines niet meer te worden beheerd, hoeft de runtimesoftware niet te worden bijgewerkt, hoeft sharding of replicatie niet te worden beheerd en hoeven er geen ingewikkelde upgrades van de gegevenslagen te worden uitgevoerd. Er wordt automatisch een back-up van elke grafiek gemaakt en de databases worden automatisch beveiligd tegen regionale fouten. Met dit beheer kunnen ontwikkelaars zich richten op het leveren van toepassingswaarde in plaats van hun grafiekdatabases te gebruiken en te beheren.

  • Automatisch indexeren: de API voor Gremlin indexeert standaard alle eigenschappen binnen knooppunten (ook wel hoekpunten genoemd) en randen in de grafiek en verwacht of vereist geen schema of het maken van secundaire indexen. Zie indexering in Azure Cosmos DB voor meer informatie.

  • Compatibiliteit met Apache TinkerPop: de API voor Gremlin ondersteunt de opensource Apache TinkerPop-standaard. De Apache TinkerPop-standaard heeft een ruim ecosysteem van toepassingen en bibliotheken die eenvoudig kunnen worden geïntegreerd met de API.

  • Instelbare consistentieniveaus: Azure Cosmos DB biedt vijf goed gedefinieerde consistentieniveaus om de juiste balans te bereiken tussen consistentie en prestaties voor uw toepassing. Voor query's en leesbewerkingen biedt Azure Cosmos DB vijf verschillende consistentieniveaus: sterk, gebonden-verouderd, sessie, consistent voorvoegsel en mogelijk. Op basis van deze gedetailleerde, goed gedefinieerde consistentieniveaus kunt u een goede balans vinden tussen de consistentie, beschikbaarheid en latentie. Zie de consistentieniveaus voor gegevens niet in Azure Cosmos DB voor meer informatie.

Algemene scenario's voor API voor Gremlin

Hier zijn enkele scenario's waarin ondersteuning voor grafieken in Azure Cosmos DB nuttig kan zijn:

  • Sociale netwerken/Klant 365: Door gegevens over uw klanten en hun interacties met andere personen te combineren, kunt u persoonlijke ervaringen ontwikkelen, klantgedrag voorspellen of personen met vergelijkbare interesses verbinden. Azure Cosmos DB kan worden gebruikt om sociale netwerken te beheren en klantvoorkeuren en -gegevens bij te houden.

  • Aanbevelingsengines: dit scenario wordt vaak gebruikt in de detailhandel. Door informatie over producten, gebruikers en interactie tussen gebruikers, zoals het kopen, zoeken of beoordelen van een item, te combineren, kunt u aangepaste aanbevelingen genereren. De lage latentie, elastische schaal en systeemeigen ondersteuning voor grafieken van Azure Cosmos DB is ideaal voor deze scenario's.

  • Georuimtelijk: Veel toepassingen in telecommunicatie, logistiek en reisplanning moeten een interessante locatie in een gebied vinden of de kortste/optimale route tussen twee locaties vinden. Azure Cosmos DB is zeer geschikt voor dit soort taken.

  • Internet of Things: Met het netwerk en de verbindingen tussen IoT-apparaten die zijn gemodelleerd als grafiek, kunt u een beter inzicht krijgen in de status van uw apparaten en assets. U krijgt ook inzicht in hoe wijzigingen in één deel van het netwerk van invloed kunnen zijn op een ander deel.

Inleiding tot graafdatabases

Gegevens zoals deze in werkelijkheid voorkomen, zijn op natuurlijke wijze verbonden. Traditionele gegevensmodellering is gericht op het definiëren van afzonderlijke entiteiten en het berekenen van hun relaties in runtime. Hoewel dit model weliswaar enkele voordelen biedt, kan het beheer van uiterst verbonden gegevens een ware uitdaging vormen door alle beperkingen.

De graafdatabasemethode is in plaats daarvan gebaseerd op permanente relaties in de opslaglaag, wat tot uiterst efficiënte ophaalbewerkingen van grafieken leidt. De API voor Gremlin ondersteunt het eigenschapsgrafiekmodel.

Objecten van de eigenschappengrafiek

Een eigenschappengrafiek is een structuur die is samengesteld uit hoekpunten en randen. Voor beide objecten kan een willekeurig aantal sleutel-waardeparen als eigenschappen worden gebruikt.

  • Hoekpunten/knooppunten: Hoekpunten geven discrete entiteiten aan, zoals een persoon, plaats of een gebeurtenis.

  • Randen/relaties: Randen geven relaties tussen hoekpunten aan. Een persoon kan bijvoorbeeld een andere persoon kennen, betrokken zijn bij een gebeurtenis of onlangs op een locatie zijn geweest.

  • Eigenschappen: Eigenschappen express informatie (of metagegevens) over de hoekpunten en randen. Er kan een willekeurig aantal eigenschappen worden gebruikt in hoekpunten of randen en ze kunnen worden gebruikt voor het beschrijven en filteren van de objecten in een query. Voorbeeldeigenschappen omvatten een hoekpunt met een naam en een leeftijd, of een rand, die een tijdstempel en/of gewicht kan hebben.

  • Label: een label is een naam of de id van een hoekpunt of een rand. Labels kunnen meerdere hoekpunten of randen samenbrengen, zodat alle hoekpunten/randen in een groep een bepaald label hebben. Een grafiek kan bijvoorbeeld meerdere hoekpunten hebben met een label 'persoon'.

Grafiekdatabases worden vaak opgenomen in de noSQL- of niet-relationele databasecategorie, omdat er geen afhankelijkheid is van een schema of beperkt gegevensmodel. Door dit ontbreken van een schema kunnen verbonden structuren natuurlijk en efficiënt worden gemodelleerd en opgeslagen.

Voorbeeld van een grafiekdatabase

Laten we een voorbeeldgrafiek gebruiken om te zien hoe query’s kunnen worden uitgedrukt in Gremlin. In de volgende afbeelding ziet u een zakelijke toepassing waarmee gegevens over gebruikers, interesses en apparaten worden beheerd, in de vorm van een grafiek.

Voorbeeldeigenschapsgrafiek met personen, apparaten en interesses.

Deze grafiek heeft de volgende hoekpunttypen . Deze typen worden ook wel labels genoemd in Gremlin:

  • Mensen: De grafiek heeft drie personen; Robin, Thomas en Ben.

  • Interesses: hun interesses zijn in dit voorbeeld het spel voetbal.

  • Apparaten: de apparaten die mensen gebruiken.

  • Besturingssystemen: de besturingssystemen waarop de apparaten worden uitgevoerd.

  • Plaats: De plaats[s] waar apparaten worden geopend.

We laten de relaties tussen deze entiteiten zien via de volgende rand-types:

  • Weet: Vertegenwoordigt bekendheid. Bijvoorbeeld 'Thomas kent Robin'.

  • Geïnteresseerd: Vertegenwoordig de belangen van de mensen in onze grafiek. Bijvoorbeeld 'Ben is geïnteresseerd in voetbal'.

  • RunsOS: Geef aan welk besturingssysteem een apparaat wordt uitgevoerd. Bijvoorbeeld 'Laptop voert het Windows-besturingssysteem uit'.

  • Gebruikt: Vertegenwoordig het apparaat dat een persoon gebruikt. Bijvoorbeeld: "Robin gebruikt een Motorola-telefoon met serienummer 77".

  • Locatie: Vertegenwoordig de locatie van waaruit de apparaten worden geopend.

De Gremlin-console is een interactieve terminal die wordt aangeboden door de Apache TinkerPop. Via deze terminal kunt u werken met de grafiekgegevens. Zie de quickstart voor de Gremlin-console voor meer informatie. U kunt deze bewerkingen ook uitvoeren met behulp van Gremlin-stuurprogramma’s op een platform naar keuze (Java, Node.js, Python of NET). In de volgende voorbeelden ziet u hoe u query's kunt uitvoeren op deze grafiekgegevens met behulp van de Gremlin-console.

Laten we eerst kijken naar maken, lezen, bijwerken en verwijderen (CRUD). Met de volgende Gremlin-instructie wordt het Thomas-hoekpunt met enkele eigenschappen in de grafiek ingevoegd:

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

Tip

Als u deze voorbeelden volgt, kunt u een van deze eigenschappen (age, firstName, lastName) als partitiesleutel gebruiken wanneer u uw grafiek maakt. De id eigenschap wordt niet ondersteund als een partitiesleutel in een grafiek.

Vervolgens voegt de volgende Gremlin-instructie een rand in tussen Thomas en Robin.

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

De volgende query retourneert de hoekpunten van de persoon in aflopende volgorde van de voornamen:

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

Waar grafieken in uitblinken is in het beantwoorden van vragen zoals: Welke besturingssystemen gebruiken de vrienden van Thomas? U kunt deze Gremlin-traversal uitvoeren om deze gegevens op te halen uit de grafiek:

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

Volgende stappen