Quickstart: Gebruik de Gremlin-console om een Azure Cosmos DB-grafiekdatabase te maken, er query’s op uit te voeren en erdoorheen te gaan

VAN TOEPASSING OP: Gremlin-API

Azure Cosmos DB is de wereldwijd gedistribueerde multimodel-databaseservice van Microsoft. U kunt snel databases maken van documenten, sleutel/waarde-paren en grafieken en hier query’s op uitvoeren. Deze databases genieten allemaal het voordeel van de globale distributie en horizontale schaalmogelijkheden die ten grondslag liggen aan Azure Cosmos DB.

In deze quickstart ziet u hoe u met Azure Portal een account voor de Azure Cosmos DB Gremlin-API, een database en een grafiek (container) maakt, en vervolgens de Gremlin-console van Apache TinkerPop gebruikt om met gegevens van de Gremlin-API te werken. In deze zelfstudie gaat u hoekpunten en randen maken, er query’s op uitvoeren, een eigenschap van een hoekpunt bijwerken, query’s uitvoeren op hoekpunten, door de graaf gaan en een hoekpunt verwijderen.

Azure Cosmo DB vanuit de Apache Gremlin-console

De Gremlin-console is op Groovy/Java gebaseerd en wordt uitgevoerd op Linux, Mac en Windows. U kunt de console downloaden van de Apache TinkerPop-site.

Vereisten

U moet een Azure-abonnement hebben om een Azure Cosmos DB-account volgens deze Quick Start te kunnen maken.

Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

U moet ook de Gremlin-console installeren. De aanbevolen versie is v 3.4.3 of lager. (Als u de Gremlin-console wilt gebruiken op Windows, moet u Java Runtimeinstalleren, minimaal Java 8 vereist, maar het is beter om Java 11 te gebruiken).

Een databaseaccount maken

  1. Meld u in een nieuw browservenster aan bij Azure Portal.

  2. Selecteer Een resource maken in het menu aan de linkerkant.

    Een resource maken in de Azure-portal

  3. Selecteer op de pagina Nieuw Databases > Azure Cosmos DB.

    Het deelvenster Databases in de Azure-portal

  4. Voer op de pagina Azure Cosmos DB-account maken de instellingen in voor het nieuwe Azure Cosmos DB-account.

    Instelling Waarde Beschrijving
    Abonnement Abonnementsnaam Selecteer het Azure-abonnement dat u voor dit Azure Cosmos-account wilt gebruiken.
    Resourcegroep Naam van de resourcegroep Selecteer een resourcegroep of selecteer Nieuwe maken en voer vervolgens een unieke naam in voor de nieuwe resourcegroep.
    Accountnaam Voer een unieke naam in Voer een unieke naam in om uw Azure Cosmos DB-account te identificeren. Uw account-URI wordt gremlin.azure.com toegevoegd aan uw unieke accountnaam.

    De accountnaam mag alleen kleine letters, cijfers en afbreekstreelopen (-) gebruiken en moet tussen de 3 en 44 tekens lang zijn.
    API Gremlin (grafiek) De API bepaalt het type te maken account. Azure Cosmos DB heeft vijf API's: Core(SQL) voor documentdatabases, Gremlin voor grafiekdatabases, MongoDB voor documentdatabases, Azure Table en Cassandra. U moet voor elke API een afzonderlijk account maken.

    Selecteer Gremlin (grafiek) , omdat u in deze snelstartgids een tabel maakt die geschikt is voor de Gremlin-API.

    Meer informatie over de Gremlin API.
    Locatie De regio het dichtst bij uw gebruikers Selecteer een geografische locatie waar u het Azure Cosmos DB-account wilt hosten. Gebruik de locatie die zich het dichtst bij uw gebruikers bevindt, zodat ze de snelst mogelijke toegang tot de gegevens hebben.
    Capaciteitsmodus Ingerichte doorvoer of serverloos Selecteer Ingerichte doorvoer om een account te maken in de modus Ingerichte doorvoer. Selecteer Serverloos om een account te maken in de modus serverloos.
    Niveaukorting op gratis laag van Azure Cosmos DB toepassen Toepassen of niet toepassen Met Azure Cosmos DB gratis laag krijgt u de eerste 1000 RU/s en 25 GB aan opslagruimte gratis in een account. Meer informatie over de gratis laag.

    Notitie

    U kunt per Azure-abonnement maximaal één gratis laag voor het Azure Cosmos DB-account hebben, en u moet zich aanmelden wanneer u het account maakt. Als u de optie voor het toepassen van de korting voor gratis lagen niet ziet, betekent dit dat er al een ander account in het abonnement is ingeschakeld met een gratis laag.

    De pagina Nieuw account voor Azure Cosmos DB

  5. Configureer de volgende gegevens op het tabblad Globale distributie. U kunt de standaardwaarden voor deze quickstart laten staan:

    Instelling Waarde Beschrijving
    Georedundantie Uitschakelen Schakel globale distributie voor uw account in of uit door uw regio te koppelen met een koppelingsregio. U kunt later meer regio's aan uw account toevoegen.
    Schrijven voor meerdere regio's Uitschakelen Dankzij de mogelijkheid voor schrijfbewerkingen in meerdere regio's kunt over de hele wereld profiteren van de ingerichte doorvoer voor uw databases en containers.

    Notitie

    De volgende opties zijn niet beschikbaar als u Serverloos als Capaciteitsmodus selecteert:

    • Korting voor gratis lagen toepassen
    • Geografische redundantie
    • Schrijven voor meerdere regio's
  6. Optioneel kunt u aanvullende details configureren op de volgende tabbladen:

  7. Selecteer Controleren + maken.

  8. Het duurt enkele minuten om het account te maken. Wacht tot de portal de pagina Gefeliciteerd! Uw Azure Cosmos DB-account is gemaakt weergeeft.

    Pagina Azure Cosmos DB-account aangemaakt

