Omówienie modelu danych usługi Table Service
Usługa Table Service oferuje magazyn ustrukturyzowany w formie tabel. W poniższych sekcjach opisano model danych usługi Table Service.
Konto magazynu
Konto magazynu jest globalnie unikatową jednostką w systemie magazynu. Konto magazynu jest nadrzędną przestrzenią nazw usługi Table Service i jest podstawą autoryzacji. Możesz utworzyć dowolną liczbę tabel na danym koncie magazynu, o ile każda tabela jest unikatowo nazwana.
Konto magazynu musi być zawsze określone w identyfikatorze URI żądania. Podstawowy identyfikator URI umożliwiający uzyskanie dostępu do usługi Table Service jest następujący:
https://myaccount.table.core.windows.net
Tabele, jednostki i właściwości
Tabele przechowują dane jako kolekcje jednostek. Jednostki są podobne do wierszy. Jednostka ma klucz podstawowy i zestaw właściwości. Właściwość jest nazwą, parą typed-value, podobną do kolumny.
Usługa Table Service nie wymusza żadnego schematu dla tabel, więc dwie jednostki w tej samej tabeli mogą mieć różne zestawy właściwości. Deweloperzy mogą wymusić schemat po stronie klienta. Tabela może zawierać dowolną liczbę jednostek.
Nazwy tabel
Nazwy tabel muszą być zgodne z następującymi regułami:
Nazwy tabel muszą być unikatowe w ramach konta.
Nazwy tabel mogą zawierać tylko znaki alfanumeryczne.
Nazwy tabel nie mogą zaczynać się od znaku liczbowego.
Nazwy tabel są bez uwzględniania wielkości liter.
Nazwy tabel muszą mieć długość od 3 do 63 znaków.
Niektóre nazwy tabel są zarezerwowane, w tym "tabele". Próba utworzenia tabeli z zarezerwowaną nazwą tabeli zwraca kod błędu 404 (Nieprawidłowe żądanie).
Te reguły są również opisane przez wyrażenie regularne "^[A-Za-z][A-Za-z-z0-9]{2,62}$".
Nazwy tabel zachowują wielkość liter, z którymi zostały utworzone, ale są niewrażliwe na wielkość liter, gdy są używane.
Nazwy właściwości
Nazwy właściwości to ciągi z uwzględnieniem wielkości do 255 znaków. Nazwy właściwości powinny być zgodne z regułami nazewnictwa identyfikatorów języka C#.
Uwaga
Niektóre identyfikatory języka C# są nieprawidłowe zgodnie ze specyfikacją XML. Te identyfikatory mogą nie być używane w nazwach właściwości, ponieważ nazwy właściwości są wysyłane za pośrednictwem ładunku XML w żądaniu względem usługi Table Service.
Ważne
Nazwy właściwości są przekazywane do usługi Table Service w adresie URL. Niektóre znaki muszą być zakodowane procentowo, aby pojawiały się w adresie URL przy użyciu protokołu UTF-8 (preferowane) lub MBCS. To kodowanie odbywa się automatycznie podczas korzystania z bibliotek klienta usługi Azure Storage. Istnieją jednak pewne znaki, które nie są prawidłowe w ścieżkach adresu URL nawet w przypadku kodowania. Te znaki nie mogą być wyświetlane w nazwach właściwości. Punkty kodu, takie jak \uE000, chociaż prawidłowe w nazwach plików NTFS, nie są prawidłowymi znakami Unicode, więc nie można ich używać. Ponadto niektóre znaki ASCII lub Unicode, takie jak znaki sterujące (0x00 do 0x1F, \u0081 itp.), są również niedozwolone. Aby uzyskać reguły dotyczące ciągów Unicode w protokole HTTP/1.1, zobacz:
Uwaga
Począwszy od wersji 2009-04-14, usługa Table Service nie obsługuje już dołączania znaku kreski (-) w nazwach właściwości.
Ograniczenia właściwości
Jednostka może mieć maksymalnie 255 właściwości, w tym 3 właściwości systemu opisane w poniższej sekcji. W związku z tym użytkownik może zawierać maksymalnie 252 właściwości niestandardowe oprócz 3 właściwości systemowych. Łączny rozmiar wszystkich danych we właściwościach jednostki nie może przekraczać 1 miB.
Właściwości systemu
Jednostka zawsze ma następujące właściwości systemowe:
PartitionKey
WłaściwośćRowKey
WłaściwośćTimestamp
Właściwość
Te właściwości systemowe są automatycznie uwzględniane dla każdej jednostki w tabeli. Nazwy tych właściwości są zastrzeżone i nie można ich zmienić. Deweloper jest odpowiedzialny za wstawianie i aktualizowanie wartości i PartitionKey
RowKey
. Serwer zarządza wartością Timestamp
, której nie można zmodyfikować.
Niedozwolone znaki w polach kluczy
Następujące znaki nie są dozwolone w wartościach PartitionKey
właściwości i RowKey
:
Znak ukośnika do przodu (/)
Znak ukośnika odwrotnego (\)
Znak numeru (#)
Znak znaku zapytania (?)
Znaki sterujące od U+0000 do U+001F, w tym:
- Znak karty poziomej (\t)
- Znak kanału wiersza (\n)
- Znak powrotu karetki (\r)
Znaki sterujące z U+007F do U+009F
Właściwość PartitionKey
Tabele są partycjonowane w celu obsługi równoważenia obciążenia między węzłami magazynu. Jednostki tabeli są zorganizowane według partycji. Partycja to kolejny zakres jednostek posiadających tę samą wartość klucza partycji. Klucz partycji jest unikatowym identyfikatorem partycji w danej tabeli określonej przez PartitionKey
właściwość . Klucz partycji stanowi pierwszą część klucza podstawowego jednostki. Klucz partycji może być wartością ciągu o rozmiarze do 1024 znaków.
Należy uwzględnić PartitionKey
właściwość w każdej operacji wstawiania, aktualizowania i usuwania.
Właściwość RowKey
Drugą częścią klucza podstawowego jest klucz wiersza określony przez RowKey
właściwość . Klucz wiersza jest unikatowym identyfikatorem jednostki w ramach danej partycji. Razem i RowKey
unikatowo zidentyfikuj PartitionKey
każdą jednostkę w tabeli.
Klucz wiersza to wartość ciągu, która może mieć rozmiar do 1024 znaków.
Należy uwzględnić RowKey
właściwość w każdej operacji wstawiania, aktualizowania i usuwania.
Właściwość sygnatury czasowej
Właściwość Timestamp
jest wartością utrzymywaną DateTime
po stronie serwera, aby zarejestrować czas ostatniej modyfikacji jednostki. Usługa Table service używa Timestamp
właściwości wewnętrznie, aby zapewnić optymistyczną współbieżność. Wartość Timestamp
właściwości dla jednostki jest rozwijana za każdym razem, gdy jednostka jest modyfikowana. Ta właściwość nie powinna być ustawiana w operacjach wstawiania lub aktualizowania (wartość zostanie zignorowana).
Właściwość Timestamp
musi być wyrażona w jednym z akceptowanych formatów ISO 8601 UTC. Aby uzyskać więcej informacji na temat akceptowanych formatów UTC, zobacz Formatowanie wartości DateTime.
Typy właściwości
Usługa Table Service obsługuje podzestaw typów danych zdefiniowanych przez specyfikację protokołu OData. W poniższej tabeli przedstawiono obsługiwane typy właściwości dla usługi Table Service:
Typ danych protokołu OData | Typ środowiska uruchomieniowego języka wspólnego | Szczegóły |
---|---|---|
Edm.Binary |
byte[] |
Tablica bajtów o rozmiarze do 64 KiB. |
Edm.Boolean |
bool |
Wartość logiczna. |
Edm.DateTime |
DateTime |
Wartość 64-bitowa wyrażona jako uniwersalny czas koordynowany (UTC). Obsługiwany DateTime zakres rozpoczyna się od 12:00 północy, 1 stycznia 1601 R. (C.E.), UTC. Zakres kończy się na 31 grudnia 9999. Aby uzyskać więcej informacji, zobacz Formatowanie wartości daty/godziny. |
Edm.Double |
double |
64-bitowa wartość zmiennoprzecinkowa. |
Edm.Guid |
Guid |
128-bitowy unikatowy identyfikator globalny. |
Edm.Int32 |
Int32 lub int |
32-bitowa liczba całkowita. |
Edm.Int64 |
Int64 lub long |
64-bitowa liczba całkowita. |
Edm.String |
String |
Wartość zakodowana w formacie UTF-16. Wartości ciągów mogą mieć rozmiar do 64 KiB. Należy pamiętać, że maksymalna liczba obsługiwanych znaków wynosi około 32 K lub mniej. |
Domyślnie właściwość jest tworzona jako typ String
, chyba że określono inny typ. Aby jawnie wpisać właściwość, określ jej typ danych przy użyciu odpowiedniego typu danych OData dla operacji Wstaw jednostkę lub Aktualizuj jednostkę . Aby uzyskać więcej informacji, zobacz Wstawianie i aktualizowanie jednostek.
Usługa Table Service nie utrwala null
wartości właściwości. Podczas wykonywania zapytań o jednostki powyższe typy właściwości są niepuste. Podczas pisania jednostek powyższe typy właściwości są dopuszczające wartość null, a każda właściwość z wartością null
jest obsługiwana tak, jakby ładunek nie zawierał tej właściwości.
Przykłady pokazujące, jak filtrować według różnych typów właściwości w identyfikatorze URI żądania zapytania, zobacz Wykonywanie zapytań dotyczących tabel i jednostek.