Editar

Perguntas frequentes sobre o Azure Cosmos DB for Table

APLICA-SE A: Tabela

Comparando o Azure Cosmos DB para Tabela e o Armazenamento de Tabela do Azure

Onde a API para Tabela não é idêntica ao comportamento de armazenamento da Tabela do Azure?

Há algumas diferenças de comportamento que os usuários provenientes do armazenamento de Tabela do Azure que desejam criar tabelas com o Azure Cosmos DB for Table devem estar cientes:

  • O Azure Cosmos DB for Table usa um modelo de capacidade reservada para garantir o desempenho garantido, mas isso significa que se paga pela capacidade assim que a tabela é criada, mesmo que a capacidade não esteja sendo usada. Com o armazenamento de Tabela do Azure, paga-se apenas pela capacidade usada. Isso ajuda a explicar por que a API para Tabela pode oferecer um SLA de leitura e 15 ms de gravação no percentil 99, enquanto o armazenamento de Tabela do Azure oferece um SLA de 10 segundos. Mas, como consequência, com tabelas API for Table, mesmo tabelas vazias sem solicitações, custam dinheiro para garantir que a capacidade esteja disponível para lidar com quaisquer solicitações a elas no SLA oferecido pelo Azure Cosmos DB.

  • Os resultados da consulta retornados pela API para Tabela não são classificados na ordem da chave de partição/chave de linha como no armazenamento da Tabela do Azure.

  • As teclas de linha só podem ter até 255 bytes.

  • Os lotes só podem ter até 2 MBs.

  • Atualmente, o CORS não é suportado.

  • Os nomes de tabela no armazenamento de tabela do Azure não diferenciam maiúsculas de minúsculas, mas estão no Azure Cosmos DB for Table.

  • Alguns dos formatos internos do Azure Cosmos DB para codificar informações, como campos binários, atualmente não são tão eficientes quanto se gostaria. Portanto, isso pode causar limitações inesperadas no tamanho dos dados. Por exemplo, atualmente não é possível usar o Meg completo de uma entidade de tabela para armazenar dados binários porque a codificação aumenta o tamanho dos dados.

  • O Azure Cosmos DB reserva os nomes IDde propriedade da entidade , , ridetage ResourceId eles não são suportados no momento.

  • O TableQuery TakeCount não está limitado a 1000.

  • Em termos da API REST, o armazenamento de Tabela do Azure (mas não o Azure Cosmos DB for Table) dá suporte aos seguintes pontos de extremidade/opções de consulta:

    Métodos de Repouso Ponto de extremidade de repouso/opção de consulta URLs de documentos Explicação Suportado no armazenamento de tabelas Suportado na API para Tabela
    GET, PUT /?Restype=service@comp=properties Definir Propriedades do Serviço de Tabela e Obter Propriedades do Serviço de Tabela Esse ponto de extremidade é usado para definir regras CORS, configuração de análise de armazenamento e configurações de log. Atualmente, não há suporte para CORS e a análise e o registro em log são tratados de forma diferente no Azure Cosmos DB do que nas Tabelas de Armazenamento do Azure Sim No
    OPTIONS /<table-resource-name> Pedido de tabela CORS de comprovação Isso faz parte do CORS que o Azure Cosmos DB não suporta atualmente. Sim No
    GET /?Restype=service@comp=stats Obter estatísticas de serviço de tabela Fornece informações sobre a rapidez com que os dados estão sendo replicados entre primários e secundários. Isso não é necessário no Azure Cosmos DB, pois a replicação faz parte das gravações. Sim No
    GET, PUT /mytable?comp=acl Obter ACL de tabela e definir ACL de tabela Isso obtém e define as políticas de acesso armazenado usadas para gerenciar Assinaturas de Acesso Compartilhado (SAS). Sim No
  • O Azure Cosmos DB for Table suporta apenas o formato JSON, não ATOM.

  • Para o SDK do .NET em particular, há algumas classes e métodos que o Azure Cosmos DB não oferece suporte atualmente.

    • CloudTableClient classe
      • \ServiceProperties
      • \ServiceStats
    • Classe CloudTable
      • SetPermissions
      • GetPermissions