Een graaf toevoegen

U kunt nu het hulpprogramma Data Explorer in Azure Portal gebruiken om een grafiekdatabase te maken.

  1. Selecteer Data Explorer > Nieuwe grafiek.

    Uiterst rechts wordt het gebied Grafiek toevoegen weergegeven. Mogelijk moet u naar rechts scrollen om het te bekijken.

    Azure Portal Data Explorer, pagina Grafiek toevoegen

  2. Geef op de pagina Grafiek toevoegen de instellingen voor de nieuwe grafiek op.

    Instelling Voorgestelde waarde Beschrijving
    Database-id voorbeelddatabase Voer sample-database in als de naam voor de nieuwe database. Databasenamen moeten tussen de 1 en 255 tekens zijn en mogen geen / \ # ? bevatten of eindigen op een spatie.
    Doorvoer 400 RU‘s Wijzig de doorvoer in 400 aanvraageenheden per seconde (RU/s). U kunt de doorvoer later opschalen als u de latentie wilt beperken.
    Grafiek-id voorbeeldgrafiek Voer sample-graph in als de naam voor uw nieuwe verzameling. Voor namen van grafieken gelden dezelfde tekenvereisten als voor database-id's.
    Partitiesleutel /pk Alle Cosmos DB-accounts hebben een partitiesleutel nodig voor horizontale schaalaanpassing. Meer informatie over het selecteren van een geschikte partitiesleutel in het artikel over het partitioneren van graafgegevens.
  3. Zodra het formulier is ingevuld, selecteert u OK.

