Wat is het Table service-gegevensmodel?

De Tabelservice biedt gestructureerde opslag in de vorm van tabellen. In de volgende secties wordt het gegevensmodel van de tabelservice beschreven.

Opslagaccount

Een opslagaccount is een wereldwijd unieke entiteit binnen het opslagsysteem. Het opslagaccount is de bovenliggende naamruimte voor de Table-service en vormt de basis voor autorisatie. U kunt een groot aantal tabellen binnen een bepaald opslagaccount maken, zolang elke tabel een unieke naam heeft.

Het opslagaccount moet altijd worden opgegeven in de aanvraag-URI. De basis-URI voor toegang tot de Table-service is als volgt:

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

Tabellen, entiteiten en eigenschappen

Tabellen slaan gegevens op als verzamelingen entiteiten. Entiteiten zijn vergelijkbaar met rijen. Een entiteit heeft een primaire sleutel en een set eigenschappen. Een eigenschap is een naam, typed-value-paar, vergelijkbaar met een kolom.

De Tabelservice dwingt geen schema af voor tabellen, dus twee entiteiten in dezelfde tabel kunnen verschillende sets eigenschappen hebben. Ontwikkelaars kunnen ervoor kiezen om een schema af te dwingen aan de clientzijde. Een tabel kan een groot aantal entiteiten bevatten.

Tabelnamen

Tabelnamen moeten voldoen aan deze regels:

  • Tabelnamen moeten uniek zijn binnen een account.

  • Tabelnamen mogen alleen alfanumerieke tekens bevatten.

  • Tabelnamen kunnen niet beginnen met een numeriek teken.

  • Tabelnamen zijn niet-gevoelig.

  • Tabelnamen moeten tussen de 3 en 63 tekens lang zijn.

  • Sommige tabelnamen zijn gereserveerd, waaronder 'tabellen'. Als u probeert een tabel met een gereserveerde tabelnaam te maken, wordt foutcode 404 (Slechte aanvraag) weergegeven.

Deze regels worden ook beschreven door de reguliere expressie "^[A-Za-z][A-Za-z0-9] {2,62} $".

Tabelnamen behouden de case waarmee ze zijn gemaakt, maar zijn niet-casegevoelig wanneer ze worden gebruikt.

Eigenschapsnamen

Eigenschapsnamen zijn hoofdtekenreeksen met een grootte van maximaal 255 tekens. Namen van eigenschappen moeten de naamgevingsregels voor C#-id's volgen.

Notitie

Sommige C#-id's zijn niet geldig volgens de XML-specificatie. Deze id's kunnen niet worden gebruikt in eigenschapsnamen, omdat eigenschapsnamen worden verzonden via een XML-nettolading in een aanvraag voor de Table-service.

Belangrijk

Eigenschapsnamen worden doorgegeven aan de Tabelservice binnen een URL. Bepaalde tekens moeten in procenten zijn gecodeerd om in een URL te worden weergegeven, met UTF-8 (voorkeur) of MBCS. Deze codering vindt automatisch plaats wanneer u de Azure Storage clientbibliotheken gebruikt. Er zijn echter bepaalde tekens die niet geldig zijn in URL-paden, zelfs niet als ze zijn gecodeerd. Deze tekens kunnen niet worden weergegeven in eigenschapsnamen. Codepunten zoals \uE000, hoewel geldig in NTFS-bestandsnamen, zijn geen geldige Unicode-tekens, zodat ze niet kunnen worden gebruikt. Bovendien zijn sommige ASCII- of Unicode-tekens, zoals besturingselementtekens (0x00 tot 0x1F, \u0081, enzovoort), ook niet toegestaan. Zie voor regels voor Unicode-tekenreeksen in HTTP/1.1:

Notitie

Vanaf versie 2009-04-14 biedt de Table-service geen ondersteuning meer voor het op te nemen van het streepje (-) in eigenschapsnamen.

Eigenschapsbeperkingen

Een entiteit kan maximaal 255 eigenschappen hebben, waaronder drie systeemeigenschappen die in de volgende sectie worden beschreven. Daarom kan de gebruiker maximaal 252 aangepaste eigenschappen bevatten, naast de drie systeemeigenschappen. De gecombineerde grootte van alle gegevens in de eigenschappen van een entiteit mag niet groter zijn dan 1 MiB.

Systeemeigenschappen

Een entiteit heeft altijd de volgende systeemeigenschappen:

  • PartitionKey Eigenschap

  • RowKey Eigenschap

  • Timestamp Eigenschap

Deze systeemeigenschappen worden automatisch opgenomen voor elke entiteit in een tabel. De namen van deze eigenschappen zijn gereserveerd en kunnen niet worden gewijzigd. De ontwikkelaar is verantwoordelijk voor het invoegen en bijwerken van de waarden van PartitionKey en RowKey . De server beheert de waarde van Timestamp , die niet kan worden gewijzigd.

