Snabbstart: Skapa, fråga och bläddra i en Azure Azure Azure Db graph-databas med hjälp av Gremlin-konsolen

GÄLLER FÖR: Gremlin API

Azure Azure Azures DB är Microsofts globalt distribuerade flermodellsdatabastjänst. Du kan snabbt skapa och fråga dokument, nyckel-/värde- och diagramdatabaser, som alla kan dra nytta av funktionerna för global distribution och vågrät skala i azure Azure Db.

Den här snabbstarten visar hur du skapar ett Azure AzureBurmlin DB Gremlin API-konto, databas och diagram (behållare) med Hjälp av Azure-portalen och sedan använder Gremlin Console från Apache TinkerPop för att arbeta med Gremlin API-data. I den här självstudiekursen får du skapa och skapa frågehörn samt uppdatera en brytpunktsegenskap, frågehörn, passera grafen och släppa en brytpunkt.

Azure Azure Azures DB från Apache Gremlin-konsolen

Gremlin-konsolen är Groovy/Java baserad på Linux, Mac och Windows. Du kan ladda ned den från Apache TinkerPop-webbplatsen.

Krav

Du måste ha en Azure-prenumeration för att kunna skapa ett Azure Azure Azure Db-konto för den här snabbstarten.

Om du inte har en Azure-prenumeration skapardu ett kostnadsfritt konto innan du börjar.

Du måste också installera Gremlin-konsolen. Den rekommenderade versionen är v3.4.3 eller tidigare. (Om du vill använda Gremlin Console på Windows måste du installera Java Runtime. Java 8 krävs minst, men det är bättre att använda Java 11).

Skapa ett databaskonto

  1. Logga in på Azure-portalen i ett nytt webbläsarfönster.

  2. I den vänstra menyn väljer du Skapa en resurs.

    Skapa en resurs i Azure Portal

  3. På sidan Ny väljer du DatabaserAzure Azure Azures DB.

    Fönstret Azure Portal-databaser

  4. På sidan Create Azure Azures DB Account anger du inställningarna för det nya Azure Azure Azures DB-kontot.

    Inställning Värde Beskrivning
    Prenumeration Prenumerationsnamn Välj den Azure-prenumeration som du vill använda för det här Azure Azure-kontot.
    Resursgrupp Resursgruppnamn Välj en resursgrupp eller välj Skapa nyoch ange sedan ett unikt namn för den nya resursgruppen.
    Kontonamn Ange ett unikt namn Ange ett unikt namn för att identifiera ditt Azure Azure Azures DB-konto. Din konto-URI läggs gremlin.azure.com till i ditt unika kontonamn.

    Kontonamnet får endast använda gemener, siffror och bindestreck (-), och måste innehålla mellan 3 och 44 tecken.
    API Gremlin (diagram) API:t avgör vilken typ av konto som ska skapas. Azure Azure Azures DB innehåller fem API:er: Core (SQL) för dokumentdatabaser, Gremlin för graph-databaser, MongoDB för dokumentdatabaser, Azure Table ochAndra. Du måste skapa ett separat konto för varje API.

    Välj Gremlin (diagram)eftersom du i den här snabbstarten skapar en tabell som fungerar med Gremlin API.

    Läs mer om Gremlin API.
    Plats Den region som är närmast dina användare Välj en geografisk plats som värd för ditt Azure Azure Azures DB-konto. Använd den plats som är närmast dina användare för att ge dem snabb åtkomst till data.
    Kapacitetsläge Etablerat dataflöde eller serverlös Välj Etablerat dataflöde om du vill skapa ett konto i etablerat dataflödesläge. Välj Serverless om du vill skapa ett konto i serverlöst läge.
    Tillämpa Azure Azure Azures DB-rabatt på fri nivå Användeller Använd inte Med Azure Azure Azures DB-fri nivå får du de första 1000 RU/s och 25 GB lagringsutrymme kostnadsfritt i ett konto. Läs mer om kostnadsfri nivå.

    Obs!

    Du kan ha upp till en kostnadsfri nivå Azure Azure DB-konto per Azure-prenumeration och måste anmäla dig när du skapar kontot. Om du inte ser alternativet för att tillämpa den kostnadsfria nivårabatten innebär det att ett annat konto i prenumerationen redan har aktiverats med kostnadsfri nivå.

    Den nya kontosidan för Azure Azure Azures DB

  5. Konfigurera följande information på fliken Global distribution. Du kan lämna standardvärdena för den här snabbstartsvyn:

    Inställning Värde Beskrivning
    Geo-Redundancy Inaktivera Aktivera eller inaktivera global distribution på ditt konto genom att koppla ihop regionen med en parregion. Du kan lägga till fler regioner i ditt konto senare.
    Skriver flera regioner Inaktivera Med funktionen för flera regioner kan du dra nytta av det etablerade dataflödet för dina databaser och behållare över hela världen.

    Obs!

    Följande alternativ är inte tillgängliga om du väljer Serverless som kapacitetsläge:

    • Använd kostnadsfri nivårabatt
    • Georedundans
    • Skriver flera regioner
  6. Du kan även konfigurera ytterligare information på följande flikar:

  7. Välj Granska + skapa.

  8. Det tar några minuter att skapa kontot. Vänta tills portalen visar grattis! Din Azure Azures DB-konto har skapats sida.

    Skapad sida för Azure Azure Azures DB-konto

