Informazioni sul modello di dati del servizio tabelle

Il servizio tabelle offre un'archiviazione strutturata sotto forma di tabelle. Nelle sezioni seguenti viene illustrato il modello di dati del servizio tabelle.

Account di archiviazione

Un account di archiviazione è un'entità univoca globale all'interno del sistema di archiviazione. L'account di archiviazione è lo spazio dei nomi padre per il servizio tabelle ed è la base per l'autorizzazione. È possibile creare un numero qualsiasi di tabelle in un determinato account di archiviazione, purché ogni tabella sia denominata in modo univoco.

L'account di archiviazione deve essere sempre specificato nell'URI di richiesta. L'URI di base per accedere al servizio tabelle è il seguente:

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

Tabelle, entità e proprietà

Nelle tabelle i dati sono archiviati come raccolte di entità. Le entità sono simili alle righe. Un'entità ha una chiave primaria e un set di proprietà. Una proprietà è una coppia di nome e valore tipizzato, simile a una colonna.

Con il servizio tabelle non viene imposto alcuno schema per le tabelle, pertanto due entità nella stessa tabella possono avere set di proprietà diversi. Gli sviluppatori possono scegliere di applicare uno schema sul lato client. Una tabella può contenere un numero infinito di entità.

Nomi di tabella

I nomi delle tabelle devono essere conformi alle regole seguenti:

  • I nomi delle tabelle devono essere univoci in un account.

  • I nomi delle tabelle devono contenere solo caratteri alfanumerici.

  • I nomi delle tabelle non possono iniziare con un carattere numerico.

  • Ai nomi delle tabelle non si applica la distinzione tra maiuscole e minuscole.

  • I nomi delle tabelle devono avere una lunghezza compresa tra 3 e 63 caratteri.

  • I nomi delle tabelle sono riservati, incluso "tabelle". Se si tenta di creare una tabella con un nome di tabella riservato, viene restituito il codice di errore 404 (Richiesta non valida).

Queste regole sono descritte anche dall'espressione regolare "^[A-Za-z][A-Za-z0-9]{2,62}$".

I nomi di tabella mantengono la distinzione tra maiuscole e minuscole con cui sono stati creati, ma quando vengono utilizzati tale distinzione è irrilevante.

Nomi di proprietà

I nomi di proprietà sono stringhe con distinzione tra maiuscole e minuscole con lunghezza massima di 255 caratteri. I nomi delle proprietà devono seguire le regole di denominazione per gli identificatori C#.

Nota

Alcuni identificatori C# non sono validi in base alla specifica XML. Questi identificatori non possono essere utilizzati nei nomi di proprietà, poiché questi ultimi vengono inviati tramite un payload XML in una richiesta nel servizio tabelle.

Importante

I nomi di proprietà vengono passati al servizio tabelle in un URL. Alcuni caratteri devono essere codificati in percentuale per essere visualizzati nell'URL, tramite UTF-8 (scelta consigliata) o Multibyte Character Set. Questa codifica si verifica automaticamente quando si usano le librerie client di Archiviazione di Azure. Tuttavia, alcuni caratteri specifici non sono validi nei percorsi URL anche se codificati. Questi caratteri non possono essere visualizzati nei nomi di proprietà. Gli elementi di codice come \uE000, validi nei nomi di file NTFS, non sono caratteri Unicode validi, pertanto non possono essere utilizzati. Inoltre, anche alcuni caratteri ASCII o Unicode, come i caratteri di controllo (da 0x00 a 0x1F, \u0081 e così via), non sono consentiti. Per le regole che controllano le stringhe Unicode in HTTP/1.1, vedere:

Nota

A partire dalla versione 2009-04-14, il servizio tabelle non supporta più l'inserimento del carattere trattino (-) nei nomi di proprietà.

Limitazioni relative alle proprietà

Un'entità può contenere fino a 255 proprietà, incluse 3 proprietà di sistema descritte nella sezione seguente. Pertanto, l'utente può includere fino a 252 proprietà personalizzate, oltre alle 3 proprietà di sistema. Le dimensioni combinate di tutti i dati nelle proprietà di un'entità non possono superare 1 MiB.

Proprietà di sistema

Un'entità dispone sempre delle proprietà di sistema seguenti:

  • ProprietàPartitionKey

  • ProprietàRowKey

  • ProprietàTimestamp

Queste proprietà di sistema sono incluse automaticamente per ogni entità di una tabella. I nomi di queste proprietà sono riservati e non possono essere modificati. Lo sviluppatore è responsabile dell'inserimento e dell'aggiornamento dei valori di PartitionKey e RowKey. Il server gestisce il valore di Timestamp, che non può essere modificato.