Outras perguntas frequentes

Preciso de um novo SDK para usar a API para Tabela?

Não, os SDKs de armazenamento existentes ainda devem funcionar. No entanto, é recomendável que sempre se obtenha os SDKs mais recentes para o melhor suporte e, em muitos casos, desempenho superior. Consulte a lista de idiomas disponíveis em Introdução ao Azure Cosmos DB para Tabela.

Qual é a cadeia de conexão que eu preciso usar para me conectar à API para Tabela?

A cadeia de conexão é:

DefaultEndpointsProtocol=https;AccountName=<AccountNamefromCosmosDB;AccountKey=<FromKeysPaneofCosmosDB>;TableEndpoint=https://<AccountName>.table.cosmosdb.azure.com

Você pode obter a cadeia de conexão na página Cadeia de Conexão no portal do Azure.

Como faço para substituir as configurações de configuração para as opções de solicitação no SDK do .NET para a API para Tabela?

Algumas configurações são manipuladas no método CreateCloudTableClient e outras por meio do app.config na seção appSettings no aplicativo cliente. Para obter informações sobre configurações de configuração, consulte Recursos do Azure Cosmos DB.

Há alguma alteração para os clientes que estão usando os SDKs de armazenamento de Tabela do Azure existentes?

Nenhum. Não há alterações para clientes existentes ou novos que estão usando os SDKs de armazenamento de Tabela do Azure existentes.

Como posso ver os dados da tabela armazenados no Azure Cosmos DB para utilização com a API para Tabela?

Você pode usar o portal do Azure para procurar os dados. Você também pode usar a API para código de tabela ou as ferramentas mencionadas na próxima resposta.

Quais ferramentas funcionam com a API para Tabela?

Você pode usar o Gerenciador de Armazenamento do Azure.

Ferramentas com a flexibilidade de usar uma cadeia de conexão no formato especificado anteriormente podem suportar a nova API para Tabela. Uma lista de ferramentas de tabela é fornecida na página Ferramentas de Cliente de Armazenamento do Azure.

A simultaneidade nas operações é controlada?

Sim, a simultaneidade otimista é fornecida através do uso do mecanismo ETag.

O modelo de consulta OData é suportado para entidades?

Sim, a API para Tabela suporta consulta OData e consulta LINQ.

Posso me conectar ao Armazenamento de Tabela do Azure e ao Azure Cosmos DB para Tabela lado a lado no mesmo aplicativo?

Sim, você pode se conectar criando duas instâncias separadas do CloudTableClient, cada uma apontando para seu próprio URI por meio da cadeia de conexão.

Como faço para migrar um aplicativo de armazenamento de Tabela do Azure existente para esta oferta?

AzCopy é suportado.

Como é feita a expansão do tamanho do armazenamento para este serviço se, por exemplo, eu começo com 'n' GB de dados e meus dados crescerão para 1 TB ao longo do tempo?

O Azure Cosmos DB foi projetado para fornecer armazenamento ilimitado por meio do uso de dimensionamento horizontal. O serviço pode monitorar e aumentar efetivamente seu armazenamento.

Como faço para monitorar a API para a oferta de tabela?

Você pode usar o painel API para métricas de tabela para monitorar solicitações e uso de armazenamento.

Como calculo a taxa de transferência necessária?

Você pode usar o estimador de capacidade para calcular a taxa de transferência de tabela necessária para as operações. Para obter mais informações, consulte Estimar unidades de solicitação e armazenamento de dados. Em geral, você pode mostrar sua entidade como JSON e fornecer os números para suas operações.

Posso usar a API para Table SDK localmente com o emulador?

Neste momento, não.

Meu aplicativo existente pode funcionar com a API para Tabela?

Sim, a mesma API é suportada.