Lägga till ett diagram

Nu kan du använda verktyget Datautforskaren i Azure-portalen för att skapa en diagramdatabas.

  1. Välj Ny Graphi Datautforskaren.

    Området Graph visas längst till höger kan du behöva rulla till höger för att se det.

    Azure-portalens datautforskaren, sidan Lägg Graph data

  2. Ange inställningarna för det nya diagrammet på sidan Lägg till diagram.

    Inställning Föreslaget värde Beskrivning
    Databas-ID exempeldatabas Ange exempeldatabas som namn på den nya databasen. Databasnamn måste bestå av mellan 1 och 255 tecken och får inte / \ # ? innehålla ett avslutande blanksteg.
    Dataflöde 400 RUs Ändra dataflödet till 400 begärandeenheter per sekund (RU/s). Om du vill minska svarstiden kan du skala upp dataflödet senare.
    Graph ID exempeldiagram Ange exempeldiagram som namn på den nya samlingen. Graph namn har samma teckenkrav som databas-ID.
    Partitionsnyckel /pk Alla Db-konton i Det här kontot behöver en partitionsnyckel för att skala vågrätt. Läs om hur du väljer lämplig partitionsnyckel i Graph om datapartitionering.
  3. När formuläret har fyllts i väljer du OK.

Anslut till din apptjänst/Graph

  1. Innan du startar Gremlin-konsolen skapar eller ändrar du konfigurationsfilen för remote-secure.yaml i apache-tinkerpop-gremlin-console-3.2.5/conf katalogen.

  2. Fyll i dina konfigurationerför värd ,port,användarnamn,lösenord, connectionPooloch serialiserare enligt följande tabell:

    Inställning Föreslaget värde Beskrivning
    värdar [kontonamn. gremlin.cosmos.azure.com] Se följande skärmbild. Det här är Gremlin-URI-värdet på sidan Översikt i Azure-portalen, inom hakparenteser, med avslutande :443/ borttaget. Obs! Se till att använda Gremlin-värdet, inte den URI som slutar med [ kontonamnet .documents.azure.com] vilket sannolikt skulle leda till att "Värden svarade inte i tid" när du försöker köra Gremlin-frågor senare.
    port 443 Ange till 443.
    användarnamn Ditt användarnamn Resursen i formuläret där /dbs/<db>/colls/<coll> ditt <db> databasnamn är ditt <coll> samlingsnamn.
    lösenord Primärnyckeln Se den andra skärmbilden nedan. Det här är din primärnyckel, som du kan hämta från sidan Nycklar i Azure Portal, i rutan Primärnyckel. Använd knappen Kopiera till vänster i rutan för att kopiera värdet.
    connectionPool {enableSsl: true} Inställningen för anslutningspoolen för TLS.
    serialiserare { className: org.apache.tinkerpop.gremlin.
    driver.ser.GraphSONMessageSerializerV2d0,
    konfiguration: { serializeResultToString: true }}
    Ange det här värdet och ta bort \n radbrytningar när du klistrar in i värdet.

    För värdvärdet kopierar du Gremlin-URI-värdet från sidan Översikt:

    Visa och kopiera Gremlin-URI-värdet på sidan Översikt i Azure-portalen

    För lösenordsvärdet kopierar du primärnyckeln från sidan Nycklar:

    Visa och kopiera din primärnyckel på sidan Nycklar i Azure Portal

    Din remote-secure.yaml-fil bör se ut så här:

    hosts: [your_database_server.gremlin.cosmos.azure.com] 
    port: 443
    username: /dbs/your_database/colls/your_collection
    password: your_primary_key
    connectionPool: {
      enableSsl: true
    }
    serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0, config: { serializeResultToString: true }}
    

    se till att radbryt värdet för parametern värdar inom hakparenteser [].

  3. Kör eller starta bin/gremlin.batbin/gremlin.shbin/gremlin.bati din terminal.

  4. I terminalen kör du :remote connect tinkerpop.server conf/remote-secure.yaml för att ansluta till din apptjänst.

    Tips!

    Om du får felmeddelandet bör du kontrollera att du har uppdaterat No appenders could be found for logger serialiserarvärdet i filen remote-secure.yaml enligt beskrivningen i steg 2. Om konfigurationen är korrekt ignoreras den här varningen säkert eftersom den inte ska påverka användningen av konsolen.

  5. Kör sedan :remote console för att omdirigera alla konsolkommandon till fjärrservern.

    Obs!

    Om du inte kör kommandot men vill omdirigera alla konsolkommandon till fjärrservern bör du exempelvis köra kommandot som :remote console:>:> g.V().count() . Prefixet är en del av kommandot och är viktigt när du använder Gremlin-konsolen med Azure Azure DB. Om du utelämnar det här prefixet instrueras konsolen att köra kommandot lokalt, ofta mot en graf i minnet. Med det här prefixet anger det att konsolen ska köra ett fjärrkommando, i det här fallet mot :> Azure Azure Azures DB (antingen localhost emulatorn eller en Azure-instans).