Caratteri non consentiti nei campi chiave

I caratteri seguenti non sono consentiti nei valori delle proprietà PartitionKey e RowKey :

  • Carattere barra (/)

  • Carattere barra rovesciata (\)

  • Simbolo del cancelletto (#)

  • Punto interrogativo (?)

  • Caratteri di controllo da U+0000 a U+001F, inclusi:

    • Il carattere di tabulazione orizzontale (\t)
    • Il carattere di avanzamento riga (\n)
    • Il carattere di ritorno a capo (\r)
  • Caratteri di controllo da U+007F a U+009F

Proprietà PartitionKey

Le tabelle sono partizionate per supportare il bilanciamento del carico tra i nodi di archiviazione. Le entità di una tabella sono organizzate tramite le partizioni. Una partizione è un intervallo consecutivo di entità che hanno lo stesso valore di chiave di partizione. La chiave di partizione è un identificatore univoco per la partizione di una determinata tabella, specificato dalla proprietà PartitionKey. La chiave di partizione costituisce la prima parte della chiave primaria di un'entità. La chiave di partizione può essere un valore stringa di dimensioni fino a 1 KiB.

È necessario includere la proprietà PartitionKey in ogni operazione di inserimento, aggiornamento ed eliminazione.

Proprietà RowKey

La seconda parte della chiave primaria è la chiave di riga, specificata dalla proprietà RowKey. La chiave di riga è un identificatore univoco per un’entità all'interno di una determinata partizione. Insieme, PartitionKey e RowKey identificano in modo univoco ogni entità in una tabella.

La chiave di riga è un valore stringa con dimensioni massime di 1 KiB.

È necessario includere la proprietà RowKey in ogni operazione di inserimento, aggiornamento ed eliminazione.

Proprietà Timestamp

La proprietà Timestamp è un valore DateTime gestito sul lato server per registrare l'ora dell'ultima modifica di un'entità. Il servizio tabelle utilizza la proprietà Timestamp internamente per fornire concorrenza ottimistica. Il valore della Timestamp proprietà per un'entità avanza ogni volta che l'entità viene modificata. È consigliabile non impostare questa proprietà in operazioni di inserimento o aggiornamento (il valore viene ignorato).

La Timestamp proprietà deve essere espressa in uno dei formati ISO 8601 UTC accettati. Per altre informazioni sui formati UTC accettati, vedere Formattazione dei valori DateTime.

Tipi di proprietà

Il servizio tabelle supporta un subset di tipi di dati definiti dalla specifica del protocollo OData. Nella tabella seguente sono indicati i tipi di proprietà supportati per il servizio tabelle:

Tipo di dati OData Tipo di Common Language Runtime Dettagli
Edm.Binary byte[] Matrice di byte fino a 64 KiB di dimensioni.
Edm.Boolean bool Valore booleano.
Edm.DateTime DateTime Un valore a 64 bit espresso come Coordinated Universal Time (UTC). L'intervallo DateTime supportato inizia a mezzanotte (12:00) del 1° gennaio 1601 d.C. (C.E.), UTC. L'intervallo termina il 31 dicembre 9999. Per altre informazioni, vedere Formattazione dei valori DateTime.
Edm.Double double Un valore a virgola mobile a 64 bit.
Edm.Guid Guid Un identificatore univoco globale a 128 bit.
Edm.Int32 Int32 o int Un valore integer a 32 bit.
Edm.Int64 Int64 o long Un valore integer a 64 bit.
Edm.String String Un valore con codifica UTF-16. I valori stringa possono essere fino a 64 KiB di dimensioni. Si noti che il numero massimo di caratteri supportati è di circa 32 K o meno.

Per impostazione predefinita, una proprietà viene creata come tipo String, a meno che non si specifichi un tipo diverso. Per digitare in modo esplicito una proprietà, specificare il tipo di dati usando il tipo di dati OData appropriato per un'operazione Inserisci entità o Aggiorna entità . Per altre informazioni, vedere Inserimento e aggiornamento di entità.

Il servizio Tabelle non mantiene null i valori per le proprietà. Quando si esegue una query sulle entità, i tipi di proprietà precedenti sono tutti non nullable. Quando si scrivono entità, i tipi di proprietà precedenti sono tutti nullable e qualsiasi proprietà con un null valore viene gestita come se il payload non contiene tale proprietà.

Per esempi che illustrano come filtrare i vari tipi di proprietà in un URI della richiesta di query, vedere Esecuzione di query su tabelle ed entità.

Vedere anche