Förstå Table Service-datamodellen

Tabelltjänsten erbjuder strukturerad lagring i form av tabeller. I följande avsnitt beskrivs tabelltjänstens datamodell.

Lagringskonto

Ett lagringskonto är en globalt unik entitet i lagringssystemet. Lagringskontot är den överordnade namnrymden för Table-tjänsten och utgör grunden för auktorisering. Du kan skapa valigt antal tabeller i ett visst lagringskonto, så länge varje tabell har ett unikt namn.

Lagringskontot måste alltid anges i URI:en för begäran. Den grundläggande URI:en för åtkomst till table-tjänsten är följande:

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

Tabeller, entiteter och egenskaper

Tabeller lagrar data som samlingar av entiteter. Entiteter liknar rader. En entitet har en primär nyckel och en uppsättning egenskaper. En egenskap är ett namn, typat värde-par, liknande en kolumn.

Table Service framtvingar inte något schema för tabeller, så två entiteter i samma tabell kan ha olika uppsättningar egenskaper. Utvecklare kan välja att framtvinga ett schema på klientsidan. En tabell kan innehålla val av antal entiteter.

Tabellnamn

Tabellnamn måste följa dessa regler:

  • Tabellnamn måste vara unika inom ett konto.

  • Tabellnamn får bara innehålla alfanumeriska tecken.

  • Tabellnamn får inte börja med ett numeriskt tecken.

  • Tabellnamn är inte case-okänsliga.

  • Tabellnamn måste vara mellan 3 och 63 tecken långa.

  • Vissa tabellnamn är reserverade, inklusive "tabeller". Om du försöker skapa en tabell med ett reserverat tabellnamn returneras felkoden 404 (felaktig begäran).

Dessa regler beskrivs också av det reguljära uttrycket "^[A-Za-z][A-Za-z0-9] {2,62} $".

Tabellnamn bevarar det fall som de skapades med, men är icke-casekänsliga när de används.

Egenskapsnamn

Egenskapsnamn är case-känsliga strängar med en storlek på upp till 255 tecken. Egenskapsnamn bör följa namngivningsreglerna för C#-identifierare.

Anteckning

Vissa C#-identifierare är inte giltiga enligt XML-specifikationen. Dessa identifierare får inte användas i egenskapsnamn eftersom egenskapsnamn skickas via en XML-nyttolast i en begäran mot table-tjänsten.

Viktigt

Egenskapsnamn skickas till table-tjänsten i en URL. Vissa tecken måste vara procentkodade för att visas i en URL med UTF-8 (rekommenderas) eller MBCS. Den här kodningen sker automatiskt när du använder Azure Storage klientbibliotek. Det finns dock vissa tecken som inte är giltiga i URL-sökvägar även när de kodas. Dessa tecken kan inte visas i egenskapsnamn. Kodpunkter som \uE000, som är giltiga i NTFS-filnamn, är inte giltiga Unicode-tecken, så de kan inte användas. Dessutom är vissa ASCII- eller Unicode-tecken, t.ex. kontrolltecken (som 0x00 till 0x1F, \u0081 osv.), inte heller tillåtna. Regler som styr Unicode-strängar i HTTP/1.1 finns i:

Anteckning

Från och med version 2009-04-14 stöder tabelltjänsten inte längre att bindestreck (-) inkluderas i egenskapsnamn.

Egenskapsbegränsningar

En entitet kan ha upp till 255 egenskaper, inklusive 3 systemegenskaper som beskrivs i följande avsnitt. Därför kan användaren inkludera upp till 252 anpassade egenskaper, utöver de tre systemegenskaperna. Den kombinerade storleken för alla data i en entitets egenskaper får inte överskrida 1 MiB.

Systemegenskaper

En entitet har alltid följande systemegenskaper:

  • PartitionKey Egenskapen

  • RowKey Egenskapen

  • Timestamp Egenskapen

Dessa systemegenskaper inkluderas automatiskt för varje entitet i en tabell. Namnen på dessa egenskaper är reserverade och kan inte ändras. Utvecklaren ansvarar för att infoga och uppdatera värdena för PartitionKey och RowKey . Servern hanterar värdet för Timestamp , som inte kan ändras.

