Principy datového modelu služby Table Service
Table service nabízí strukturované úložiště ve formě tabulek. Následující části popisují Table service datový model.
Účet úložiště
Účet úložiště je globálně jedinečná entita v rámci systému úložiště. Účet úložiště je nadřazeným oborem názvů pro Table service a je základem pro autorizaci. V rámci daného účtu úložiště můžete vytvořit libovolný počet tabulek, pokud je každá tabulka jednoznačně pojmenovaná.
Účet úložiště musí být vždycky zadaný v identifikátoru URI požadavku. Základní identifikátor URI pro přístup k Table service je následující:
https://myaccount.table.core.windows.net
Tabulky, entity a vlastnosti
Tabulky ukládají data jako kolekce entit. Entity jsou podobné řádkům. Entita má primární klíč a sadu vlastností. Vlastnost je název, dvojice typované hodnoty, podobně jako sloupec.
Table service nevynutila žádné schéma pro tabulky, takže dvě entity ve stejné tabulce mohou mít různé sady vlastností. Vývojáři se můžou rozhodnout vyhovět schématu na straně klienta. Tabulka může obsahovat libovolný počet entit.
Názvy tabulek
Názvy tabulek musí splňovat tato pravidla:
Názvy tabulek musí být v rámci jednoho účtu jedinečné.
Názvy tabulek mohou obsahovat pouze alfanumerické znaky.
Názvy tabulek nesmí začínat číselným znakem.
V názvech tabulek se nerozlišují malá a velká písmena.
Názvy tabulek musí mít délku 3 až 63 znaků.
Některé názvy tabulek jsou rezervované, včetně "Tables". Při pokusu o vytvoření tabulky s rezervovaným názvem tabulky se vrátí kód chyby 404 (chybný požadavek).
Tato pravidla jsou také popsaná regulárním výrazem "^ [A-za-z] [A-za-Z0-9] {2,62} $".
Názvy tabulek zachovávají případ, se kterými byly vytvořeny, ale při použití se nerozlišují malá a velká písmena.
Názvy vlastností
V názvech vlastností se rozlišují velká a malá písmena, která mají velikost až 255 znaků. Názvy vlastností by měly dodržovat pravidla pojmenování pro identifikátory jazyka C#.
Poznámka
Některé identifikátory jazyka C# nejsou podle specifikace XMLplatné. Tyto identifikátory nesmí být použity v názvech vlastností, protože názvy vlastností jsou odesílány prostřednictvím datové části XML v požadavku proti Table service.
Důležité
Názvy vlastností jsou předány Table service v rámci adresy URL. Některé znaky musí být zakódované v procentech, aby se zobrazily v adrese URL s použitím UTF-8 (preferované) nebo znakové sady MBCS. toto kódování probíhá automaticky při použití Azure Storage klientské knihovny. Existují však některé znaky, které nejsou platné v cestách URL ani při kódování. V názvech vlastností se nesmí vyskytovat tyto znaky. Znakové body jako \uE000, zatímco platné v názvech souborů NTFS, nejsou platné znaky Unicode, takže je nelze použít. Kromě toho nejsou povoleny také některé znaky ASCII nebo Unicode, například řídicí znaky (0x00 na 0x1F, \u0081 atd.). Pravidla upravující řetězce Unicode v HTTP/1.1 najdete v těchto tématech:
Poznámka
Počínaje verzí 2009-04-14 již Table service nadále nepodporuje vložení znaku spojovníku (-) do názvů vlastností.
Omezení vlastností
Entita může mít až 255 vlastností, včetně 3 systémových vlastností popsaných v následující části. Proto může uživatel kromě 3 systémových vlastností zahrnovat až 252 vlastních vlastností. Celková velikost všech dat ve vlastnostech entity nemůže překročit 1 MiB.
Vlastnosti systému
Entita má vždy následující systémové vlastnosti:
PartitionKey
majetekRowKey
majetekTimestamp
majetek
Tyto vlastnosti systému jsou automaticky zahrnuty pro každou entitu v tabulce. Názvy těchto vlastností jsou rezervované a nelze je změnit. Vývojář je zodpovědný za vkládání a aktualizaci hodnot PartitionKey
a RowKey
. Server spravuje hodnotu Timestamp
, kterou nelze změnit.
V klíčových polích nejsou povoleny znaky.
Následující znaky nejsou povoleny v hodnotách PartitionKey
RowKey
vlastností a:
Znak lomítka (/)
Znak zpětného lomítka ( \ )
Znak číselného znaménka (#)
Znak otazníku (?)
Řídicí znaky od + 0000 do U + 001F, včetně:
- Znak horizontálního tabulátoru (\t)
- Znak odřádkování (\n)
- Znak návratu na začátek řádku (\r)
Řídicí znaky od U + 007F do U + 009F
Vlastnost PartitionKey
Tabulky jsou rozdělené na oddíly, aby podporovaly vyrovnávání zatížení napříč uzly úložiště. Entity tabulky jsou uspořádány podle oddílů. Oddíl je po sobě jdoucí škále entit, které mají stejnou hodnotu klíče oddílu. Klíč oddílu je jedinečný identifikátor oddílu v dané tabulce, který je určen PartitionKey
vlastností. Klíč oddílu tvoří první část primárního klíče entity. Klíč oddílu může být řetězcová hodnota o velikosti až 1 KiB.
Vlastnost je nutné zahrnout PartitionKey
do každé operace vložení, aktualizace a odstranění.
Vlastnost RowKey
Druhá část primárního klíče je klíč řádku určený RowKey
vlastností. Klíč řádku je jedinečný identifikátor pro entitu v daném oddílu. Společně PartitionKey
a RowKey
jednoznačně identifikují každou entitu v tabulce.
Klíč řádku je řetězcová hodnota, která může mít velikost až 1 KiB.
Vlastnost je nutné zahrnout RowKey
do každé operace vložení, aktualizace a odstranění.
Vlastnost timestamp
Timestamp
Vlastnost je DateTime
hodnota, která je udržována na straně serveru pro záznam času poslední změny entity. Table service používá Timestamp
vlastnost interně k zajištění optimistického řízení souběžnosti. Hodnota Timestamp
vlastnosti pro entitu je pokaždé, když se entita upraví. Tato vlastnost by se neměla nastavit při operacích INSERT nebo Update (hodnota se bude ignorovat).
Timestamp
Vlastnost musí být vyjádřena v jednom z přijatých formátů standardu ISO 8601. Další informace o přijatých formátech UTC najdete v tématu formátování hodnot data a času.
Typy vlastností
Table service podporuje podmnožinu datových typů definovaných specifikací protokolu OData. Následující tabulka uvádí podporované typy vlastností pro Table service:
Datový typ OData | Typ společného jazykového modulu runtime | Podrobnosti |
---|---|---|
Edm.Binary |
byte[] |
Velikost pole bajtů až 64 KiB. |
Edm.Boolean |
bool |
Logická hodnota |
Edm.DateTime |
DateTime |
64 hodnota vyjádřená jako koordinovaný světový čas (UTC). Podporovaný DateTime rozsah začíná od 12:00 půlnoci 1. ledna 1601 n.l. (0001), UTC. Rozsah končí 31. prosince 9999. Další informace najdete v tématu formátování hodnot typu DateTime. |
Edm.Double |
double |
Hodnota 64-bit s plovoucí desetinnou čárkou. |
Edm.Guid |
Guid |
Globálně jedinečný identifikátor 128. |
Edm.Int32 |
Int32 nebo int |
32 celé číslo. |
Edm.Int64 |
Int64 nebo long |
64 celé číslo. |
Edm.String |
String |
Hodnota kódovaná v kódování UTF-16. Hodnoty řetězce můžou mít velikost až 64 KiB. Počítejte s tím, že maximální povolený počet znaků je přibližně 32 KB nebo méně. |
Ve výchozím nastavení je vlastnost vytvořena jako typ String
, pokud nezadáte jiný typ. Chcete-li explicitně zadat vlastnost, určete její datový typ pomocí vhodného datového typu OData pro operaci vložení entity nebo aktualizace entity . Další informace najdete v tématu vkládání a aktualizace entit.
Table service neuchovávají null
hodnoty pro vlastnosti. Při dotazování entit jsou výše uvedené typy vlastností všechny, které neumožňují hodnotu null. Při psaní entit jsou výše uvedené typy vlastností všechny s možnou hodnotou null a jakákoli vlastnost s null
hodnotou je zpracována, jako kdyby datová část tuto vlastnost neobsahovala.
Příklady, které ukazují, jak filtrovat různé typy vlastností v identifikátoru URI požadavku na dotaz, najdete v tématu dotazování tabulek a entit.