Biblioteca de clientes das Tabelas do Azure para .NET – versão 12.8.1
O Armazenamento de Tabelas do Azure é um serviço que armazena grandes quantidades de dados NoSQL estruturados na nuvem, fornecendo um repositório de chave/atributo com um design sem esquema.
O Azure Cosmos DB fornece uma API de Tabela para aplicativos escritos para o armazenamento de Tabelas do Azure que precisam de recursos premium, como:
- Distribuição global turnkey.
- Taxa de transferência dedicada em todo o mundo.
- Latências de dígito único em milissegundos no percentil 99.
- Alta disponibilidade garantia.
- Indexação automática secundária.
A biblioteca de cliente de Tabelas do azure pode ser direcionada diretamente o armazenamento de Tabelas do Azure ou os pontos de extremidade do serviço de tabelas do Azure Cosmos DB, sem alterações de código.
Código-fonte | Pacote (NuGet) | Documentação | de referência da APIAmostras | Log de Alterações
Introdução
Instalar o pacote
Instale a biblioteca de clientes das Tabelas do Azure para .NET com o NuGet:
dotnet add package Azure.Data.Tables
Pré-requisitos
- Uma assinatura do Azure.
- Uma conta de armazenamento do Azure existente ou um banco de dados do Azure Cosmos DB com a API de Tabela do Azure especificada.
Se você precisar criar uma dessas opções, poderá usar a CLI do Azure.
Criando uma conta de armazenamento
Crie uma conta mystorageaccount
de armazenamento no grupo MyResourceGroup
de recursos na assinatura MySubscription
na região Oeste dos EUA.
az storage account create -n mystorageaccount -g MyResourceGroup -l westus --subscription MySubscription
Criando um Cosmos DB
Crie uma conta MyCosmosDBDatabaseAccount
do Cosmos DB no grupo MyResourceGroup
de recursos na assinatura MySubscription
e uma tabela chamada MyTableName
na conta.
az cosmosdb create --name MyCosmosDBDatabaseAccount --capabilities EnableTable --resource-group MyResourceGroup --subscription MySubscription
az cosmosdb table create --name MyTableName --resource-group MyResourceGroup --account-name MyCosmosDBDatabaseAccount
Autenticar o cliente
Saiba mais sobre as opções de autenticação (incluindo Cadeias de Conexão, Chave Compartilhada, Assinaturas de Chave Compartilhada e TokenCredentials)em nossos exemplos.
Principais conceitos
TableServiceClient
– Cliente que fornece métodos para interagir no nível do Serviço tabela, como criar, listar e excluir tabelasTableClient
– Cliente que fornece métodos para interagir em um nível de entidade de tabela, como criar, consultar e excluir entidades dentro de uma tabela.Table
– As tabelas armazenam dados como coleções de entidades.Entity
– As entidades são semelhantes às linhas. Uma entidade tem uma chave primária e um conjunto de propriedades. Uma propriedade é um par de valores de nome, semelhante a uma coluna.
Os usos comuns do serviço Tabela incluem:
- Armazenamento de TBs de dados estruturados capazes de atender a aplicativos de dimensionamento da Web
- Armazenar conjuntos de dados que não exigem junções complexas, chaves estrangeiras ou procedimentos armazenados e podem ser des normalizados para acesso rápido
- Consulta rápida de dados usando um índice clusterizado
- Acessando dados usando o protocolo OData e expressões de filtro LINQ
Acesso thread-safe
Garantimos que todos os métodos de instância do cliente sejam thread-safe e independentes uns dos outros (diretriz). Isso garante que a recomendação de reutilize instâncias de cliente seja sempre segura, mesmo entre threads.
Conceitos adicionais
Opções do | clienteAcessando a resposta | Operações de execução longa | Tratamento de falhas | Diagnostics | Zombando | Tempo de vida do cliente
Exemplos
Criar o cliente do serviço Tabela
Primeiro, precisamos construir um TableServiceClient
.
// Construct a new "TableServiceClient using a TableSharedKeyCredential.
var serviceClient = new TableServiceClient(
new Uri(storageUri),
new TableSharedKeyCredential(accountName, storageAccountKey));
Criar uma tabela do Azure
Em seguida, podemos criar uma nova tabela.
// Create a new table. The TableItem class stores properties of the created table.
TableItem table = serviceClient.CreateTableIfNotExists(tableName);
Console.WriteLine($"The created table's name is {table.Name}.");
Obter uma tabela do Azure
O conjunto de tabelas existentes do Azure pode ser consultas usando um filtro OData.
// Use the <see cref="TableServiceClient"> to query the service. Passing in OData filter strings is optional.
Pageable<TableItem> queryTableResults = serviceClient.Query(filter: $"TableName eq '{tableName}'");
Console.WriteLine("The following are the names of the tables in the query results:");
// Iterate the <see cref="Pageable"> in order to access queried tables.
foreach (TableItem table in queryTableResults)
{
Console.WriteLine(table.Name);
}
Excluir uma tabela do Azure
Tabelas individuais podem ser excluídas do serviço.
// Deletes the table made previously.
serviceClient.DeleteTable(tableName);
Criar o cliente tabela
Para interagir com entidades de tabela, primeiro devemos construir um TableClient
.
// Construct a new <see cref="TableClient" /> using a <see cref="TableSharedKeyCredential" />.
var tableClient = new TableClient(
new Uri(storageUri),
tableName,
new TableSharedKeyCredential(accountName, storageAccountKey));
// Create the table in the service.
tableClient.Create();
Adicionar entidades de tabela
Vamos definir um novo TableEntity
para que possamos adicioná-lo à tabela.
// Make a dictionary entity by defining a <see cref="TableEntity">.
var tableEntity = new TableEntity(partitionKey, rowKey)
{
{ "Product", "Marker Set" },
{ "Price", 5.00 },
{ "Quantity", 21 }
};
Console.WriteLine($"{tableEntity.RowKey}: {tableEntity["Product"]} costs ${tableEntity.GetDouble("Price")}.");
Usando o TableClient
, agora podemos adicionar nossa nova entidade à tabela.
// Add the newly created entity.
tableClient.AddEntity(tableEntity);
Entidades da tabela de consulta
Para inspecionar o conjunto de entidades de tabela existentes, podemos consultar a tabela usando um filtro OData.
Pageable<TableEntity> queryResultsFilter = tableClient.Query<TableEntity>(filter: $"PartitionKey eq '{partitionKey}'");
// Iterate the <see cref="Pageable"> to access all queried entities.
foreach (TableEntity qEntity in queryResultsFilter)
{
Console.WriteLine($"{qEntity.GetString("Product")}: {qEntity.GetDouble("Price")}");
}
Console.WriteLine($"The query returned {queryResultsFilter.Count()} entities.");
Se você preferir expressões de consulta de estilo LINQ, podemos consultar a tabela usando essa sintaxe também. Para demonstrar essa sintaxe, você precisará de um modelo fortemente tipado, como o mostrado abaixo:
// Define a strongly typed entity by implementing the ITableEntity interface.
public class OfficeSupplyEntity : ITableEntity
{
public string Product { get; set; }
public double Price { get; set; }
public int Quantity { get; set; }
public string PartitionKey { get; set; }
public string RowKey { get; set; }
public DateTimeOffset? Timestamp { get; set; }
public ETag ETag { get; set; }
}
Dada essa definição de classe de modelo, veja como você escreveria uma consulta:
double priceCutOff = 6.00;
Pageable<OfficeSupplyEntity> queryResultsLINQ = tableClient.Query<OfficeSupplyEntity>(ent => ent.Price >= priceCutOff);
Excluir entidades de tabela
Se não precisarmos mais de nossa nova entidade de tabela, ela poderá ser excluída.
// Delete the entity given the partition and row key.
tableClient.DeleteEntity(partitionKey, rowKey);
Solução de problemas
Ao usar a biblioteca de tabelas do Azure, os erros retornados pelo serviço são relatados usando os mesmos códigos http status retornados para solicitações da API REST.
Por exemplo, se você tentar criar uma tabela que já existe, um 409
erro será retornado, indicando "Conflito".
// Construct a new TableClient using a connection string.
var client = new TableClient(
connectionString,
tableName);
// Create the table if it doesn't already exist.
client.CreateIfNotExists();
// Now attempt to create the same table unconditionally.
try
{
client.Create();
}
catch (RequestFailedException ex) when (ex.Status == (int)HttpStatusCode.Conflict)
{
Console.WriteLine(ex.ToString());
}
Configuração do registro em log do console
A maneira mais simples de ver os logs é habilitar o log do console. Para criar um ouvinte de log do SDK do Azure que gera mensagens para o console, use o método AzureEventSourceListener.CreateConsoleLogger.
// Setup a listener to monitor logged events.
using AzureEventSourceListener listener = AzureEventSourceListener.CreateConsoleLogger();
Para saber mais sobre outros mecanismos de registro em log, confira aqui.
Próximas etapas
Introdução aos nossos exemplos de Tabela.
Problemas conhecidos
Uma lista de problemas conhecidos no momento relacionados aos pontos de extremidade de tabela do Cosmos DB pode ser encontrada aqui.
Contribuição
Este projeto aceita contribuições e sugestões. A maioria das contribuições exige que você concorde com um CLA (Contrato de Licença do Colaborador) declarando que você tem o direito de nos conceder, e de fato concede, os direitos de usar sua contribuição. Para obter detalhes, visite cla.microsoft.com.
Este projeto adotou o Código de Conduta de Software Livre da Microsoft. Para obter mais informações, confira as Perguntas frequentes sobre o Código de Conduta ou contate opencode@microsoft.com para enviar outras perguntas ou comentários.