Tecken tillåts inte i nyckelfält

Följande tecken tillåts inte i värden för PartitionKey egenskaperna RowKey och :

  • Snedstreck (/)

  • Omsnedstrecket ( \ )

  • Nummertecknet (#)

  • Frågetecknet (?)

  • Kontrolltecken från U+0000 till U+001F, inklusive:

    • Det vågräta tabbtecknet (\t)
    • Radmatningstecknet (\n)
    • Vagnreturtecknet (\r)
  • Kontrolltecken från U+007F till U+009F

PartitionKey-egenskap

Tabeller partitioneras för att stödja belastningsutjämning mellan lagringsnoder. En tabells entiteter ordnas efter partition. En partition är ett efterföljande intervall med entiteter som har samma partitionsnyckelvärde. Partitionsnyckeln är en unik identifierare för partitionen i en viss tabell som anges av PartitionKey egenskapen . Partitionsnyckeln utgör den första delen av en entitets primärnyckel. Partitionsnyckeln kan vara ett strängvärde på upp till 1 KiB i storlek.

Du måste inkludera egenskapen PartitionKey i varje infognings-, uppdaterings- och borttagningsåtgärd.

RowKey-egenskap

Den andra delen av den primära nyckeln är radnyckeln, som anges av RowKey egenskapen . Radnyckeln är en unik identifierare för en entitet inom en viss partition. Tillsammans identifierar PartitionKey och RowKey unikt varje entitet i en tabell.

Radnyckeln är ett strängvärde som kan vara upp till 1 KiB i storlek.

Du måste inkludera egenskapen RowKey i varje infognings-, uppdaterings- och borttagningsåtgärd.

Egenskap för tidsstämpel

Egenskapen Timestamp är ett värde som DateTime behålls på serversidan för att registrera den tid då en entitet senast ändrades. Tabelltjänsten använder egenskapen Timestamp internt för att tillhandahålla optimistisk samtidighet. Värdet för egenskapen för Timestamp en entitet utvecklas varje gång entiteten ändras. Den här egenskapen ska inte anges för insert- eller update-åtgärder (värdet ignoreras).

Egenskapen Timestamp måste uttryckas i något av de godkända ISO 8601 UTC-formaten. Mer information om godkända UTC-format finns i Formatera DateTime-värden.

Egenskapstyper

Table-tjänsten stöder en delmängd av datatyper som definieras av OData Protocol Specification. I följande tabell visas de egenskapstyper som stöds för Table-tjänsten:

OData-datatyp Common Language Runtime-typ Information
Edm.Binary byte[] En matris med byte med en storlek på upp till 64 KiB.
Edm.Boolean bool Ett booleskt värde.
Edm.DateTime DateTime Ett 64-bitars värde uttryckt som Coordinated Universal Time (UTC). Intervallet som DateTime stöds börjar från 12:00 midnatt, 1 januari 1601 E.D. (C.E.), UTC. Intervallet slutar den 31 december 9999. Mer information finns i Formatera DateTime-värden.
Edm.Double double Ett 64-bitars flyttal.
Edm.Guid Guid En 128-bitars globalt unik identifierare.
Edm.Int32 Int32 eller int Ett 32-bitars heltal.
Edm.Int64 Int64 eller long Ett 64-bitars heltal.
Edm.String String Ett UTF-16-kodat värde. Strängvärden kan vara upp till 64 KiB i storlek. Observera att det maximala antalet tecken som stöds är cirka 32 K eller mindre.

Som standard skapas en egenskap som typen String , om du inte anger en annan typ. Om du uttryckligen vill skriva en egenskap anger du dess datatyp med hjälp av lämplig OData-datatyp för åtgärden Infoga entitet eller Uppdatera entitet. Mer information finns i Infoga och uppdatera entiteter.

Tabelltjänsten bevarar inte null värden för egenskaper. När du frågar entiteter är egenskapstyperna ovan inte nullbara. När du skriver entiteter kan ovanstående egenskapstyper ha värdet null, och alla egenskaper med ett värde hanteras som om null nyttolasten inte innehåller den egenskapen.

Exempel som visar hur du filtrerar på de olika egenskapstyperna i en frågebegärande-URI finns i Fråga tabeller och entiteter.

Se även