Stor! Nu när konfigurationen är klar kan vi börja köra vissa konsolkommandon.

Nu ska vi prova ett enkelt antal()-kommando. Skriv följande i konsolen när du uppmanas att göra det:

g.V().count()

Skapa hörn och kanter

Vi börjar med att lägga till fem personer för Thomas, Mary Kay,Robin,Benoch Jack.

Indata (Thomas):

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

Utdata:

==>[id:796cdccc-2acd-4e58-a324-91d6f6f5ed6d,label:person,type:vertex,properties:[firstName:[[id:f02a749f-b67c-4016-850e-910242d68953,value:Thomas]],lastName:[[id:f5fa3126-8818-4fda-88b0-9bb55145ce5c,value:Andersen]],age:[[id:f6390f9c-e563-433e-acbf-25627628016e,value:44]],userid:[[id:796cdccc-2acd-4e58-a324-91d6f6f5ed6d|userid,value:1]]]]

Indata (Mary Kay):

g.addV('person').property('firstName', 'Mary Kay').property('lastName', 'Andersen').property('age', 39).property('userid', 2).property('pk', 'pk')

Utdata:

==>[id:0ac9be25-a476-4a30-8da8-e79f0119ea5e,label:person,type:vertex,properties:[firstName:[[id:ea0604f8-14ee-4513-a48a-1734a1f28dc0,value:Mary Kay]],lastName:[[id:86d3bba5-fd60-4856-9396-c195ef7d7f4b,value:Andersen]],age:[[id:bc81b78d-30c4-4e03-8f40-50f72eb5f6da,value:39]],userid:[[id:0ac9be25-a476-4a30-8da8-e79f0119ea5e|userid,value:2]]]]

Indata (Robin):

g.addV('person').property('firstName', 'Robin').property('lastName', 'Wakefield').property('userid', 3).property('pk', 'pk')

Utdata:

==>[id:8dc14d6a-8683-4a54-8d74-7eef1fb43a3e,label:person,type:vertex,properties:[firstName:[[id:ec65f078-7a43-4cbe-bc06-e50f2640dc4e,value:Robin]],lastName:[[id:a3937d07-0e88-45d3-a442-26fcdfb042ce,value:Wakefield]],userid:[[id:8dc14d6a-8683-4a54-8d74-7eef1fb43a3e|userid,value:3]]]]

