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 willekeurig aantal tabellen binnen een bepaald opslagaccount maken, mits 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, getypt waardepaar, 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 willekeurig 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 hoofdlettergevoelig.

  • Tabelnamen moeten 3 tot 63 tekens lang zijn.

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

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

Tabelnamen behouden het hoofdlettergebruik waarmee ze zijn gemaakt, maar zijn niet hoofdlettergevoelig wanneer ze worden gebruikt.

Eigenschapsnamen

Eigenschapsnamen zijn hoofdlettergevoelige tekenreeksen met een grootte van maximaal 255 tekens. Eigenschapsnamen moeten voldoen aan de naamgevingsregels voor C#-id's.

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 Tabelservice.

Belangrijk

Eigenschapsnamen worden binnen een URL doorgegeven aan de Table-service. Bepaalde tekens moeten procent zijn gecodeerd om te worden weergegeven in een URL, met behulp van 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 wanneer ze zijn gecodeerd. Deze tekens kunnen niet worden weergegeven in eigenschapsnamen. Codepunten zoals \uE000 zijn geldig in NTFS-bestandsnamen, maar zijn geen geldige Unicode-tekens, dus ze kunnen niet worden gebruikt. Bovendien zijn sommige ASCII- of Unicode-tekens, zoals besturingstekens (0x00 aan 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 opnemen van het streepje (-) in eigenschapsnamen.

Beperkingen van eigenschappen

Een entiteit kan maximaal 255 eigenschappen hebben, waaronder 3 systeemeigenschappen die in de volgende sectie worden beschreven. Daarom kan de gebruiker maximaal 252 aangepaste eigenschappen bevatten, naast de 3 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 niet toegestaan in sleutelvelden

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

  • De schuine streep (/)

  • Het backslashteken (\)

  • Het numerieke teken (#)

  • Het vraagteken (?)

  • Besturingstekens van U+0000 tot U+001F, waaronder:

    • Het horizontale tabteken (\t)
    • Het teken regelinvoer (\n)
    • Het teken regelterugloop (\r)
  • Besturingstekens van U+007F tot U+009F

Eigenschap PartitionKey

Tabellen worden gepartitioneerd ter ondersteuning van taakverdeling over opslagknooppunten. De entiteiten van een tabel zijn geordend op partitie. Een partitie is een opeenvolgend bereik van entiteiten die dezelfde partitiesleutelwaarde hebben. De partitiesleutel is een unieke id voor de partitie binnen 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 1024 tekens bevatten.

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

Rijsleutel, 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 de PartitionKey en RowKey elke entiteit in een tabel op unieke wijze.

De rijsleutel is een tekenreekswaarde van maximaal 1024 tekens.

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

Tijdstempel, eigenschap

De Timestamp eigenschap is een DateTime waarde die wordt onderhouden aan de serverzijde om de tijd vast te leggen waarop een entiteit voor het laatst is gewijzigd. De tabelservice gebruikt de Timestamp eigenschap intern om optimistische gelijktijdigheid te bieden. De waarde van de Timestamp eigenschap voor een entiteit gaat vooruit telkens wanneer de entiteit wordt gewijzigd. Deze eigenschap moet niet worden ingesteld bij invoeg- of updatebewerkingen (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 Table-service 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 Common Language Runtime-type Details
Edm.Binary byte[] Een matrix van bytes met een grootte van maximaal 64 KiB.
Edm.Boolean bool Een booleaanse waarde.
Edm.DateTime DateTime Een 64-bits waarde uitgedrukt als Coordinated Universal Time (UTC). Het ondersteunde DateTime bereik begint vanaf 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 drijvendekommawaarde.
Edm.Guid Guid Een 128-bits globally unique identifier.
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 ondersteunde tekens ongeveer 32 K of minder is.

Standaard wordt een eigenschap gemaakt als type String, 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 Entiteiten invoegen en bijwerken voor meer informatie.

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

Zie Query's uitvoeren op tabellen en entiteiten voor voorbeelden die laten zien hoe u filtert op de verschillende eigenschapstypen in een queryaanvraag-URI.

Zie ook