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 secções seguintes descrevem o modelo de dados do serviço Tabela.

Conta de Armazenamento

Uma conta de armazenamento é uma entidade globalmente exclusiva no sistema de armazenamento. A conta de armazenamento é o espaço de nomes principal do serviço Tabela e é a base para autorização. Pode criar qualquer número de tabelas numa determinada conta de armazenamento, desde que cada tabela tenha um nome exclusivo.

A conta de armazenamento tem de ser sempre especificada no URI do pedido. O URI base para aceder ao 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 typed-value, semelhante a uma coluna.

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

Nomes das Tabelas

Os nomes das tabelas têm de estar em conformidade com estas regras:

  • Os nomes das tabelas têm de ser exclusivos numa conta.

  • Os nomes das tabelas podem conter apenas carateres alfanuméricos.

  • Os nomes das tabelas não podem começar com um caráter numérico.

  • Os nomes das tabelas não são sensíveis a maiúsculas e minúsculas.

  • Os nomes das tabelas têm de ter entre 3 e 63 carateres.

  • Alguns nomes de tabelas estão reservados, incluindo "tabelas". Tentar criar uma tabela com um nome de tabela reservado devolve o código de erro 404 (Pedido Incorreto).

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

Os nomes das tabelas preservam o caso com que foram criados, mas não são sensíveis a maiúsculas e minúsculas quando utilizados.

Nomes de Propriedades

Os nomes das propriedades são cadeias sensíveis a maiúsculas e minúsculas até 255 carateres de tamanho. Os nomes de propriedades devem seguir regras de nomenclatura para identificadores C#.

Nota

Alguns identificadores C# não são válidos de acordo com a especificação XML. Estes identificadores podem não ser utilizados em nomes de propriedades, porque os nomes de propriedades são enviados através de um payload XML num pedido contra o serviço Tabela.

Importante

Os nomes das propriedades são transmitidos ao serviço Tabela num URL. Determinados carateres têm de estar codificados por percentagem para aparecerem num URL com UTF-8 (preferencial) ou MBCS. Esta codificação ocorre automaticamente quando utiliza as bibliotecas de cliente do Armazenamento do Azure. No entanto, existem determinados carateres que não são válidos em caminhos de URL, mesmo quando codificados. Estes carateres não podem aparecer em nomes de propriedades. Os pontos de código como \uE000, embora válidos em nomes de ficheiro NTFS, não são carateres Unicode válidos, pelo que não podem ser utilizados. Além disso, alguns carateres ASCII ou Unicode, como carateres de controlo (0x00 para 0x1F, \u0081, etc.), também não são permitidos. Para regras que regem cadeias Unicode em HTTP/1.1, consulte:

Nota

A partir da versão 2009-04-14, o serviço Tabela já não suporta, incluindo o caráter de travessão (-) em nomes de propriedades.

Limitações da Propriedade

Uma entidade pode ter até 255 propriedades, incluindo 3 propriedades do sistema descritas na secção seguinte. Por conseguinte, o utilizador 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 tem sempre as seguintes propriedades do sistema:

  • PartitionKey propriedade

  • RowKey propriedade

  • Timestamp propriedade

Estas propriedades do sistema são automaticamente incluídas para cada entidade numa tabela. Os nomes destas propriedades estão reservados e não podem ser alterados. O programador é responsável por inserir e atualizar os valores de PartitionKey e RowKey. O servidor gere o valor de Timestamp, que não pode ser modificado.

Carateres Não Permitidos em Campos de Chave

