Основные сведения о модели данных хранилища таблиц
Служба таблиц предоставляет структурированное хранилище в виде таблиц. В следующих разделах описана модель данных службы таблиц.
Учетная запись хранения
Учетная запись хранения — это глобальная и уникальная сущность в системе хранения. Учетная запись хранения является родительским пространством имен для службы таблиц и является основой для авторизации. В рамках одной учетной записи хранения можно создать любое количество таблиц, при этом каждая таблица должна иметь уникальное имя.
Учетную запись хранения всегда необходимо указывать в URI-запросе. Базовый URI-адрес для доступа к службе таблиц выглядит следующим образом:
https://myaccount.table.core.windows.net
Таблицы, сущности и свойства
Таблицы хранят данные как коллекции сущностей. Сущности аналогичны строкам. Сущность имеет первичный ключ и набор свойств. Свойство сходно со столбцом, имеет имя и представляет пару «тип-значение».
Служба таблиц не требует наличия схемы для таблиц, поэтому две сущности в одной таблице могут иметь различные наборы свойств. Разработчики могут принудительно требовать наличия схемы на стороне клиента. Таблица может содержать любое число сущностей.
Имена таблиц
Имена таблиц должны соответствовать следующим правилам:
Имена таблиц должны быть уникальными в пределах учетной записи.
Имена таблиц могут содержать только буквенно-цифровые символы.
Имена таблиц не могут начинаться с цифры.
В именах таблиц учитывается регистр символов.
Имена таблиц должны быть длиной от 3 до 63 символов.
Некоторые имена таблиц зарезервированы, в том числе «tables». Попытка создания таблицы с зарезервированным именем возвращает код ошибки 404 (Bad Request).
Эти правила также описываются регулярным выражением "^[A-Za-z][A-Za-z0-9]{2,62}$".
Имена таблиц сохраняют регистр, в котором они были созданы, при использовании имен регистр также учитываются.
Имена свойств
Имена свойств — это строки, учитывающие регистр, длиной до 255 символов. Имена свойств должны соответствовать правилам именования для идентификаторов C#.
Примечание
Некоторые идентификаторы C# недопустимы в соответствии со спецификацией XML. Эти идентификаторы нельзя использовать в именах свойства, потому что имена свойств передаются службе таблиц запросом в виде XML.
Важно!
Имена свойств передаются службе таблиц в URL-адресе. Некоторые символы необходимо перекодировать (в последовательность с процентом) для использования в URL-адресе. При этом используется кодировка UTF-8 (рекомендуется) или многобайтовая кодировка (MBCS). Эта кодировка происходит автоматически при использовании клиентских библиотек службы хранилища Azure. Однако есть некоторые символы, которые недопустимы в URL-адресе, даже будучи перекодированы. Эти символы не могут использоваться в именах свойств. Кодовые точки вроде \ uE000 допустимы в NTFS-именах, но не являются допустимыми символами Юникода, поэтому их использовать нельзя. Кроме того, некоторые символы ASCII и Юникода, например, управляющие символы (от 0x00 до 0x1F, \u0081 и т. д.), также не являются допустимыми. Правила, касающиеся Юникод-строк в HTTP/1.1, см. в следующем разделе:
Примечание
Начиная с версии 2009-04-14, служба таблиц не поддерживает работу с именами свойств, содержащих тире (-).
Ограничения свойств
Сущность может иметь до 255 свойств, включая 3 системные свойства, описанные в следующем разделе. Поэтому пользователь может включать до 252 свойств в дополнение к 3 системным свойствам. Совокупный размер всех данных в свойствах сущности не может превышать 1 МиБ.
Свойства системы
Сущность всегда имеет следующие системные свойства:
Свойство
PartitionKey
Свойство
RowKey
Свойство
Timestamp
Эти системные свойства автоматически включаются в каждой сущность таблицы. Имена этих свойств зарезервированы и не могут быть изменены. Разработчик отвечает за вставку и обновлений значений для PartitionKey
и RowKey
. Сервер управляет значением Timestamp
, которое не может быть изменено.
Символы, не допустимые в полях ключей
Следующие символы недопустимы в значениях свойств PartitionKey
и RowKey
.
Символ косой черты (/)
Символ обратной косой черты (\)
Символ номера (#)
Символ вопросительного знака (?)
Управляющие символы от U+0000 до U+001F, включая следующие:
- Символ горизонтальной табуляции (\t)
- Символ перевода строки (\n)
- Символ возврата каретки (\r)
Управляющие символы от U+007 до U+009F
Свойство PartitionKey
Таблицы разбиваются для поддержки балансировки нагрузки между узлами хранилища. Сущности таблицы упорядочиваются по секциям. Секция — это последовательный диапазон сущностей с одинаковым значением ключа секции. Ключ секции — это уникальный идентификатор секции в таблице, указываемый в свойстве PartitionKey
. Ключ секции составляет первую часть первичного ключа сущности. Ключ секции может быть строковым значением размером до 1024 символов.
Необходимо вводить свойство PartitionKey
в каждую операцию вставки, обновления и удаления.
Свойство RowKey
Вторая часть первичного ключа это ключ строки, указываемый в свойстве RowKey
. Ключ строки — это уникальный идентификатор сущности внутри конкретного раздела. Совместно PartitionKey
и RowKey
однозначно идентифицируют каждую сущность в таблице.
Ключ строки — это строковое значение, размером до 1024 символов.
Необходимо вводить свойство RowKey
в каждую операцию вставки, обновления и удаления.
Свойство Timestamp
Свойство Timestamp
это значение типа DateTime
, которое задается сервером для отметки времени последнего изменения сущности. Служба таблиц использует свойство Timestamp
для реализации внутреннего алгоритма оптимистичного параллелизма. Значение свойства для сущности Timestamp
увеличивается при каждом изменении сущности. Данное свойство не следует задавать при операциях вставки и обновления (это значение будет пропускаться).
Свойство Timestamp
должно быть выражено в одном из принятых форматов ISO 8601 UTC. Дополнительные сведения о принятых форматах UTC см. в разделе Форматирование значений DateTime.
Типы свойств
Служба таблиц поддерживает подмножество типов данных, определенных спецификацией протокола OData. В следующей таблице приведены поддерживаемые в службе таблиц типы свойств:
Тип данных OData | Тип CLR | Сведения |
---|---|---|
Edm.Binary |
byte[] |
Массив байтов размером до 64 КиБ. |
Edm.Boolean |
bool |
Значение типа Boolean. |
Edm.DateTime |
DateTime |
64-битное значение времени, выраженное в формате UTC. Поддерживаемый диапазон DateTime начинается с полночи (12:00) 1 января 1601 г. н. э., формат UTC. Заканчивается диапазон 31 декабря 9999 года. Дополнительные сведения см. в разделе Форматирование значений DateTime. |
Edm.Double |
double |
64-битное значение с плавающей запятой. |
Edm.Guid |
Guid |
128-битный идентификатор GUID. |
Edm.Int32 |
Int32 или int |
32-битное целое число. |
Edm.Int64 |
Int64 или long |
64-битное целое число. |
Edm.String |
String |
Значение в кодировке UTF-16. Строковые значения могут иметь размер до 64 КиБ. Обратите внимание, что максимальное поддерживаемого количества символов составляет около 32 K или меньше. |
По умолчанию свойство создается как тип String
, если не задан другой тип. Чтобы явно ввести свойство, укажите его тип данных, используя соответствующий тип данных OData для операции Вставка сущности или Обновление сущности . Дополнительные сведения см. в разделе Вставка и обновление сущностей.
Служба таблиц не сохраняет null
значения для свойств. При запросе сущностей указанные выше типы свойств не могут иметь значение NULL. При записи сущностей все указанные выше типы свойств могут иметь значение NULL, а любое свойство со значением null
обрабатывается так, как если бы полезные данные не содержали этого свойства.
Примеры фильтрации по различным типам свойств в URI запроса см. в разделе Запрос таблиц и сущностей.