Verbinding maken met uw app service/grafiek

  1. Voordat u de Gremlin-console start, moet u het configuratiebestand remote-secure.yaml in de map apache-tinkerpop-gremlin-console-3.2.5/conf maken of wijzigen.

  2. Vul uw host- , poort- , gebruikersnaam- , wachtwoord- , connectionPool- en serializer- configuraties in zoals in de volgende tabel is gedefinieerd:

    Instelling Voorgestelde waarde Beschrijving
    hosts [account-name.gremlin.cosmos.azure.com] Zie de volgende schermafbeelding. Dit is de Gremlin URI-waarde op de pagina Overzicht van Azure Portal tussen vierkante haken, waarbij de afsluitende :443/ is verwijderd. Opmerking: Zorg ervoor dat u de Gremlin-waarde gebruikt en niet de URI die eindigt op [account-name.documents.azure.com], wat waarschijnlijk zou resulteren in de uitzondering Host reageerde niet tijdig wanneer u later probeert Gremlin-query's uit te voeren.
    poort 443 Ingesteld op 443.
    gebruikersnaam Uw gebruikersnaam De bron van het formulier /dbs/<db>/colls/<coll> waar <db> de naam van uw database is en <coll> de naam van uw verzameling is.
    wachtwoord Uw primaire sleutel Zie de tweede onderstaande schermafbeelding. Dit is uw primaire sleutel, die u kunt ophalen van de pagina Sleutels in Azure Portal, in het vak Primaire sleutel. Gebruik de kopieerknop aan de linkerkant van het vak om de waarde te kopiëren.
    connectionPool {enableSsl: true} De instelling van uw verbindingsgroep voor TLS.
    serializer { className: org.apache.tinkerpop.gremlin.
    driver.ser.GraphSONMessageSerializerV2d0,
    config: { serializeResultToString: true }}
    Instellen op deze waarden en eventuele \n-regeleinden verwijderen bij het plakken in de waarde.

    Kopieer voor de waarde voor hosts de Gremlin-URI op de pagina Overzicht:

    De Gremlin-URI op de pagina Overzicht in Azure Portal bekijken en kopiëren

    Kopieer voor het wachtwoord de primaire sleutel op de pagina Sleutels:

    De primaire sleutel bekijken en kopiëren op de pagina Sleutels in Azure Portal

    Het remote-secure.yaml-bestand moet er als volgt uitzien:

    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 }}
    

    zorg dat u de waarde van parameter hosts tussen vierkante haken [] plaatst.

  3. Voer in de terminal bin/gremlin.bat of bin/gremlin.sh uit of start de Gremlinc-console.

  4. Voer in de terminal :remote connect tinkerpop.server conf/remote-secure.yaml uit om verbinding te maken met uw appservice.

    Tip

    Als u de foutmelding No appenders could be found for logger ontvangt, moet u controleren of u de serialisatiefunctiewaarde in het bestand afstand secure.yaml hebt bijgewerkt, zoals beschreven in stap 2. Als uw configuratie correct is, kan deze waarschuwing veilig worden genegeerd, omdat deze geen invloed zou hebben op het gebruik van de console.

  5. Voer vervolgens :remote console uit om alle consoleopdrachten om te leiden naar de externe server.

    Notitie

    Als u de :remote console opdracht niet uitvoert maar alle consoleopdrachten naar de externe server wilt omleiden, moet u opdracht vooraf laten gaan door :>. Voer de opdracht bijvoorbeeld uit als :> g.V().count(). Dit voorvoegsel is onderdeel van de opdracht, en is belangrijk bij het gebruiken van de Gremlin-console met Azure Cosmos DB. Als u het voorvoegsel weglaat, laat u de console de opdracht lokaal uitvoeren, vaak op basis van een graaf in het geheugen. Door het voorvoegsel :> te gebruiken, laat u de console een externe opdracht uitvoeren, in dit geval op Azure Cosmos DB (de localhost-emulator of een Azure-instantie).

Goed gedaan. Nu we configuratie hebben voltooid, gaan we een aantal consoleopdrachten uitvoeren.

We proberen een eenvoudige count()-opdracht. Typ wanneer u hierom wordt gevraagd het volgende in de console bij de prompt:

g.V().count()

Hoekpunten en randen maken

Laten we beginnen met het toevoegen van vijf hoekpunten voor de personen Thomas, Marije, Robin, Ben en Jack.

Invoer (Thomas):

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

Uitvoer:

==>[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]]]]

Invoer (Marije):

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

Uitvoer:

==>[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]]]]

Invoer (Robin):

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

Uitvoer:

==>[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]]]]

Invoer (Ben):

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

Uitvoer:

==>[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]]]]

Invoer (Jack):

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

