Vad är Azure Cosmos DB för Apache Gremlin?

GÄLLER FÖR: Gremlin

Azure Cosmos DB är en fullständigt hanterad NoSQL- och relationsdatabas för modern apputveckling.

Azure Cosmos DB för Apache Gremlin är en grafdatabastjänst som kan användas för att lagra massiva grafer med miljarder hörn och kanter. Du kan köra frågor mot graferna med svarstid på millisekunder och enkelt utveckla grafstrukturen. API:et för Gremlin bygger på Apache TinkerPop, ett ramverk för grafberäkning som använder Gremlin-frågespråket.

Viktigt

Azure Cosmos DB-grafmotorn följer noga 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 om kompatibilitet med Apache TinkerPop .

API:et för Gremlin kombinerar kraften hos grafdatabasalgoritmer med mycket skalbar och hanterad infrastruktur. Den här metoden ger en unik och flexibel lösning på vanliga dataproblem som är associerade med oflexibla eller relationella begränsningar.

Tips

Vill du prova API:et för Gremlin utan åtagande? Skapa ett Azure Cosmos DB-konto med Hjälp av Prova Azure Cosmos DB kostnadsfritt.

Fördelar med API för Gremlin

API:et för Gremlin har lagt till fördelar med att byggas på Azure Cosmos DB:

  • Elastiskt skalbart dataflöde och lagring: Grafer i verkligheten måste skalas bortom kapaciteten för en enskild server. Azure Cosmos DB stöder vågrätt skalbara grafdatabaser som kan ha en obegränsad storlek vad gäller lagring och etablerat dataflöde. När grafdatabasens skala växer distribueras data automatiskt med hjälp av grafpartitionering.

  • Replikering i flera regioner: Azure Cosmos DB kan 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 svarstiden för läsning och skrivning var som helst i världen tillhandahåller Azure Cosmos DB en tjänsthanterad regional redundansmekanism. Den här mekanismen kan säkerställa kontinuiteten i ditt program i det sällsynta fallet av ett tjänstavbrott i en region.

  • Snabba frågor och bläddring 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. API:et för Gremlin möjliggör omfattande realtidsfrågor och blädderingar utan att behöva ange schematips, sekundära index eller vyer. Mer information finns i frågediagram med gremlin.

  • Fullständigt hanterad grafdatabas: Azure Cosmos DB eliminerar behovet av att hantera databas- och datorresurser. De flesta befintliga grafdatabasplattformar är bundna till begränsningarna i infrastrukturen och kräver ofta en hög grad av underhåll för att säkerställa dess drift. Som en fullständigt hanterad tjänst tar Cosmos DB bort behovet av att hantera virtuella datorer, uppdatera runtime-programvara, hantera horisontell partitionering eller replikering eller hantera komplexa uppgraderingar på datanivå. Varje databas säkerhetskopieras och skyddas automatiskt mot regionala fel. Med den här hanteringen kan utvecklare fokusera på att leverera programvärde i stället för att använda och hantera sina grafdatabaser.

  • Automatisk indexering: Som standard indexerar API:et för Gremlin automatiskt alla egenskaper i noder (kallas även hörn) och kanter i grafen och varken förväntar sig eller kräver något schema eller skapande av sekundära index. Mer information finns i indexering i Azure Cosmos DB.

  • Kompatibilitet med Apache TinkerPop: API:et för Gremlin stöder Apache TinkerPop-standarden med öppen källkod. Apache TinkerPop-standarden har ett stort ekosystem med program och bibliotek som enkelt kan integreras med API:et.

  • Justerbara konsekvensnivåer: Azure Cosmos DB tillhandahåller fem väldefinierade konsekvensnivåer för att uppnå rätt kompromiss 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. Mer information finns i Justerbara datakonsekvensnivåer i Azure Cosmos DB.

Vanliga scenarier för API för Gremlin

Här följer några scenarier där diagramstö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 kan du utveckla anpassade upplevelser, förutsäga kundbeteenden eller koppla personer till 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 i 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. Stöd för låg svarstid, elastisk skalning och inbyggt diagramstöd för Azure Cosmos DB är perfekt för dessa scenarier.

  • Geospatial: Många tillämpningar inom telekommunikation, logistik och reseplanering behöver 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 modelleras som en graf kan du skapa en bättre förståelse för tillståndet för dina enheter och tillgångar. 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 sina begränsningar.

En grafdatabasmetod förlitar sig i stället på att bevara relationer i lagringsskiktet, vilket leder till mycket effektiva diagramhämtningsåtgärder. API:et för Gremlin stöder egenskapsdiagrammodellen.

Objekt i egenskapsdiagram

Ett egenskapsdiagram ä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, plats eller en händelse.

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

  • Egenskaper: Egenskaper uttrycker information (eller metadata) om hörn och kanter. Det kan finnas valfritt 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 är ett hörn som har namn och ålder, eller en kant, som kan ha en tidsstämpel och/eller en vikt.

  • Etikett – En etikett är ett namn eller identifieraren 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 med etiketten "person".

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

Exempel på en grafdatabas

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.

Exempel på egenskapsdiagram som visar personer, enheter och intressen.

Det här diagrammet har följande hörntyper . Dessa typer kallas även etiketter i Gremlin:

  • Personer: Diagrammet har tre personer; Robin, Thomas och Ben.

  • Intressen: Deras intressen, i det här exemplet, inkluderar spelet Fotboll.

  • Enheter: De enheter som personer använder.

  • Operativsystem: De operativsystem som enheterna körs på.

  • Plats: Den plats där enheter nås.

Vi representerar relationerna mellan dessa entiteter via följande gränstyper :

  • Vet: Representerar förtrogenhet. Till exempel "Thomas känner Robin".

  • Intresserad: Representerar personernas intressen i vår graf. Till exempel "Ben är intresserad av fotboll".

  • RunsOS: Representerar vilket operativsystem en enhet kör. Till exempel "Laptop runs the Windows OS".

  • Använder: Representerar vilken enhet en person använder. Till exempel "Robin använder en Motorola-telefon med serienummer 77".

  • Finns: Representerar 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 grafdata. Mer information finns i snabbstarten för 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 gremlinkonsolen.

Först ska vi titta på skapa, läsa, uppdatera och ta bort (CRUD). Följande Gremlin-instruktion infogar Thomas-hörnet i grafen med några egenskaper:

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

Tips

Om du följer dessa exempel kan du använda någon av dessa egenskaper (age, firstName, lastName) som en partitionsnyckel när du skapar diagrammet. Egenskapen id stöds inte som en partitionsnyckel i ett diagram.

Därefter infogar följande Gremlin-instruktion en vet-kant mellan Thomas och Robin.

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

Följande fråga returnerar personens hörn i fallande ordning efter sina 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 gremlin-bläddrinningen för att hämta informationen från grafen:

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

Nästa steg