Indata (Ben):

g.addV('person').property('firstName', 'Ben').property('lastName', 'Miller').property('userid', 4).property('pk', 'pk')

Utdata:

==>[id:ee86b670-4d24-4966-9a39-30529284b66f,label:person,type:vertex,properties:[firstName:[[id:a632469b-30fc-4157-840c-b80260871e9a,value:Ben]],lastName:[[id:4a08d307-0719-47c6-84ae-1b0b06630928,value:Miller]],userid:[[id:ee86b670-4d24-4966-9a39-30529284b66f|userid,value:4]]]]

Indata (Jack):

g.addV('person').property('firstName', 'Jack').property('lastName', 'Connor').property('userid', 5).property('pk', 'pk')

Utdata:

==>[id:4c835f2a-ea5b-43bb-9b6b-215488ad8469,label:person,type:vertex,properties:[firstName:[[id:4250824e-4b72-417f-af98-8034aa15559f,value:Jack]],lastName:[[id:44c1d5e1-a831-480a-bf94-5167d133549e,value:Connor]],userid:[[id:4c835f2a-ea5b-43bb-9b6b-215488ad8469|userid,value:5]]]]

Nu ska vi lägga till kanter för relationer mellan våra personer.

Indata (Thomas – > Mary Kay):

g.V().hasLabel('person').has('firstName', 'Thomas').addE('knows').to(g.V().hasLabel('person').has('firstName', 'Mary Kay'))

Utdata:

==>[id:c12bf9fb-96a1-4cb7-a3f8-431e196e702f,label:knows,type:edge,inVLabel:person,outVLabel:person,inV:0d1fa428-780c-49a5-bd3a-a68d96391d5c,outV:1ce821c6-aa3d-4170-a0b7-d14d2a4d18c3]

Indata (Thomas – > Robin):

g.V().hasLabel('person').has('firstName', 'Thomas').addE('knows').to(g.V().hasLabel('person').has('firstName', 'Robin'))

Utdata:

==>[id:58319bdd-1d3e-4f17-a106-0ddf18719d15,label:knows,type:edge,inVLabel:person,outVLabel:person,inV:3e324073-ccfc-4ae1-8675-d450858ca116,outV:1ce821c6-aa3d-4170-a0b7-d14d2a4d18c3]

Indata (Robin - > Ben):

g.V().hasLabel('person').has('firstName', 'Robin').addE('knows').to(g.V().hasLabel('person').has('firstName', 'Ben'))

Utdata:

==>[id:889c4d3c-549e-4d35-bc21-a3d1bfa11e00,label:knows,type:edge,inVLabel:person,outVLabel:person,inV:40fd641d-546e-412a-abcc-58fe53891aab,outV:3e324073-ccfc-4ae1-8675-d450858ca116]

Uppdatera en brytpunkt

Vi uppdaterar Thomas-hörnet med en ny ålder av 45.

Inmatning:

g.V().hasLabel('person').has('firstName', 'Thomas').property('age', 45)

Utdata:

==>[id:ae36f938-210e-445a-92df-519f2b64c8ec,label:person,type:vertex,properties:[firstName:[[id:872090b6-6a77-456a-9a55-a59141d4ebc2,value:Thomas]],lastName:[[id:7ee7a39a-a414-4127-89b4-870bc4ef99f3,value:Andersen]],age:[[id:a2a75d5a-ae70-4095-806d-a35abcbfe71d,value:45]]]]

Fråga diagrammet

Nu kör vi flera olika frågor mot ditt diagram.

Först provar vi en fråga med ett filter för att endast returnera personer som är äldre än 40 år.

Indata (filterfråga):

g.V().hasLabel('person').has('age', gt(40))

Utdata:

==>[id:ae36f938-210e-445a-92df-519f2b64c8ec,label:person,type:vertex,properties:[firstName:[[id:872090b6-6a77-456a-9a55-a59141d4ebc2,value:Thomas]],lastName:[[id:7ee7a39a-a414-4127-89b4-870bc4ef99f3,value:Andersen]],age:[[id:a2a75d5a-ae70-4095-806d-a35abcbfe71d,value:45]]]]