Preciso migrar meus aplicativos de armazenamento de Tabela do Azure existentes para o SDK se não quiser usar a API para recursos de Tabela?

Não, você pode criar e usar ativos de armazenamento de Tabela do Azure existentes sem interrupção de qualquer tipo. No entanto, se você não usar a API para Tabela, não poderá se beneficiar do índice automático, da opção de consistência extra ou da distribuição global.

Como adiciono a replicação dos dados na API para Tabela em mais de uma região do Azure?

Você pode usar as configurações de replicação global do portal do Azure Cosmos DB para adicionar regiões adequadas para seu aplicativo. Para desenvolver um aplicativo distribuído globalmente, você também deve adicionar seu aplicativo com as informações PreferredLocation definidas para a região local para fornecer baixa latência de leitura.

Como faço para alterar a região de gravação principal da conta na API para Tabela?

Você pode usar o painel do portal de replicação global do Azure Cosmos DB para adicionar uma região e, em seguida, fazer failover para a região necessária. Para obter instruções, consulte Desenvolvendo com contas do Azure Cosmos DB de várias regiões.

Como configuro minhas regiões de leitura preferidas para baixa latência quando distribuo meus dados?

Para ajudar a ler a partir do local local, use a chave PreferredLocation no arquivo app.config. Para aplicativos existentes, a API para Tabela lança um erro se LocationMode estiver definido. Remova esse código, porque a API para Tabela pega essas informações do arquivo app.config.

Como devo pensar sobre os níveis de consistência na API para Tabela?

O Azure Cosmos DB fornece compensações bem fundamentadas entre consistência, disponibilidade e latência. O Azure Cosmos DB oferece cinco níveis de consistência à API para desenvolvedores de tabela, para que você possa escolher o modelo de consistência certo no nível da tabela e fazer solicitações individuais enquanto consulta os dados. Quando um cliente se conecta, ele pode especificar um nível de consistência. Você pode alterar o nível por meio do argumento consistencyLevel de CreateCloudTableClient.

A API para Tabela fornece leituras de baixa latência com "Leia suas próprias gravações", com consistência de obsoletos limitados como padrão. Para obter mais informações, consulte Níveis de consistência.

Por padrão, o armazenamento de Tabela do Azure fornece consistência forte dentro de uma região e consistência eventual nos locais secundários.

O Azure Cosmos DB for Table oferece mais níveis de consistência do que o armazenamento de Tabela do Azure?

Sim, para obter informações sobre como se beneficiar da natureza distribuída do Azure Cosmos DB, consulte Níveis de consistência. Como são fornecidas garantias para os níveis de consistência, você pode usá-las com confiança.

Quando a distribuição global está habilitada, quanto tempo leva para replicar os dados?

O Azure Cosmos DB confirma os dados de forma durável na região local e envia os dados para outras regiões imediatamente em questão de milissegundos. Essa replicação depende apenas do tempo de ida e volta (RTT) do datacenter. Para saber mais sobre a capacidade de distribuição global do Azure Cosmos DB, consulte Azure Cosmos DB: um serviço de banco de dados distribuído globalmente no Azure.

O nível de consistência da solicitação de leitura pode ser alterado?

Com o Azure Cosmos DB, você pode definir o nível de consistência no nível do contêiner (na tabela). Usando o SDK do .NET, você pode alterar o nível fornecendo o valor para a chave TableConsistencyLevel no arquivo app.config. Os valores possíveis são: Strong, Bounded Staleness, Session, Consistent Prefix e Eventual. Para obter mais informações, consulte Níveis de consistência de dados ajustáveis no Azure Cosmos DB. A ideia-chave é que você não pode definir o nível de consistência da solicitação em mais do que a configuração da tabela. Por exemplo, não é possível definir o nível de consistência da tabela em Eventual e o nível de consistência da solicitação em Forte.

Como a API para Tabela lida com failover se uma região ficar inativa?

