Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Viktigt!
Letar du efter en databaslösning för storskaliga scenarier med ett serviceavtal på 99,999% tillgänglighetsnivå (SLA), snabb autoskalning och automatisk redundans i flera regioner? Överväg Azure Cosmos DB för NoSQL.
Vill du implementera ett OLAP-diagram (Online Analytical Processing) eller migrera ett befintligt Apache Gremlin-program? Överväg Graph i Microsoft Fabric.
Kom igång med Azure Cosmos DB for Apache Gremlin-klientbiblioteket för .NET för att lagra, hantera och fråga ostrukturerade data. Följ stegen i den här guiden för att skapa ett nytt konto, installera ett .NET-klientbibliotek, ansluta till kontot, utföra vanliga åtgärder och köra frågor mot dina slutliga exempeldata.
Bibliotekets källkodspaket | (NuGet)
Förutsättningar
En prenumeration på Azure
- Om du inte har en Azure-prenumeration, skapa ett gratis konto innan du börjar.
Den senaste versionen av Azure CLI i Azure Cloud Shell.
- Om du föredrar att köra CLI-referenskommandon lokalt loggar du in på Azure CLI med hjälp
az loginav kommandot .
- Om du föredrar att köra CLI-referenskommandon lokalt loggar du in på Azure CLI med hjälp
- .NET SDK 9.0 eller senare
Konfigurera
Konfigurera först konto- och utvecklingsmiljön för den här guiden. Det här avsnittet beskriver hur du skapar ett konto, hämtar dess autentiseringsuppgifter och sedan förbereder utvecklingsmiljön.
Skapa ett konto
Börja med att skapa ett API för Apache Gremlin-konto. När kontot har skapats skapar du databas- och grafresurserna.
Om du inte redan har en målresursgrupp använder du
az group createkommandot för att skapa en ny resursgrupp i din prenumeration.az group create \ --name "<resource-group-name>" \ --location "<location>"az cosmosdb createAnvänd kommandot för att skapa ett nytt Azure Cosmos DB för Apache Gremlin-konto med standardinställningar.az cosmosdb create \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --locations "regionName=<location>" \ --capabilities "EnableGremlin"Skapa en ny databas med namnet
az cosmosdb gremlin database createcosmicworks.az cosmosdb gremlin database create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --name "cosmicworks"az cosmosdb gremlin graph createAnvänd kommandot för att skapa ett nytt diagram med namnetproducts.az cosmosdb gremlin graph create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --database-name "cosmicworks" \ --name "products" \ --partition-key-path "/category"
Hämta autentiseringsuppgifter
Hämta nu lösenordet för klientbiblioteket som ska användas för att skapa en anslutning till det nyligen skapade kontot.
Använd
az cosmosdb showför att hämta värden för kontot.az cosmosdb show \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --query "{host:name}"Registrera värdet för
hostegenskapen från föregående kommandons utdata. Värdet för den här egenskapen är den värd som du använder senare i den här guiden för att ansluta till kontot med biblioteket.Använd
az cosmosdb keys listför att hämta nycklarna för kontot.az cosmosdb keys list \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --type "keys"Registrera värdet för
primaryMasterKeyegenskapen från föregående kommandons utdata. Den här egenskapens värde är nyckeln som du använder senare i den här guiden för att ansluta till kontot med biblioteket.
Förbereda utvecklingsmiljön
Konfigurera sedan utvecklingsmiljön med ett nytt projekt och klientbiblioteket. Det här steget är det sista nödvändiga kravet innan du går vidare till resten av den här guiden.
Starta i en tom mapp.
Skapa ett nytt .NET-konsolprogram
dotnet new consoleImportera paketet
Gremlin.Netfrån NuGet.dotnet add package Gremlin.NetSkapa projektet.
dotnet build
Objektmodell
| Beskrivning | |
|---|---|
GremlinClient |
Representerar klienten som används för att ansluta och interagera med Gremlin-servern |
GraphTraversalSource |
Används för att konstruera och köra Gremlin-traverseringar |
Kodexempel
Autentisera klient
Börja med att autentisera klienten med de autentiseringsuppgifter som samlats in tidigare i den här guiden.
Öppna filen Program.cs i din integrerade utvecklingsmiljö (IDE).
Ta bort befintligt innehåll i filen.
Lägg till med hjälp av direktiv för följande namnområden:
Gremlin.Net.DriverGremlin.Net.Structure.IO.GraphSON
using Gremlin.Net.Driver; using Gremlin.Net.Structure.IO.GraphSON;Skapa strängvariabler för de autentiseringsuppgifter som samlats in tidigare i den här guiden. Namnge variablerna
hostnameochprimaryKey.string hostname = "<host>"; string primaryKey = "<key>";Skapa en
GremlinServermed hjälp av de autentiseringsuppgifter och konfigurationsvariabler som skapades i föregående steg. Namnge variabelnserver.GremlinServer server = new( $"{hostname}.gremlin.cosmos.azure.com", 443, enableSsl: true, username: "/dbs/cosmicworks/colls/products", password: primaryKey );Skapa nu en
GremlinClientmed hjälp av variabelnserveroch konfigurationenGraphSON2MessageSerializer.GremlinClient client = new( server, new GraphSON2MessageSerializer() );
Infoga data
Infoga sedan nya hörn- och kantdata i diagrammet. Innan du skapar nya data rensar du grafen över befintliga data.
Kör frågan
g.V().drop()för att rensa alla hörn och kanter från diagrammet.await client.SubmitAsync("g.V().drop()");Skapa en Gremlin-fråga som lägger till en nod.
string insertVertexQuery = """ g.addV('product') .property('id', prop_id) .property('name', prop_name) .property('category', prop_category) .property('quantity', prop_quantity) .property('price', prop_price) .property('clearance', prop_clearance) """;Lägg till en nod för en enskild produkt.
await client.SubmitAsync(insertVertexQuery, new Dictionary<string, object> { ["prop_id"] = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", ["prop_name"] = "Yamba Surfboard", ["prop_category"] = "gear-surf-surfboards", ["prop_quantity"] = 12, ["prop_price"] = 850.00, ["prop_clearance"] = false });Lägg till ytterligare två hörn för två extra produkter.
await client.SubmitAsync(insertVertexQuery, new Dictionary<string, object> { ["prop_id"] = "bbbbbbbb-1111-2222-3333-cccccccccccc", ["prop_name"] = "Montau Turtle Surfboard", ["prop_category"] = "gear-surf-surfboards", ["prop_quantity"] = 5, ["prop_price"] = 600.00, ["prop_clearance"] = true }); await client.SubmitAsync(insertVertexQuery, new Dictionary<string, object> { ["prop_id"] = "cccccccc-2222-3333-4444-dddddddddddd", ["prop_name"] = "Noosa Surfboard", ["prop_category"] = "gear-surf-surfboards", ["prop_quantity"] = 31, ["prop_price"] = 1100.00, ["prop_clearance"] = false });Skapa en annan Gremlin-fråga som lägger till en kant.
string insertEdgeQuery = """ g.V([prop_partition_key, prop_source_id]) .addE('replaces') .to(g.V([prop_partition_key, prop_target_id])) """;Lägg till två kanter.
await client.SubmitAsync(insertEdgeQuery, new Dictionary<string, object> { ["prop_partition_key"] = "gear-surf-surfboards", ["prop_source_id"] = "bbbbbbbb-1111-2222-3333-cccccccccccc", ["prop_target_id"] = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" }); await client.SubmitAsync(insertEdgeQuery, new Dictionary<string, object> { ["prop_partition_key"] = "gear-surf-surfboards", ["prop_source_id"] = "bbbbbbbb-1111-2222-3333-cccccccccccc", ["prop_target_id"] = "cccccccc-2222-3333-4444-dddddddddddd" });
Läs data
Läs sedan data som tidigare infogats i diagrammet.
Skapa en fråga som läser ett hörn med hjälp av det unika identifierar- och partitionsnyckelvärdet.
string readVertexQuery = "g.V([prop_partition_key, prop_id])";Läs sedan en nod genom att ange de nödvändiga parametrarna.
ResultSet<Dictionary<string, object>> readResults = await client.SubmitAsync<Dictionary<string, object>>(readVertexQuery, new Dictionary<string, object> { ["prop_partition_key"] = "gear-surf-surfboards", ["prop_id"] = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" }); Dictionary<string, object> matchedItem = readResults.Single();
Fråga efter data
Slutligen använder du en fråga för att hitta alla data som matchar en specifik bläddering eller filter i diagrammet.
Skapa en fråga som hittar alla hörn som passerar ut från ett specifikt hörn.
string findVerticesQuery = """ g.V().hasLabel('product') .has('category', prop_partition_key) .has('name', prop_name) .outE('replaces').inV() """;Kör frågan med
Montau Turtle Surfboardsom specificerar produkten.ResultSet<Dictionary<string, object>> findResults = await client.SubmitAsync<Dictionary<string, object>>(findVerticesQuery, new Dictionary<string, object> { ["prop_partition_key"] = "gear-surf-surfboards", ["prop_name"] = "Montau Turtle Surfboard" });Iterera över frågeresultatet.
foreach (Dictionary<string, object> result in findResults) { // Do something here with each result }
Kör koden
Kör det nyligen skapade programmet med hjälp av en terminal i programkatalogen.
dotnet run
Rensa resurser
När du inte längre behöver kontot tar du bort kontot från din Azure-prenumeration genom att ta bort resursen.
az cosmosdb delete \
--resource-group "<resource-group-name>" \
--name "<account-name>"