Os seguintes carateres não são permitidos em valores para as PartitionKey propriedades e RowKey :

  • O caráter de barra (/) para a frente

  • O caráter de barra invertida (\)

  • O caráter de sinal de número (#)

  • O caráter de ponto de interrogação (?)

  • Controlar carateres de U+0000 a U+001F, incluindo:

    • O caráter de separador horizontal (\t)
    • O caráter linefeed (\n)
    • O caráter de retorno de carruagem (\r)
  • Controlar carateres de U+007F para U+009F

Propriedade PartitionKey

As tabelas são particionadas para suportar o balanceamento de carga entre nós de armazenamento. As entidades de uma tabela são organizadas por partição. Uma partição é um intervalo consecutivo de entidades que possuem o mesmo valor de chave de partição. A chave de partição é um identificador exclusivo da partição numa determinada tabela, especificada pela PartitionKey propriedade. A chave de partição forma a primeira parte da chave primária de uma entidade. A chave de partição pode ser um valor de cadeia até 1 KiB de tamanho.

Tem de incluir a PartitionKey propriedade em cada operação de inserção, atualização e eliminação.

Propriedade RowKey

A segunda parte da chave primária é a chave de linha, especificada pela RowKey propriedade. A chave de linha é um identificador exclusivo para uma entidade numa determinada partição. Juntos, e PartitionKeyRowKey identifiquem exclusivamente todas as entidades dentro de uma tabela.

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

Tem de incluir a RowKey propriedade em cada operação de inserção, atualização e eliminação.

Propriedade carimbo de data/hora

A Timestamp propriedade é um DateTime valor que é mantido do lado do servidor para registar a hora em que uma entidade foi modificada pela última vez. O serviço Tabela utiliza a Timestamp propriedade internamente para proporcionar simultaneidade otimista. O valor da Timestamp propriedade de uma entidade avança sempre que a entidade é modificada. Esta propriedade não deve ser definida em operações de inserção ou atualização (o valor será ignorado).

A Timestamp propriedade tem de ser expressa num dos formatos ISO 8601 UTC aceites. Para obter mais informações sobre os formatos UTC aceites, veja Formatar valores DateTime.

Tipos de Propriedade

O serviço Tabela suporta um subconjunto de tipos de dados definidos pela Especificação do Protocolo OData. A tabela seguinte mostra os tipos de propriedade suportados para o serviço Tabela:

Tipo de Dados OData Tipo de Runtime de Idioma Comum Detalhes
Edm.Binary byte[] Uma matriz de bytes até 64 KiB de tamanho.
Edm.Boolean bool Um valor booleano.
Edm.DateTime DateTime Um valor de 64 bits expresso como Hora Universal Coordenada (UTC). O intervalo suportado DateTime começa a partir das 12:00, 1 de janeiro de 1601 D.C. (C.E.), UTC. O intervalo termina em 31 de dezembro de 9999. Para obter mais informações, veja Formatting DateTime values (Formatar valores DateTime).
Edm.Double double Um valor de vírgula flutuante de 64 bits.
Edm.Guid Guid Um identificador exclusivo global de 128 bits.
Edm.Int32 Int32 ou int Um número inteiro de 32 bits.
Edm.Int64 Int64 ou long Um número inteiro de 64 bits.
Edm.String String Um valor codificado UTF-16. Os valores de cadeia podem ter até 64 KiB de tamanho. Tenha em atenção que o número máximo de carateres suportado é de cerca de 32 K ou menos.

Por predefinição, é criada uma propriedade como tipo String, a menos que especifique um tipo diferente. Para escrever explicitamente uma propriedade, especifique o respetivo tipo de dados utilizando o tipo de dados OData adequado para uma operação Inserir Entidade ou Atualizar Entidade . Para obter mais informações, veja Inserir e Atualizar Entidades.

O serviço Tabela não persiste null nos valores das propriedades. Ao consultar entidades, os tipos de propriedade acima não são nulares. Ao escrever entidades, os tipos de propriedade acima são nulo e qualquer propriedade com um null valor é processada como se o payload não tivesse essa propriedade.

Para obter exemplos que mostram como filtrar os vários tipos de propriedade num URI de pedido de consulta, veja Consultar Tabelas e Entidades.

Consulte também