Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Importante
Si sta cercando una soluzione di database per scenari su larga scala con un contratto di servizio di disponibilità 99.999%, scalabilità automatica immediata e failover automatico in più aree? Prendere in considerazione Azure Cosmos DB per NoSQL.
Si vuole implementare un grafico OLAP (Online Analytical Processing) o eseguire la migrazione di un'applicazione Apache Gremlin esistente? Considera Graph in Microsoft Fabric.
Introduzione alla libreria client di Azure Cosmos DB per Apache Gremlin per .NET per archiviare, gestire ed eseguire query sui dati non strutturati. Seguire la procedura descritta in questa guida per creare un nuovo account, installare una libreria client .NET, connettersi all'account, eseguire operazioni comuni ed eseguire query sui dati di esempio finali.
Codice sorgente della libreria | Pacchetto (NuGet)
Prerequisiti
Una sottoscrizione di Azure
- Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
Versione più recente dell'interfaccia della riga di comando di Azure in Azure Cloud Shell.
- Se si preferisce eseguire i comandi CLI di riferimento in locale, accedere all'interfaccia della riga di comando di Azure usando il comando
az login.
- Se si preferisce eseguire i comandi CLI di riferimento in locale, accedere all'interfaccia della riga di comando di Azure usando il comando
- .NET SDK 9.0 o versione successiva
Configurazione
Prima di tutto, configurare l'account e l'ambiente di sviluppo per questa guida. Questa sezione illustra il processo di creazione di un account, il recupero delle credenziali e la preparazione dell'ambiente di sviluppo.
Crea un account
Per iniziare, creare un'API per l'account Apache Gremlin. Dopo aver creato l'account, creare il database e le risorse del grafo.
Se non si ha già un gruppo di risorse di destinazione, usare il
az group createcomando per creare un nuovo gruppo di risorse nella sottoscrizione.az group create \ --name "<resource-group-name>" \ --location "<location>"Usare il
az cosmosdb createcomando per creare un nuovo account Azure Cosmos DB per Apache Gremlin con le impostazioni predefinite.az cosmosdb create \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --locations "regionName=<location>" \ --capabilities "EnableGremlin"Creare un nuovo database chiamato
az cosmosdb gremlin database createutilizzandocosmicworks.az cosmosdb gremlin database create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --name "cosmicworks"Usare il
az cosmosdb gremlin graph createcomando per creare un nuovo grafo denominatoproducts.az cosmosdb gremlin graph create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --database-name "cosmicworks" \ --name "products" \ --partition-key-path "/category"
Ottenere le credenziali
Ottenere ora la password per la libreria client da usare per creare una connessione all'account creato di recente.
Usare
az cosmosdb showper ottenere l'host per l'account.az cosmosdb show \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --query "{host:name}"Registrare il valore della
hostproprietà dall'output dei comandi precedenti. Questo valore della proprietà è l'host usato più avanti in questa guida per connettersi all'account con la libreria.Usare
az cosmosdb keys listper ottenere le chiavi per l'account.az cosmosdb keys list \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --type "keys"Registrare il valore della
primaryMasterKeyproprietà dall'output dei comandi precedenti. Il valore di questa proprietà è la chiave usata più avanti in questa guida per connettersi all'account con la libreria.
Preparare l'ambiente di sviluppo
Configurare quindi l'ambiente di sviluppo con un nuovo progetto e la libreria client. Questo passaggio è l'ultimo prerequisito necessario prima di passare al resto di questa guida.
Iniziare in una cartella vuota.
Creare una nuova applicazione console .NET
dotnet new consoleImportare il
Gremlin.Netpacchetto da NuGet.dotnet add package Gremlin.NetCostruisci il progetto.
dotnet build
Modello a oggetti
| Descrizione | |
|---|---|
GremlinClient |
Rappresenta il client utilizzato per connettersi e interagire con il server Gremlin |
GraphTraversalSource |
Usato per costruire ed eseguire attraversamenti Gremlin |
Esempi di codice
Autenticare il client
Per iniziare, autenticare il client usando le credenziali raccolte in precedenza in questa guida.
Aprire il file Program.cs nell'ambiente di sviluppo integrato (IDE).
Eliminare qualsiasi contenuto esistente all'interno del file.
Aggiungere direttive using per gli spazi dei nomi seguenti:
Gremlin.Net.DriverGremlin.Net.Structure.IO.GraphSON
using Gremlin.Net.Driver; using Gremlin.Net.Structure.IO.GraphSON;Creare variabili stringa per le credenziali raccolte in precedenza in questa guida. Nomina le variabili
hostnameeprimaryKey.string hostname = "<host>"; string primaryKey = "<key>";Creare un
GremlinServeroggetto usando le credenziali e le variabili di configurazione create nei passaggi precedenti. Assegnare alla variabile il nomeserver.GremlinServer server = new( $"{hostname}.gremlin.cosmos.azure.com", 443, enableSsl: true, username: "/dbs/cosmicworks/colls/products", password: primaryKey );Ora, crea un
GremlinClientutilizzando la variabileservere la configurazioneGraphSON2MessageSerializer.GremlinClient client = new( server, new GraphSON2MessageSerializer() );
Immettere dati
Inserire quindi i nuovi dati dei vertici e dei bordi nel grafico. Prima di creare i nuovi dati, cancellare il grafico di tutti i dati esistenti.
Eseguire la
g.V().drop()query per cancellare tutti i vertici e i bordi dal grafico.await client.SubmitAsync("g.V().drop()");Creare una query Gremlin che aggiunge un vertice.
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) """;Aggiungere un vertice per un singolo prodotto.
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 });Aggiungere altri due vertici per due prodotti aggiuntivi.
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 });Creare un'altra query Gremlin che aggiunge un arco.
string insertEdgeQuery = """ g.V([prop_partition_key, prop_source_id]) .addE('replaces') .to(g.V([prop_partition_key, prop_target_id])) """;Aggiungere due bordi.
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" });
Leggere dati
Leggere quindi i dati inseriti in precedenza nel grafico.
Creare una query per leggere un vertice usando l'identificatore univoco e il valore della chiave di partizione.
string readVertexQuery = "g.V([prop_partition_key, prop_id])";Leggere quindi un vertice specificando i parametri obbligatori.
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();
Dati di query
Usare infine una query per trovare tutti i dati corrispondenti a un attraversamento o un filtro specifico nel grafico.
Creare una query che trova tutti i vertici che escono da un vertice specifico.
string findVerticesQuery = """ g.V().hasLabel('product') .has('category', prop_partition_key) .has('name', prop_name) .outE('replaces').inV() """;Eseguire la query che specifica il
Montau Turtle Surfboardprodotto.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" });Scorrere i risultati della query.
foreach (Dictionary<string, object> result in findResults) { // Do something here with each result }
Eseguire il codice
Eseguire l'applicazione appena creata usando un terminale nella directory dell'applicazione.
dotnet run
Pulire le risorse
Quando l'account non è più necessario, rimuovere l'account dalla sottoscrizione di Azure eliminando la risorsa.
az cosmosdb delete \
--resource-group "<resource-group-name>" \
--name "<account-name>"