I nästa steg projicerar vi förnamnet för personer som är äldre än 40 år.

Indata (filter + projektionsfråga):

g.V().hasLabel('person').has('age', gt(40)).values('firstName')

Utdata:

==>Thomas

Passerar ditt diagram

Nu går vi genom grafen och returnerar alla Thomass vänner.

Input (vänner till Thomas):

g.V().hasLabel('person').has('firstName', 'Thomas').outE('knows').inV().hasLabel('person')

Utdata:

==>[id:f04bc00b-cb56-46c4-a3bb-a5870c42f7ff,label:person,type:vertex,properties:[firstName:[[id:14feedec-b070-444e-b544-62be15c7167c,value:Mary Kay]],lastName:[[id:107ab421-7208-45d4-b969-bbc54481992a,value:Andersen]],age:[[id:4b08d6e4-58f5-45df-8e69-6b790b692e0a,value:39]]]]
==>[id:91605c63-4988-4b60-9a30-5144719ae326,label:person,type:vertex,properties:[firstName:[[id:f760e0e6-652a-481a-92b0-1767d9bf372e,value:Robin]],lastName:[[id:352a4caa-bad6-47e3-a7dc-90ff342cf870,value:Wakefield]]]]

Nu ska vi ta nästa lager med hörn. Bläddra genom grafen för att få tillbaka alla vänner till Thomass vänner.

Input (vänner till Thomas):

g.V().hasLabel('person').has('firstName', 'Thomas').outE('knows').inV().hasLabel('person').outE('knows').inV().hasLabel('person')

Utdata:

==>[id:a801a0cb-ee85-44ee-a502-271685ef212e,label:person,type:vertex,properties:[firstName:[[id:b9489902-d29a-4673-8c09-c2b3fe7f8b94,value:Ben]],lastName:[[id:e084f933-9a4b-4dbc-8273-f0171265cf1d,value:Miller]]]]

Släppa en brytpunkt

Nu tar vi bort ett brytpunkt från diagramdatabasen.

Indata (släpp Jack-hörn):

g.V().hasLabel('person').has('firstName', 'Jack').drop()

Rensa diagrammet

Slutligen rensar vi databasen för alla hörn och kanter.

Inmatning:

g.E().drop()
g.V().drop()

Grattis! Du har slutfört den här självstudiekursen i Azure Azures DB: Gremlin API!

Granska SLA:er i Azure Portal

Azure Portal övervakar dataflödet för ditt Db-konto, lagring, tillgänglighet, svarstid och konsekvens. Diagram för mätvärden kopplade till azure Azures DB Service Level Agreement (SLA) visar SLA-värdet jämfört med faktiska prestanda. Den här uppsättning mätvärden gör att du kan övervaka dina SLA:er transparenta.

Så här granskar du mätvärden och SLA:er:

  1. Välj Mått i Db-kontots navigeringsmeny för ditt Db-konto.

  2. Välj en flik, till exempel Svarstid,och välj en tidsram till höger. Jämför linjerna Faktiskoch SLA i diagrammen.

    Azure Azure Azures DB metrics suite

  3. Granska måtten på de andra flikarna.

Rensa resurser

När du är klar med appen och Azure Azure Azures DB-konto kan du ta bort de Azure-resurser du skapat så att du inte tillkommer fler avgifter. Så här tar du bort resurserna:

  1. Sök efter och välj Resursgrupper i Azure Portal-sökfältet.

  2. I listan väljer du den resursgrupp som du skapade för den här snabbstarten.

    Markera den resursgrupp du vill ta bort

  3. På sidan Översikt över resursgruppen väljer du Ta bort resursgrupp.

    Ta bort resursgruppen

  4. I nästa fönster anger du namnet på den resursgrupp du vill ta bort och väljer sedan Ta bort.

Nästa steg

I den här snabbstarten har du lärt dig hur du skapar ett Azure Azure Azure Db-konto, skapar ett diagram med Data Explorer, skapar hörn och kanter och passerar diagrammet med Gremlin-konsolen. Nu kan du skapa mer komplexa frågor och implementera kraftfull diagramtrånglogik med Gremlin.