Introduktion till 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 specifik för Azure Cosmos DB. Vissa funktioner som stöds av Apache TinkerPop är inte tillgängliga i Azure Cosmos DB. Mer information om funktionerna som inte stöds finns i artikeln kompatibilitet med Apache TinkerPop .

API:et för Gremlin kombinerar kraften i grafdatabasalgoritmer med mycket skalbar, hanterad infrastruktur. Den här metoden ger en unik och flexibel lösning på vanliga dataproblem som är kopplade till oflexibla eller relationsmässiga 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.

API för Gremlin-förmåner

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 den verkliga världen måste skalas bortom kapaciteten för en enskild server. Azure Cosmos DB stöder horisontellt skalbara grafdatabaser som kan ha en obegränsad storlek när det 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 automatisk regional redundansmekanism. Den här mekanismen kan säkerställa programmets kontinuitet i det sällsynta fallet av ett tjänstavbrott i en region.

  • Snabba frågor och blädderingar 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 ett högt underhåll för att säkerställa driften. 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 för hörn) och kanter i diagrammet och förväntar sig inte 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 ger 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 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 kan du utveckla personliga upplevelser, förutsäga kundernas beteende eller ansluta 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. Det låga svarstiden, den elastiska skalan och det inbyggda grafstödet för Azure Cosmos DB är idealiskt för dessa scenarier.

  • Geospatial: Många tillämpningar 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 modellerade som ett diagram 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 på att bevara relationer i lagringsskiktet i stället, vilket leder till mycket effektiva diagramhämtningsåtgärder. API:et för Gremlin stöder egenskapsgrafmodellen.

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 involverad i en händelse 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 inkluderar 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 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 med etiketten "person".

Grafdatabaser ingår ofta i kategorin NoSQL eller icke-relationella databaser, eftersom det inte finns något beroende av ett schema eller 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: De platser som enheterna nås från.

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

  • Vet: Representera bekantskap. Till exempel "Thomas känner Robin".

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

  • RunsOS: Representerar vilket operativsystem en enhet kör. Till exempel "Laptop kör 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

Vill du veta mer?