Introduktion till Gremlin-API i Azure Cosmos DB

GÄLLER för: Gremlin-API

Azure Cosmos DB   är den globalt distribuerade databastjänsten för flera modeller från Microsoft för verksamhetskritiska program. Det är en databas med flera modeller och har stöd för dokument, nyckel/värde-, diagram- och kolumnfamiljemodeller. Azure Cosmos DB en grafdatabastjänst via Gremlin-API:et på en fullständigt hanterad databastjänst utformad för alla skalning.

Azure Cosmos DB-diagramarkitektur

Den här artikeln innehåller en översikt över Azure Cosmos DB Gremlin API och förklarar hur du använder dem för att lagra enorma grafer med miljarder hörn och kanter. Du kan köra frågor mot diagrammen med svarstider på millisekunder och enkelt utveckla grafstrukturen. Azure Cosmos DB gremlin-API bygger på Apache TinkerPop, ett ramverk för grafberäkning. Gremlin-API:et i Azure Cosmos DB använder Gremlin-frågespråket.

Azure Cosmos DB Gremlin-API kombinerar kraften i grafdatabasalgoritmer med mycket skalbar, hanterad infrastruktur för att tillhandahålla en unik, flexibel lösning på de flesta vanliga dataproblem som är associerade med brist på flexibilitet och relationella metoder.

Anteckning

Azure Cosmos DB graph engine följer Apache TinkerPop-specifikationen. Det finns dock vissa skillnader i implementeringsinformationen som är specifika för Azure Cosmos DB. Vissa funktioner som stöds av Apache TinkerPop är inte tillgängliga i Azure Cosmos DB. Mer information om de funktioner som inte stöds finns i artikeln kompatibilitet med Apache TinkerPop.

Funktioner i Azure Cosmos DB:s Gremlin-API

Azure Cosmos DB är en fullständigt hanterad grafdatabas med global distribution, elastisk skalbarhet av lagring och dataflöde, automatisk indexering och frågor, justerbara konsekvensnivåer och stöd för TinkerPop-standarden.

Anteckning

Läget för serverlös kapacitet är nu tillgängligt på Azure Cosmos DB Gremlin-API:et.

Följande är de differentierade funktioner som Azure Cosmos DB Gremlin API erbjuder:

  • Elastiskt skalbara dataflöden och lagring

    Diagram i verkligheten behöver skala utöver kapaciteten för en enskild server. Azure Cosmos DB stöder vågrätt skalbara grafdatabaser som kan ha en praktiskt taget obegränsad storlek vad gäller lagring och etablerat dataflöde. När grafdatabasskalan växer distribueras data automatiskt med hjälp av grafpartitionering.

  • Replikering för flera regioner

    Azure Cosmos DB automatiskt replikera dina grafdata till valfri Azure-region över hela världen. Global replikering förenklar utvecklingen av program som kräver global åtkomst till data. Förutom att minimera läs- och skrivfördröjningen var som helst över hela världen, tillhandahåller Azure Cosmos DB automatisk regional redundansmekanism som kan garantera kontinuiteten för ditt program i sällsynta fall av ett tjänstavbrott i en region.

  • Snabba frågor och traverserar med den mest använda graffrågestandarden

    Lagra heterogena hörn och kanter och fråga dem via en välbekant Gremlin-syntax. Gremlin är ett imperativt, funktionellt frågespråk som tillhandahåller ett omfattande gränssnitt för att implementera vanliga grafalgoritmer.

    Azure Cosmos DB ger omfattande realtidsfrågor och traverserar utan att du behöver ange schematips, sekundärindex eller vyer. Läs mer i Fråga diagram med hjälp av Gremlin.

  • Fullständigt hanterad grafdatabas

    Azure Cosmos DB eliminerar behovet av att hantera databasen och datorresurserna. De flesta befintliga grafdatabasplattformar är bundna till begränsningarna i sin infrastruktur och kräver ofta en hög grad av underhåll för att säkerställa att den fungerar.

    Som en fullständigt hanterad tjänst Cosmos DB bort behovet av att hantera virtuella datorer, uppdatera körningsprogram, hantera horisontell partitionering eller replikering eller hantera komplexa uppgraderingar på datanivå. Varje databas säkerhetskopieras och skyddas automatiskt mot regionala fel. På så sätt kan utvecklare fokusera på att leverera programvärde i stället för att driva och hantera sina grafdatabaser.

  • Automatisk indexering

    Som standard indexerar Azure Cosmos DB automatiskt alla egenskaper inom noderna (kallas även hörn) och kanter i grafen och förväntar sig eller kräver inte något schema eller att sekundära index skapas. Läs mer om indexering i Azure Cosmos DB.

  • Kompatibilitet med Apache TinkerPop

    Azure Cosmos DB har stöd för Apache TinkerPop-standarden med öppen källkod. Tinkerpop-standarden har ett omfattande ekosystem med program och bibliotek som enkelt kan integreras Azure Cosmos DB gremlin-API:et.

  • Justerbara konsekvensnivåer

    Azure Cosmos DB fem väldefinierade konsekvensnivåer för att uppnå rätt balans mellan konsekvens och prestanda för ditt program. Azure Cosmos DB erbjuder fem olika konsekvensnivåer för frågor och läsåtgärder: stark, bunden utgång, session, enhetligt prefix och slutlig. Med de här detaljerade, väldefinierade konsekvensnivåerna kan du själv avgöra balansen mellan konsekvens, tillgänglighet och svarstid. Läs mer i Justerbara datakonsekvensnivåer i Azure Cosmos DB.