A API para Tabela usa a plataforma distribuída globalmente do Azure Cosmos DB. Para garantir que seu aplicativo possa tolerar o tempo de inatividade do datacenter, habilite pelo menos mais uma região para a conta no portal do Azure Cosmos DB Desenvolvendo com contas do Azure Cosmos DB de várias regiões. Você pode definir a prioridade da região usando o portal Desenvolvendo com contas do Azure Cosmos DB de várias regiões.

Você pode adicionar quantas regiões quiser para a conta e controlar onde ela pode fazer failover fornecendo uma prioridade de failover. Para usar o banco de dados, você precisa fornecer um aplicativo lá também. Quando você fizer isso, seus clientes não terão tempo de inatividade. O SDK de cliente .NET mais recente é auto homing, mas os outros SDKs não são. Ou seja, ele pode detetar a região que está inativa e automaticamente fazer failover para a nova região.

A API para Tabela está habilitada para backups?

Sim, a API para Tabela usa a plataforma do Azure Cosmos DB para backups. Os backups são feitos automaticamente. Para obter mais informações, consulte Backup e restauração online com o Azure Cosmos DB.

A API para Tabela indexa todos os atributos de uma entidade por padrão?

Sim, todos os atributos de uma entidade são indexados por padrão. Para obter mais informações, consulte Azure Cosmos DB: políticas de indexação.

Isso significa que não preciso criar mais de um índice para satisfazer as consultas?

Sim, o Azure Cosmos DB for Table fornece indexação automática de todos os atributos sem qualquer definição de esquema. Essa automação libera os desenvolvedores para se concentrarem no aplicativo em vez de na criação e gerenciamento de índices. Para obter mais informações, consulte Azure Cosmos DB: políticas de indexação.

Posso alterar a política de indexação?

Sim, você pode alterar a política de indexação fornecendo a definição de índice. Você precisa codificar corretamente e escapar das configurações.

A política de indexação só pode ser definida no portal no Data Explorer, navegue até a tabela específica que você deseja alterar e, em seguida, vá para Scale & Settings-Indexing> Policy, faça a alteração desejada e salve.

O Azure Cosmos DB como plataforma parece ter muitos recursos, como classificação, agregações, hierarquia e outras funcionalidades. Você adicionará esses recursos à API para Tabela?

A API para Tabela fornece a mesma funcionalidade de consulta que o armazenamento de Tabela do Azure. Também suporta ordenação, agregações, consultas geoespaciais, hierarquias e um vasto conjunto de funções incorporadas. Para obter mais informações, consulte Consultas SQL.

Quando devo alterar TableThroughput para a API para Table?

Você deve alterar TableThroughput quando uma das seguintes condições se aplicar:

  • Você está executando uma extração, transformação e carregamento (ETL) de dados ou deseja carregar vários dados em um curto período de tempo.
  • Você precisa de mais taxa de transferência do contêiner ou de um conjunto de contêineres no back-end. Por exemplo, você vê que a taxa de transferência usada é maior do que a taxa de transferência provisionada e está sendo limitado. Para obter mais informações, consulte Definir taxa de transferência para contêineres do Azure Cosmos DB.

Posso aumentar ou reduzir a taxa de transferência da minha tabela API for Table?

Sim, você pode usar o painel de escala do portal do Azure Cosmos DB para dimensionar a taxa de transferência. Para obter mais informações, consulte Definir taxa de transferência.

Um TableThroughput padrão está definido para tabelas recém-provisionadas?

Sim, se você não substituir o TableThroughput via app.config e não usar um contêiner pré-criado no Azure Cosmos DB, o serviço criará uma tabela com taxa de transferência de 400.

Há alguma alteração de preços para clientes existentes do serviço de armazenamento de Tabela do Azure?

Nenhum. Não há alteração no preço para clientes existentes de armazenamento de Tabela do Azure.

Como é calculado o preço da API para Tabela?

O preço depende do TableThroughput alocado.

Como faço para lidar com qualquer limitação de taxa nas tabelas na API para oferta de tabela?