Uitvoer:

==>[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]]]]

Laten we nu randen toevoegen om relaties tussen deze personen aan te geven.

Invoer (Thomas -> Marije):

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

Uitvoer:

==>[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]

Invoer (Thomas -> Robin):

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

Uitvoer:

==>[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]

Invoer (Robin -> Ben):

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

Uitvoer:

==>[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]

Een hoekpunt bijwerken

We gaan nu de hoekpunt van Thomas bijwerken met een nieuwe leeftijd van 45.

Invoer:

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

Uitvoer:

==>[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]]]]

Query uitvoeren op uw graaf

Nu gaan we verschillende query's uitvoeren op de graaf.

Eerst gaan we met een filter een query uitvoeren om als resultaat mensen die ouder dan 40 jaar zijn te retourneren.

Invoer (filterquery):

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

Uitvoer:

==>[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]]]]

Vervolgens gaan we voor de mensen die ouder zijn dan 40 jaar de voornaam projecteren.

Invoer (filter + projectiequery):

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

Uitvoer:

==>Thomas

Door uw graaf gaan

Laten we door de graaf gaan om alle vrienden van Thomas als resultaat te retourneren.

Invoer (vrienden van Thomas):

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

Uitvoer:

==>[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]]]]

Laten we nu de volgende laag met hoekpunten ophalen. Ga door de graaf om alle vrienden van de vrienden van Thomas als resultaat te retourneren.

Invoer (vrienden van vrienden van Thomas):

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

Uitvoer:

==>[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]]]]

Een hoekpunt verwijderen

Nu gaan we een hoekpunt verwijderen uit de graafdatabase.

Invoer (hoekpunt van Jack neerzetten):

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

Uw graaf wissen

Ten slotte gaan we de database met alle hoekpunten en randen wissen.

Invoer:

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

Gefeliciteerd! U hebt deze zelfstudie voltooid voor Azure Cosmos DB: Gremlin-API.

SLA’s bekijken in Azure Portal

De doorvoer, opslag, beschikbaarheid, latentie en consistentie van uw Cosmos DB-account worden in Azure Portal bewaakt. Grafieken voor metrische gegevens die zijn gekoppeld aan een Azure Cosmos DB Service Level Agreement (SLA) tonen de SLA-waarde in vergelijking met de werkelijke prestaties. Deze suite van metrische gegevens zorgt voor een transparante bewaking van uw SLA's.

Metrische gegevens en SLA's weergeven:

  1. Selecteer Metrische gegevens in het navigatiemenu van uw Cosmos DB-account.

  2. Selecteer een tabblad, bijvoorbeeld Latentie, en selecteer aan de rechterkant een tijdsbestek. Vergelijk de lijnen Werkelijk en SLA in de grafieken met elkaar.

    Azure Cosmos DB-pakket met metrische gegevens

  3. Bekijk de metrische gegevens op de andere tabbladen.

Resources opschonen

Wanneer u uw app en Azure Cosmos DB-account niet meer nodig hebt, kunt u de Azure-resources die u hebt gemaakt, verwijderen zodat er geen kosten meer voor in rekening worden gebracht. Om de resources te verwijderen:

  1. Zoek en selecteer Resourcegroepen in de zoekbalk op Azure Portal.

  2. Selecteer de resourcegroep die u eerder voor deze quickstart hebt gemaakt uit de lijst.

    Resourcegroep selecteren die moet worden verwijderd

  3. Selecteer Resourcegroep verwijderen op de pagina Overzicht van de resourcegroep.

    De resourcegroep verwijderen

  4. Selecteer in het volgende venster de naam van de resourcegroep die u wilt verwijderen en selecteer vervolgens Verwijderen.

Volgende stappen

In deze Quick Start hebt u geleerd hoe u een Azure Cosmos DB-account kunt maken, een graaf kunt maken met Data Explorer, hoekpunten en randen kunt maken en door de graaf kunt gaan met behulp van de Gremlin-console. U kunt nu complexere query's maken en met Gremlin krachtige logica implementeren om door een graaf te gaan.