Tekens die niet zijn toegestaan in sleutelvelden

De volgende tekens zijn niet toegestaan in waarden voor de PartitionKey eigenschappen RowKey en :

  • De slash (/)

  • Het teken backslash ( \ )

  • Het cijferteken (#)

  • Het vraagteken (?)

  • Beheer tekens van U+0000 tot U+001F, waaronder:

    • Het horizontale tabblad (\t)
    • Het teken linefeed (\n)
    • Het teken voor het retourneren van de rij (\r)
  • Tekens van U+007F naar U+009F bepalen

Eigenschap PartitionKey

Tabellen worden gepartitief ter ondersteuning van taakverdeling over opslagknooppunten. De entiteiten van een tabel zijn geordend op partitie. Een partitie is een reeks entiteiten die dezelfde partitiesleutelwaarde hebben. De partitiesleutel is een unieke id voor de partitie in een bepaalde tabel, opgegeven door de PartitionKey eigenschap . De partitiesleutel vormt het eerste deel van de primaire sleutel van een entiteit. De partitiesleutel kan een tekenreekswaarde van maximaal 1 KiB zijn.

U moet de eigenschap PartitionKey opnemen in elke invoeg-, bij- en verwijderbewerking.

RowKey-eigenschap

Het tweede deel van de primaire sleutel is de rijsleutel, opgegeven door de RowKey eigenschap . De rijsleutel is een unieke id voor een entiteit binnen een bepaalde partitie. Samen identificeren PartitionKey en elke entiteit in een tabel RowKey uniek.

De rijsleutel is een tekenreekswaarde die maximaal 1 KiB groot kan zijn.

U moet de eigenschap RowKey opnemen in elke invoeg-, bij- en verwijderbewerking.

Tijdstempel-eigenschap

De eigenschap is een waarde die wordt onderhouden aan de serverzijde om vast te registreren op welke tijd een entiteit voor het laatst Timestamp DateTime is gewijzigd. De Tabelservice gebruikt de Timestamp eigenschap intern om optimistische gelijktijdigheid te bieden. De waarde van de Timestamp eigenschap voor een entiteit gaat steeds verder als de entiteit wordt gewijzigd. Deze eigenschap mag niet worden ingesteld bij invoeg- of bijvoegbewerkingen (de waarde wordt genegeerd).

De Timestamp eigenschap moet worden uitgedrukt in een van de geaccepteerde ISO 8601 UTC-indelingen. Zie Datum/tijd-waarden opmaken voor meer informatie over geaccepteerde UTC-indelingen.

Eigenschapstypen

De Tabelservice ondersteunt een subset van gegevenstypen die zijn gedefinieerd door de OData-protocolspecificatie. In de volgende tabel ziet u de ondersteunde eigenschapstypen voor de Tabelservice:

OData-gegevenstype Runtimetype Common Language Details
Edm.Binary byte[] Een matrix van bytes van maximaal 64 KiB.
Edm.Boolean bool Een booleaanse waarde.
Edm.DateTime DateTime Een 64-bits waarde, uitgedrukt als Coordinated Universal Time (UTC). Het DateTime ondersteunde bereik begint om 12:00 middernacht, 1 januari 1601 a.d. (C.E.), UTC. Het bereik eindigt op 31 december 9999. Zie Datum/tijd-waarden opmaken voor meer informatie.
Edm.Double double Een 64-bits drijvende-puntwaarde.
Edm.Guid Guid Een 128-bits globaal unieke id.
Edm.Int32 Int32 of int Een 32-bits geheel getal.
Edm.Int64 Int64 of long Een 64-bits geheel getal.
Edm.String String Een UTF-16-gecodeerde waarde. Tekenreekswaarden kunnen maximaal 64 KiB groot zijn. Houd er rekening mee dat het maximum aantal tekens dat wordt ondersteund ongeveer 32 K of minder is.

Standaard wordt een eigenschap als type String gemaakt, tenzij u een ander type opgeeft. Als u expliciet een eigenschap wilt typen, geeft u het gegevenstype op met behulp van het juiste OData-gegevenstype voor een bewerking Entiteit invoegen of Entiteit bijwerken. Zie Inserting and Updating Entities (Entiteiten invoegen en bijwerken) voor meer informatie.

De Tabelservice behoudt geen null waarden voor eigenschappen. Bij het uitvoeren van query's op entiteiten zijn de bovenstaande eigenschapstypen allemaal niet null-waarden. Bij het schrijven van entiteiten zijn de bovenstaande eigenschapstypen allemaal null-waarden en wordt elke eigenschap met een waarde verwerkt alsof de null nettolading die eigenschap niet bevat.

Zie Query'suitvoeren op tabellen en entiteiten voor voorbeelden die laten zien hoe u filtert op de verschillende typen eigenschappen in een queryaanvraag-URI.

Zie ook