Se a taxa de solicitação for maior do que a capacidade da taxa de transferência provisionada para o contêiner subjacente ou um conjunto de contêineres, você receberá um erro e o SDK repetirá a chamada aplicando a política de novas tentativas.

Por que preciso escolher uma taxa de transferência diferente de PartitionKey e RowKey para aproveitar a oferta API for Table do Azure Cosmos DB?

O Azure Cosmos DB define uma taxa de transferência padrão para seu contêiner se você não fornecer uma no arquivo app.config ou por meio do portal.

O Azure Cosmos DB fornece garantias de desempenho e latência, com limites superiores na operação. Essa garantia é possível quando o mecanismo pode impor governança nas operações do locatário. Definir TableThroughput garante que você obtenha a taxa de transferência e a latência garantidas, porque a plataforma reserva essa capacidade e garante o sucesso operacional.

Usando a especificação de taxa de transferência, você pode alterá-la elasticamente para se beneficiar da sazonalidade de seu aplicativo, atender às necessidades de taxa de transferência e economizar custos.

O armazenamento de tabela do Azure tem sido barato para mim, porque pago apenas para armazenar os dados e raramente consulto. A oferta do Azure Cosmos DB for Table parece estar me cobrando, mesmo que eu não tenha realizado uma única transação ou armazenado nada. Pode explicar?

O Azure Cosmos DB foi projetado para ser um sistema baseado em SLA distribuído globalmente com garantias de disponibilidade, latência e taxa de transferência. Quando você reserva a taxa de transferência no Azure Cosmos DB, ela é garantida, ao contrário da taxa de transferência de outros sistemas. O Azure Cosmos DB fornece mais recursos solicitados pelos clientes, como índices secundários e distribuição global.

Nunca recebo uma notificação de cota cheia" (indicando que uma partição está cheia) quando ingero dados no armazenamento de tabela do Azure. Com a API para Tabela, recebo esta mensagem. Esta oferta está a limitar-me e a obrigar-me a alterar a minha aplicação existente?

O Azure Cosmos DB é um sistema baseado em SLA que fornece escala ilimitada, com garantias de latência, taxa de transferência, disponibilidade e consistência. Para garantir um desempenho premium, certifique-se de que o tamanho e o índice de dados sejam gerenciáveis e escaláveis. O limite de 20 GB no número de entidades ou itens por chave de partição é para garantir que fornecemos um ótimo desempenho de pesquisa e consulta. Para garantir que seu aplicativo seja bem dimensionado, mesmo para o Armazenamento do Azure, recomendamos que você não crie uma partição ativa armazenando todas as informações em uma partição e consultando-a.

Então, PartitionKey e RowKey ainda são necessários com a API para Tabela?

Sim. Como a área de superfície da API para Tabela é semelhante à do SDK de armazenamento de Tabela do Azure, a chave de partição fornece uma maneira eficiente de distribuir os dados. A chave de linha é exclusiva dentro dessa partição. A chave de linha precisa estar presente e não pode ser nula como no SDK padrão. O comprimento de RowKey é de 255 bytes e o comprimento de PartitionKey é de 1 KB.

Quais são as mensagens de erro para a API para Tabela?

O Armazenamento de Tabela do Azure e o Azure Cosmos DB for Table usam os mesmos SDKs, portanto, a maioria dos erros são os mesmos.

Por que eu sou limitado quando tento criar muitas tabelas uma após a outra na API para Tabela?

O Azure Cosmos DB é um sistema baseado em SLA que fornece garantias de latência, taxa de transferência, disponibilidade e consistência. Por ser um sistema provisionado, ele reserva recursos para garantir esses requisitos. A taxa rápida de criação de tabelas é detetada e limitada. Recomendamos que você olhe para a taxa de criação de tabelas e baixá-la para menos de 5 por minuto. Lembre-se de que a API para Tabela é um sistema provisionado. No momento em que você provisiona, você começa a pagar por ele.

Como faço para fornecer feedback sobre o SDK ou bugs?

Pode partilhar os seus comentários de uma das seguintes formas: