Grundlegendes zum Tabellenspeicherdienst-Datenmodell
Der Tabellendienst stellt strukturierten Speicher in Form von Tabellen bereit. In den folgenden Abschnitten wird das Tabellendienstdatenmodell beschrieben.
Speicherkonto
Ein Speicherkonto ist eine im Speichersystem global eindeutige Entität. Das Speicherkonto ist der übergeordnete Namespace für den Tabellendienst und die Grundlage für die Autorisierung. Sie können eine beliebige Anzahl von Tabellen innerhalb eines Speicherkontos erstellen, solange jede Tabelle eindeutig benannt ist.
Das Speicherkonto muss im Anforderungs-URI immer angegeben werden. Der Basis-URI für den Zugriff auf den Tabellendienst lautet wie folgt:
https://myaccount.table.core.windows.net
Tabellen, Entitäten und Eigenschaften
Tabellen speichern Daten als Auflistungen von Entitäten. Entitäten sind Zeilen ähnlich. Eine Entität besitzt einen Primärschlüssel und einen Satz von Eigenschaften. Eine Eigenschaft ist ein Paar aus Name und typisiertem Wert ähnlich einer Spalte.
Der Tabellendienst erzwingt keinerlei Schema für Tabellen, sodass zwei Entitäten in derselben Tabelle unterschiedliche Sätze von Eigenschaften aufweisen können. Entwickler können bei Bedarf clientseitig ein Schema erzwingen. Eine Tabelle kann eine beliebige Anzahl von Entitäten enthalten.
Tabellennamen
Tabellennamen müssen den folgenden Regeln entsprechen:
Tabellennamen müssen innerhalb eines Kontos eindeutig sein.
Tabellennamen dürfen nur alphanumerische Zeichen enthalten.
Tabellennamen dürfen nicht mit einem numerischen Zeichen beginnen.
Bei Tabellennamen wird zwischen Groß- und Kleinschreibung nicht unterschieden.
Tabellennamen müssen zwischen 3 und 63 Zeichen lang sein.
Einige Tabellennamen sind reserviert, einschließlich dem Namen "Tabellen". Bei dem Versuch, eine Tabelle mit einem reservierten Tabellennamen zu erstellen, wird der Fehlercode 404 (ungültige Anforderung) zurückgegeben.
Diese Regeln werden auch durch den regulären Ausdruck "^[A-Za-z][A-Za-z0-9]{2,62}$" beschrieben.
Tabellennamen behalten die Groß- und Kleinschreibung bei, mit der sie erstellt wurden, bei der Verwendung der Namen wird jedoch nicht zwischen Groß- und Kleinschreibung unterschieden.
Eigenschaftsnamen
Eigenschaftsnamen können bis zu 255 Zeichen lang sein. Die Groß- und Kleinschreibung wird berücksichtigt. Eigenschaftennamen sollten den Benennungsregeln für C#-Bezeichner folgen.
Hinweis
Einige C#-Bezeichner sind gemäß der XML-Spezifikation ungültig. Diese Bezeichner dürfen nicht in Eigenschaftsnamen verwendet werden, da Eigenschaftsnamen über eine XML-Nutzlast in einer Anforderung an den Tabellendienst gesendet werden.
Wichtig
Eigenschaftsnamen werden in einer URL an den Tabellendienst übergeben. Bestimmte Zeichen müssen in einer URL mit Prozentzeichen codiert sein, wobei UTF-8 (empfohlen) oder MBCS zu verwenden ist. Diese Codierung erfolgt automatisch, wenn Sie die Azure Storage-Clientbibliotheken verwenden. Allerdings gibt es bestimmte Zeichen, die auch codiert in URL-Pfaden nicht gültig sind. Diese Zeichen dürfen nicht in Eigenschaftsnamen verwendet werden. Codepunkte wie \uE000 sind zwar in NTFS-Dateinamen gültig, stellen aber keine gültigen Unicode-Zeichen dar und dürfen deshalb nicht verwendet werden. Darüber hinaus sind einige ASCII- und Unicode-Zeichen, z. B. Steuerzeichen (0x00 bis 0x1F, \u0081 usw.), ebenfalls nicht zulässig. Weitere Informationen zu Regeln für Unicode-Zeichenfolgen in HTTP/1.1 finden Sie unter:
Hinweis
Ab Version 2009-04-14 unterstützt der Tabellendienst keine Eigenschaftsnamen mehr, die einen Bindestrich (-) enthalten.
Einschränkungen bei Eigenschaften
Eine Entität kann über bis zu 255 Eigenschaften verfügen, einschließlich 3 Systemeigenschaften, die im folgenden Abschnitt beschrieben werden. Der Benutzer kann somit bis zu 252 benutzerdefinierte Eigenschaften zusätzlich zu den 3 Systemeigenschaften definieren. Die kombinierte Größe aller Daten in den Eigenschaften einer Entität darf 1 MiB nicht überschreiten.
Systemeigenschaften
Eine Entität beinhaltet immer die folgenden Systemeigenschaften:
PartitionKey
-EigenschaftRowKey
-EigenschaftTimestamp
-Eigenschaft
Diese Systemeigenschaften werden für jede Entität in einer Tabelle automatisch hinzugefügt. Die Namen dieser Eigenschaften sind reserviert und können nicht geändert werden. Der Entwickler ist verantwortlich dafür, die Werte von PartitionKey
und RowKey
einzufügen und zu aktualisieren. Der Wert von Timestamp
wird vom Server verwaltet und kann nicht geändert werden.
Zeichen, die in Schlüsselfeldern nicht zulässig sind
Die folgenden Zeichen sind in den Werten für die Eigenschaften PartitionKey
und RowKey
nicht zulässig:
Schrägstrich (/)
Umgekehrter Schrägstrich (\)
Nummernzeichen (#)
Fragezeichen (?)
Steuerzeichen von U+0000 bis U+001F, einschließlich:
- Das horizontale Tabulatorzeichen (\t)
- Das Zeilenvorschubzeichen (\n)
- Das Wagenrücklaufzeichen (\r)
Steuerzeichen von U+007F bis U+009F
PartitionKey-Eigenschaft
Tabellen sind partitioniert, um den Lastenausgleich zwischen verschiedenen Speicherknoten zu unterstützen. Die Entitäten einer Tabelle sind nach Partitionen organisiert. Eine Partition ist ein zusammenhängender Bereich von Entitäten, die denselben Partitionsschlüsselwert besitzen. Der Partitionsschlüssel ist ein eindeutiger Bezeichner für die Partition innerhalb einer Tabelle, angegeben durch die PartitionKey
-Eigenschaft. Der Partitionsschlüssel stellt den ersten Teil des Primärschlüssels einer Entität dar. Der Partitionsschlüssel kann ein Zeichenfolgenwert von bis zu 1024 Zeichen sein.
Sie müssen die PartitionKey
-Eigenschaft bei jedem Einfüge-, Update- und Löschvorgang mit angeben.
RowKey-Eigenschaft
Der zweite Teil des Primärschlüssels ist der Zeilenschlüssel, angegeben durch die RowKey
-Eigenschaft. Der Zeilenschlüssel ist ein eindeutiger Bezeichner für eine Entität innerhalb einer Partition. Zusammen identifizieren PartitionKey
und RowKey
eindeutig jede Entität innerhalb einer Tabelle.
Der Zeilenschlüssel ist ein Zeichenfolgenwert, der bis zu 1024 Zeichen groß sein kann.
Sie müssen die RowKey
-Eigenschaft bei jedem Einfüge-, Update- und Löschvorgang mit angeben.
Timestamp-Eigenschaft
Die Timestamp
-Eigenschaft ist ein DateTime
-Wert, der serverseitig verwaltet wird, um so die Zeit zu erfassen, zu der eine Entität zuletzt geändert wurde. Der Tabellendienst verwendet die Timestamp
-Eigenschaft intern, um vollständige Parallelität bereitzustellen. Der Wert der Timestamp
-Eigenschaft für eine Entität wird bei jeder Änderung der Entität erhöht. Diese Eigenschaft sollte nicht für Einfüge- und Updatevorgänge festgelegt werden (der Wert wird ignoriert).
Die Timestamp
-Eigenschaft muss in einem der akzeptierten ISO 8601 UTC-Formate ausgedrückt werden. Weitere Informationen zu akzeptierten UTC-Formaten finden Sie unter Formatieren von DateTime-Werten.
Eigenschaftentypen
Der Tabellendienst unterstützt eine Teilmenge von Datentypen, die durch die OData-Protokollspezifikation definiert werden. In der folgenden Tabelle sind die unterstützten Datentypen für den Tabellendienst aufgeführt:
OData-Datentyp | Common Language Runtime-Typ | Details |
---|---|---|
Edm.Binary |
byte[] |
Ein Array von Bytes mit einer Größe von bis zu 64 KiB. |
Edm.Boolean |
bool |
Ein boolescher Wert. |
Edm.DateTime |
DateTime |
Ein 64-Bit-Wert, ausgedrückt als koordinierte Weltzeit (UTC). Der unterstützte DateTime -Bereich beginnt um 12:00 Mitternacht am 1. Januar 1601 n. Chr. (C.E.), UTC. Der Bereich endet am 31. Dezember 9999. Weitere Informationen finden Sie unter Formatieren von DateTime-Werten. |
Edm.Double |
double |
Ein 64-Bit-Gleitkommawert. |
Edm.Guid |
Guid |
Ein 128-Bit-GUID. |
Edm.Int32 |
Int32 oder int |
Eine 32-Bit-Ganzzahl. |
Edm.Int64 |
Int64 oder long |
Eine 64-Bit-Ganzzahl. |
Edm.String |
String |
Ein UTF-16-codierter Wert. Zeichenfolgenwerte können bis zu 64 KiB groß sein. Beachten Sie, dass die maximale Anzahl der unterstützten Zeichen etwa 32 K oder weniger beträgt. |
Standardmäßig wird eine Eigenschaft mit dem Typ String
erstellt, es sei denn, Sie geben einen anderen Typ an. Um eine Eigenschaft explizit einzugeben, geben Sie ihren Datentyp an, indem Sie den entsprechenden OData-Datentyp für einen Vorgang Entität einfügen oder Entität aktualisieren verwenden. Weitere Informationen finden Sie unter Einfügen und Aktualisieren von Entitäten.
Der Tabellendienst speichert null
keine Werte für Eigenschaften. Beim Abfragen von Entitäten sind die oben genannten Eigenschaftstypen nicht nullfähig. Beim Schreiben von Entitäten sind alle oben genannten Eigenschaftstypen nullfähig, und jede Eigenschaft mit einem null
Wert wird so behandelt, als ob die Nutzlast diese Eigenschaft nicht enthalten würde.
Beispiele zum Filtern nach den verschiedenen Eigenschaftstypen in einem Abfrageanforderungs-URI finden Sie unter Abfragen von Tabellen und Entitäten.