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 det överordnade namnområdet för Table-tjänsten och utgör grunden för auktorisering. Du kan skapa valfritt antal tabeller i ett visst lagringskonto, så länge varje tabell har ett unikt namn.

Lagringskontot måste alltid anges i begärande-URI:n. Bas-URI:n 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ärnyckel och en uppsättning egenskaper. En egenskap är ett namn, typat värdepar, som liknar en kolumn.

Tabelltjänsten tillämpar 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 valfritt antal entiteter.

Tabellnamn

Tabellnamn måste överensstämma med dessa regler:

  • Tabellnamn måste vara unika i ett konto.

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

  • Tabellnamn kan inte börja med ett numeriskt tecken.

  • Tabellnamn är skiftlägesokä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 skiftläge som de skapades med, men är skiftlägesokänsliga när de används.

Egenskapsnamn

Egenskapsnamn är skiftlägeskänsliga strängar upp till 255 tecken stora. Egenskapsnamn bör följa namngivningsreglerna för C#-identifierare.

Anteckning

Vissa C#-identifierare är inte giltiga enligt XML-specifikationen. Dessa identifierare kanske inte används i egenskapsnamn, eftersom egenskapsnamn skickas via en XML-nyttolast i en begäran mot Table-tjänsten.

Viktigt

Egenskapsnamn skickas till tabelltjä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-klientbiblioteken. 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, även om de är giltiga i NTFS-filnamn, är inte giltiga Unicode-tecken, så de kan inte användas. Dessutom tillåts inte vissa ASCII- eller Unicode-tecken, t.ex. kontrolltecken (0x00 till 0x1F, \u0081 osv.). Regler som styr Unicode-strängar i HTTP/1.1 finns i:

Anteckning

Från och med version 2009-04-14 har tabelltjänsten inte längre stöd för att inkludera bindestreck (-) i egenskapsnamn.

Egenskapsbegränsningar

En entitet kan ha upp till 255 egenskaper, inklusive 3 systemegenskaper som beskrivs i följande avsnitt. Användaren kan därför inkludera upp till 252 anpassade egenskaper utöver de tre systemegenskaperna. Den kombinerade storleken på alla data i en entitets egenskaper får inte överstiga 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 PartitionKey för och RowKey. Servern hanterar värdet 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 och RowKey :

  • Snedstreckstecknet (/)

  • Omvänt snedstreck (\)

  • Tecknet för nummertecken (#)

  • Frågetecknet (?)

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

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

PartitionKey-egenskap

Tabeller är partitionerade för att stödja belastningsutjämning mellan lagringsnoder. En tabells entiteter ordnas efter partition. En partition är ett efterföljande intervall av 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 upp till 1 KiB i storlek.

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

Egenskapen RowKey

Den andra delen av primärnyckeln är radnyckeln, som anges av RowKey egenskapen . Radnyckeln är en unik identifierare för en entitet inom en viss partition. PartitionKey Tillsammans identifierar 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 DateTime värde som underhålls på serversidan för att registrera när en entitet senast ändrades. Tabelltjänsten använder Timestamp egenskapen internt för att ge optimistisk samtidighet. Värdet för Timestamp egenskapen för en entitet avancerar varje gång entiteten ändras. Den här egenskapen bör inte anges för infognings- eller uppdateringså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

Tabelltjä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 tabelltjänsten:

OData-datatyp Common Language Runtime-typ Information
Edm.Binary byte[] En matris med byte upp till 64 KiB i storlek.
Edm.Boolean bool Ett booleskt värde.
Edm.DateTime DateTime Ett 64-bitars värde uttryckt som Coordinated Universal Time (UTC). Det intervall som stöds DateTime 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 flyttalsvärde.
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 typ String, såvida 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 en åtgärd för att infoga entitet eller uppdatera entitet . Mer information finns i Infoga och uppdatera entiteter.

Tabelltjänsten sparar null inte värden för egenskaper. När du kör frågor mot entiteter kan alla egenskapstyperna ovan inte vara null. När du skriver entiteter är alla egenskapstyperna ovan null och alla egenskaper med ett null värde hanteras som om nyttolasten inte innehöll den egenskapen.

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

Se även