Scenarier som använder Gremlin API

Här är några scenarier där grafstöd för Azure Cosmos DB kan vara användbart:

  • Sociala nätverk/kund 365

    Genom att kombinera data om dina kunder och deras interaktioner med andra personer kan du utveckla anpassade upplevelser, förutsäga kundbeteende eller ansluta personer med andra med liknande intressen. Azure Cosmos-DB kan användas för att hantera sociala nätverk och spåra kundinställningar och data.

  • Rekommendationsmotorer

    Det här scenariot används ofta inom detaljhandeln. Genom att kombinera information om produkter, användare och användarinteraktioner som köp, bläddring eller klassificeringen av ett objekt, kan du skapa anpassade rekommendationer. Den låga svarstiden, elastisk skalning och inbyggda grafstöd för Azure Cosmos DB passar perfekt för dessa scenarier.

  • Geospatial

    Många program inom telekommunikation, logistik och reseplanering måste hitta en plats av intresse inom ett område eller hitta den kortaste/optimala vägen mellan två platser. Azure Cosmos DB är en naturlig lösning på de här problemen.

  • Sakernas Internet

    Med nätverket och anslutningarna mellan IoT-enheter som modellerats som ett diagram, kan du skapa en bättre förståelse för dina enheters och tillgångars tillstånd. Du kan också undersöka hur ändringar i en del av nätverket kan påverka en annan del.

Introduktion till grafdatabaser

Data som de visas i verkligheten är naturligt sammanlänkade. Traditionell datamodellering fokuserar på att definiera entiteter separat och beräkna deras relationer vid körning. Även om den här modellen har sina fördelar kan mycket anslutna data vara svåra att hantera under dess begränsningar.

En metod för grafdatabaser förlitar sig på beständiga relationer i lagringslagret i stället, vilket leder till mycket effektiva diagramhämtningsåtgärder. Azure Cosmos DB Gremlin-API:et stöder egenskapsdiagrammodellen.

Egenskapsdiagramobjekt

En egenskapsgraf är en struktur som består av hörn och kanter. Båda objekten kan ha ett godtyckligt antal nyckel/värde-par som egenskaper.

  • Hörn/noder – Hörn anger diskreta entiteter, till exempel en person, en plats eller en händelse.

  • Kanter/relationer – Kanter anger relationer mellan hörn. En person kan till exempel känna till en annan person, vara inblandad i en händelse och nyligen ha varit på en plats.

  • Egenskaper – Egenskaper uttrycker information om brytpunkterna och kanterna. Det kan finnas val av antal egenskaper i antingen hörn eller kanter, och de kan användas för att beskriva och filtrera objekten i en fråga. Exempelegenskaper innehåller ett hörn med namn och ålder, eller en kant, som kan ha en tidsstämpel och/eller en vikt.

  • Etikett – En etikett är ett namn eller identifierare för ett hörn eller en kant. Etiketter kan gruppera flera hörn eller kanter så att alla hörn/kanter i en grupp har en viss etikett. Ett diagram kan till exempel ha flera hörn av etiketttypen "person".

Graph-databaser ingår ofta i kategorin NoSQL eller icke-relationell databas, eftersom det inte finns något beroende av ett schema eller en begränsad datamodell. Den här bristen på schema möjliggör modellering och lagring av anslutna strukturer på ett naturligt och effektivt sätt.

Graph databas efter exempel

Nu ska vi använda ett exempeldiagram för att förstå hur frågor kan uttryckas i Gremlin. Följande bild visar ett affärsprogram som hanterar data om användare, intressen och enheter i form av ett diagram.

Exempeldatabas som visar personer, enheter och intressen

Det här diagrammet har följande hörntyper (de kallas även "etikett" i Gremlin):

  • Personer: Diagrammet har tre personer, Robin, Thomas och Ben
  • Intressen: Deras intressen, i det här exemplet fotboll
  • Enheter: De enheter som personer använder
  • Operativsystem: De operativsystem som enheterna körs på
  • Plats: De platser som enheterna nås från

Vi representerar relationerna mellan dessa entiteter via följande kanttyper:

  • Känner: Till exempel "Thomas känner Robin"
  • Intresserad: Representerar intressena för personerna i diagrammet, till exempel "Ben är intresserad av fotboll"
  • RunsOS: Den bärbara datorn kör Windows operativsystemet
  • Använder: För att representera vilken enhet en person använder. Till exempel Robin använder en Motorola-telefon med serienummer 77
  • Finns: För att representera den plats som enheterna nås från

Gremlin-konsolen är en interaktiv terminal som erbjuds av Apache TinkerPop och den här terminalen används för att interagera med diagramdata. Mer information finns i snabbstartsdokument om hur du använder Gremlin-konsolen. Du kan också utföra dessa åtgärder med hjälp av Gremlin-drivrutinerna i den plattform du vill (Java, Node.js, Python eller .NET). I följande exempel visas hur du kör frågor mot dessa grafdata med hjälp av Gremlin-konsolen.

Först ska vi titta på CRUD. Följande Gremlin-uttryck infogar Thomas-brytpunkten i diagrammet:

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

Därefter infogar följande Gremlin-uttryck en känner-kant mellan Thomas och Robin.

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

Följande fråga returnerar person-brytpunkten i fallande ordning efter deras förnamn:

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

Där diagram verkligen kommer till sin rätt är när det gäller att svara på frågor som Vilka operativsystem använder Thomas vänner? Du kan köra den här Gremlin-traversen för att hämta informationen från diagrammet:

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

Nästa steg

Mer information om diagramstöd i Azure Cosmos DB finns i: