Noções básicas sobre o modelo de dados do serviço Tabela

O serviço Tabela oferece armazenamento estruturado na forma de tabelas. As seções a seguir descrevem o modelo de dados de serviço Tabela.

Conta de Armazenamento

Uma conta de armazenamento é uma entidade globalmente exclusiva no sistema de armazenamento. A conta de armazenamento é o namespace pai do serviço Tabela e é a base para autorização. Você pode criar qualquer número de tabelas em uma determinada conta de armazenamento, desde que cada tabela seja exclusivamente nomeada.

A conta de armazenamento sempre deve ser especificada no URI de solicitação. O URI base para acessar o serviço Tabela é o seguinte:

https://myaccount.table.core.windows.net  

Tabelas, entidades e propriedades

As tabelas armazenam dados como coleções de entidades. As entidades são semelhantes às linhas. Uma entidade tem uma chave primária e um conjunto de propriedades. Uma propriedade é um nome, par de valor digitado, semelhante a uma coluna.

O serviço Tabela não impõe nenhum esquema para tabelas, de modo que duas entidades na mesma tabela podem ter diferentes conjuntos de propriedades. Os desenvolvedores podem optar por impor um esquema no lado do cliente. Uma tabela pode conter qualquer número de entidades.

Nomes de tabela

Os nomes de tabela devem obedecer a estas regras:

  • Os nomes de tabela devem ser exclusivos em uma conta.

  • Os nomes de tabela devem conter apenas caracteres alfanuméricos.

  • Os nomes de tabela não podem começar com um caractere numérico.

  • Os nomes de tabela diferenciam maiúsculas de minúsculas.

  • Os nomes de tabela devem ter de 3 a 63 caracteres.

  • Alguns nomes de tabela são reservados, incluindo "tabelas". Tentar criar uma tabela com um nome de tabela reservado retorna o código de erro 404 (Solicitação Incorreta).

Essas regras também são descritas pela expressão regular "^[A-Za-z][A-Za-z0-9]{2,62}$".

Os nomes de tabela preservam a forma com que foram criados, mas não diferenciam maiúsculas de minúsculas quando usados.

Nomes de propriedade

Os nomes de propriedade são cadeias de caracteres que diferenciam maiúsculas de minúsculas de até 255 caracteres. Os nomes de propriedade devem seguir as regras de nomenclatura para identificadores C#.

Observação

Alguns identificadores C# não são válidos de acordo com a especificação XML. Esses identificadores não podem ser usados em nomes de propriedade, pois estes são enviados por uma carga de XML em uma solicitação no serviço Tabela.

Importante

Os nomes de propriedade são passados para o serviço Tabela em uma URL. Determinados caracteres devem ser codificados por porcentagem para aparecerem em uma URL, usando UTF-8 (preferencial) ou MBCS. Essa codificação ocorre automaticamente quando você usa as bibliotecas de cliente do Armazenamento do Azure. No entanto, há determinados caracteres que não são válidos em caminhos URL mesmo quando codificados. Esses caracteres não podem aparecer em nomes de propriedade. Os pontos de código, como \uE000, quando válidos em nomes de arquivo NTFS, não são caracteres Unicode válidos, de modo que não podem ser usados. Além disso, não há permissão também para alguns caracteres ASCII ou Unicode, como caracteres de controle (0x00 a 0x1F, \u0081, etc.). Para regras que administram cadeias de caracteres Unicode em HTTP/1.1, consulte:

Observação

A partir da versão 2009-04-14, o serviço Tabela não conta mais com suporte, incluindo o caractere traço (-) em nomes de propriedade.

Limitações de propriedade

Uma entidade pode ter até 255 propriedades, incluindo 3 propriedades do sistema, descritas na seção a seguir. Dessa forma, o usuário pode incluir até 252 propriedades personalizadas, além das 3 propriedades do sistema. O tamanho combinado de todos os dados nas propriedades de uma entidade não pode exceder 1 MiB.

Propriedades do Sistema

Uma entidade sempre tem as seguintes propriedades do sistema:

  • Propriedade PartitionKey

  • Propriedade RowKey

  • Propriedade Timestamp

Essas propriedades do sistema são incluídas automaticamente para cada entidade em uma tabela. Os nomes dessas propriedades são reservados e não podem ser alterados. O desenvolvedor é responsável por inserir e atualizar os valores de PartitionKey e RowKey. O servidor gerencia o valor de Timestamp, que não pode ser modificado.

Caracteres não permitidos em campos de chave

Os caracteres a seguir não são permitidos em valores para as propriedades PartitionKey e RowKey:

  • O caractere de barra (/)

  • O caractere de barra invertida (\)

  • A tecla de cerquilha (#)

  • O caractere de ponto de interrogação (?)

  • Caracteres de controle de U+0000 a U+001F, incluindo:

    • O caractere de guia horizontal (\t)
    • A caractere de avanço de linha (\n)
    • O caractere de retorno de carro (\r)
  • Caracteres de controle de U+007F a U+009F

Propriedade PartitionKey

As tabelas são particionadas para oferecer suporte ao balanceamento de carga entre os nós de armazenamento. As entidades de uma tabela são organizadas por partição. Uma partição é um intervalo consecutivo de entidades que tenham o mesmo valor de chave de partição. A chave de partição é um identificador exclusivo para a partição dentro de uma determinada tabela, especificada pela propriedade PartitionKey. A chave de partição compõe a primeira parte da chave primária de uma entidade. A chave de partição pode ser um valor de cadeia de caracteres de até 1 KiB de tamanho.

Você deve incluir a propriedade PartitionKey em cada operação de inserção, atualização e exclusão.

Propriedade RowKey

A segunda parte da chave primária é a chave de linha, especificada pela propriedade RowKey. A chave de linha é um identificador exclusivo para uma entidade em uma determinada partição. Juntas, as propriedades PartitionKey e RowKey identificam exclusivamente cada entidade em uma tabela.

A chave de linha é um valor de cadeia de caracteres que pode ter até 1 KiB de tamanho.

Você deve incluir a propriedade RowKey em cada operação de inserção, atualização e exclusão.

Propriedade Timestamp

A propriedade Timestamp é um valor de DateTime que é mantido no servidor para registrar a hora em que uma entidade foi modificada pela última vez. O serviço Tabela usa a propriedade Timestamp internamente para fornecer simultaneidade otimista. O valor da Timestamp propriedade de uma entidade avança cada vez que a entidade é modificada. Essa propriedade deve ser definida como operações de inserção ou atualização (o valor será ignorado).

A Timestamp propriedade deve ser expressa em um dos formatos ISO 8601 UTC aceitos. Para obter mais informações sobre formatos UTC aceitos, consulte Formatação de valores datetime.

Tipos de propriedade

O serviço Tabela dá suporte a um subconjunto de tipos de dados definidos pela Especificação do Protocolo OData. A tabela a seguir mostra os tipos de propriedade com suporte para o serviço Tabela:

Tipo de dados OData Tipo de Common Language Runtime Detalhes
Edm.Binary byte[] Uma matriz de bytes de até 64 KiB de tamanho.
Edm.Boolean bool Um valor booliano.
Edm.DateTime DateTime Um valor de 64 bits expressado como Tempo Universal Coordenado (UTC). O intervalo DateTime com suporte começa à 00:00 de 1º de janeiro de 1601 D.C. (C.E.), UTC. O intervalo termina em 31 de dezembro de 9999. Para obter mais informações, consulte Formatação de valores datetime.
Edm.Double double Um valor de ponto flutuante de 64 bits.
Edm.Guid Guid Um identificador global exclusivo de 128 bits.
Edm.Int32 Int32 ou int Um inteiro de 32 bits.
Edm.Int64 Int64 ou long Um inteiro de 64 bits.
Edm.String String Um valor codificado em UTF-16. Os valores de cadeia de caracteres podem ter até 64 KiB de tamanho. Observe que o número máximo de caracteres com suporte é de cerca de 32 K ou menos.

Por padrão, uma propriedade é criada como o tipo String, a menos que você especifique um tipo diferente. Para digitar explicitamente uma propriedade, especifique seu tipo de dados usando o tipo de dados OData apropriado para uma operação Inserir Entidade ou Atualizar Entidade . Para obter mais informações, consulte Inserindo e atualizando entidades.

O serviço Tabela não persiste null valores para propriedades. Ao consultar entidades, os tipos de propriedade acima são todos não anuláveis. Ao gravar entidades, os tipos de propriedade acima são todos anuláveis e qualquer propriedade com um null valor é tratada como se o conteúdo não contivesse essa propriedade.

Para obter exemplos que mostram como filtrar os vários tipos de propriedade em um URI de solicitação de consulta, consulte Consultando tabelas e entidades.

Consulte Também