Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Importante
Você está procurando uma solução de banco de dados para cenários de alta escala com um SLA (contrato de nível de serviço de disponibilidade) de 99,999%, dimensionamento automático instantâneo e failover automático em várias regiões? Considere Azure Cosmos DB para NoSQL.
Você deseja implementar um grafo OLAP (processamento analítico online) ou migrar um aplicativo Apache Gremlin existente? Considere o Graph no contexto do Microsoft Fabric.
Comece a usar a biblioteca cliente para .NET do Azure Cosmos DB para Apache Gremlin para armazenar, gerenciar e consultar dados não estruturados. Siga as etapas neste guia para criar uma nova conta, instalar uma biblioteca de clientes do .NET, conectar-se à conta, executar operações comuns e consultar seus dados de exemplo finais.
Código-fonte da biblioteca | Pacote (NuGet)
Prerequisites
Uma assinatura de Azure
- Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.
A versão mais recente do CLI do Azure no Azure Cloud Shell.
- Se você preferir executar comandos de referência da CLI localmente, entre no CLI do Azure usando o comando
az login.
- Se você preferir executar comandos de referência da CLI localmente, entre no CLI do Azure usando o comando
- SDK do .NET 9.0 ou posterior
Configurando
Primeiro, configure a conta e o ambiente de desenvolvimento para este guia. Esta seção orienta você pelo processo de criação de uma conta, obtendo suas credenciais e, em seguida, preparando seu ambiente de desenvolvimento.
Criar uma conta
Comece criando uma conta da API para Apache Gremlin. Depois que a conta for criada, crie o banco de dados e os recursos de grafo.
Se você ainda não tiver um grupo de recursos de destino, use o
az group createcomando para criar um novo grupo de recursos em sua assinatura.az group create \ --name "<resource-group-name>" \ --location "<location>"Use o comando
az cosmosdb createpara criar um novo Azure Cosmos DB para a conta do Apache Gremlin com configurações padrão.az cosmosdb create \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --locations "regionName=<location>" \ --capabilities "EnableGremlin"Crie um novo banco de dados usando
az cosmosdb gremlin database createnomeadocosmicworks.az cosmosdb gremlin database create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --name "cosmicworks"Use o
az cosmosdb gremlin graph createcomando para criar um novo grafo chamadoproducts.az cosmosdb gremlin graph create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --database-name "cosmicworks" \ --name "products" \ --partition-key-path "/category"
Obter credenciais
Agora, obtenha a senha da biblioteca de clientes a ser usada para criar uma conexão com a conta criada recentemente.
Use
az cosmosdb showpara obter o host da conta.az cosmosdb show \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --query "{host:name}"Anote o valor da propriedade
hostna saída dos comandos anteriores. O valor dessa propriedade é o host que você usará posteriormente neste guia para se conectar à conta com a biblioteca.Use
az cosmosdb keys listpara obter as chaves da conta.az cosmosdb keys list \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --type "keys"Anote o valor da propriedade
primaryMasterKeyna saída dos comandos anteriores. O valor dessa propriedade é a chave que você usará posteriormente neste guia para se conectar à conta com a biblioteca.
Prepare o ambiente de desenvolvimento
Em seguida, configure seu ambiente de desenvolvimento com um novo projeto e a biblioteca de clientes. Esta etapa é o último pré-requisito necessário antes de passar para o restante deste guia.
Comece em uma pasta vazia.
Criar um novo aplicativo de console .NET
dotnet new consoleImporte o
Gremlin.Netpacote do NuGet.dotnet add package Gremlin.NetConstrua o projeto.
dotnet build
Modelo de objeto
| Description | |
|---|---|
GremlinClient |
Representa o cliente usado para se conectar e interagir com o servidor Gremlin |
GraphTraversalSource |
Usado para construir e executar travessias Gremlin |
Exemplos de código
Autenticar cliente
Comece autenticando o cliente usando as credenciais coletadas anteriormente neste guia.
Abra o arquivo Program.cs no IDE (ambiente de desenvolvimento integrado).
Exclua qualquer conteúdo existente dentro do arquivo.
Adicione diretivas de uso para os seguintes namespaces:
Gremlin.Net.DriverGremlin.Net.Structure.IO.GraphSON
using Gremlin.Net.Driver; using Gremlin.Net.Structure.IO.GraphSON;Crie variáveis de cadeia de caracteres para as credenciais coletadas anteriormente neste guia. Nomeie as variáveis
hostnameeprimaryKey.string hostname = "<host>"; string primaryKey = "<key>";Crie um
GremlinServerusando as credenciais e as variáveis de configuração criadas nas etapas anteriores. Dê o nomeserverà variável.GremlinServer server = new( $"{hostname}.gremlin.cosmos.azure.com", 443, enableSsl: true, username: "/dbs/cosmicworks/colls/products", password: primaryKey );Agora, crie um
GremlinClientusando aservervariável e aGraphSON2MessageSerializerconfiguração.GremlinClient client = new( server, new GraphSON2MessageSerializer() );
Inserir dados
Em seguida, insira novos dados de vértice e borda no grafo. Antes de criar os novos dados, desmarque o grafo de todos os dados existentes.
Execute a
g.V().drop()consulta para limpar todos os vértices e bordas do grafo.await client.SubmitAsync("g.V().drop()");Crie uma consulta Gremlin que adicione um vértice.
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) """;Adicione um vértice para um único produto.
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 });Adicione dois vértices adicionais para dois produtos extras.
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 });Crie outra consulta Gremlin que adicione uma aresta.
string insertEdgeQuery = """ g.V([prop_partition_key, prop_source_id]) .addE('replaces') .to(g.V([prop_partition_key, prop_target_id])) """;Adicione duas bordas.
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" });
Ler dados
Em seguida, leia os dados que foram inseridos anteriormente no grafo.
Crie uma consulta que leia um vértice usando o identificador exclusivo e o valor da chave de partição.
string readVertexQuery = "g.V([prop_partition_key, prop_id])";Em seguida, leia um vértice fornecendo os parâmetros necessários.
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();
Consultar dados
Por fim, use uma consulta para localizar todos os dados que correspondem a uma passagem ou filtro específico no grafo.
Crie uma consulta que encontre todos os vértices que partem de um vértice específico.
string findVerticesQuery = """ g.V().hasLabel('product') .has('category', prop_partition_key) .has('name', prop_name) .outE('replaces').inV() """;Execute a consulta especificando o
Montau Turtle Surfboardproduto.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" });Percorrer os resultados da consulta.
foreach (Dictionary<string, object> result in findResults) { // Do something here with each result }
Executar o código
Execute o aplicativo recém-criado usando um terminal no diretório do aplicativo.
dotnet run
Limpar os recursos
Quando você não precisar mais da conta, remova a conta de sua assinatura do Azure excluindo o recurso.
az cosmosdb delete \
--resource-group "<resource-group-name>" \
--name "<account-name>"