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-Eigenschaft

  • RowKey-Eigenschaft

  • Timestamp-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 mit einer Größe von bis zu 1 KiB 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 1 KiB 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 Formatierung 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 nullwertbar. Beim Schreiben von Entitäten sind die oben genannten Eigenschaftstypen nullable, 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 Eigenschaftentypen in einem Abfrageanforderungs-URI finden Sie unter Abfragen von Tabellen und Entitäten.

Weitere Informationen