Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
По мере того как наборы данных увеличиваются, поиск определенного объекта в океане данных становится все более сложной задачей. Индексные теги для BLOB предоставляют возможности управления данными и обнаружения с помощью атрибутов тега индекса «ключ-значение». Можно классифицировать и находить объекты в одном контейнере или во всех контейнерах вашей учетной записи хранилища. В случае изменения требований к данным объекты можно динамически классифицировать путем обновления тегов индекса. Объекты могут оставаться на месте в текущей организации контейнеров.
Теги индекса объектов blob позволяют:
Динамически классифицируйте блобы с помощью индексных тегов "ключ-значение"
Быстро находить определенные помеченные блобы во всей учетной записи хранилища
Указать условное поведение для API BLOB на основе оценки тегов индекса.
Используйте индексные теги для расширенного управления такими функциями, как управление жизненным циклом BLOB-объектов.
Рассмотрим сценарий, в котором у вас есть миллионы blobs в учетной записи хранилища, к которым обращается множество различных приложений. Вы хотите найти все данные, связанные с одним проектом. Вы не знаете, что именно в них входит, так как данные могут быть распределены по нескольким контейнерам с разными соглашениями об именовании. Однако ваши приложения отправляют все данные с тегами, основанными на их проекте. Вместо поиска миллионов больших двоичных объектов и сравнения имен и свойств можно использовать Project = Contoso в качестве условий обнаружения. Индекс BLOB-объектов будет фильтровать все контейнеры по всему вашему учетному запису хранилища, чтобы быстро найти и вернуть только набор из 50 BLOB-объектов из Project = Contoso.
Чтобы начать работать с примерами использования индекса BLOB, см. статью Использование тегов индекса BLOB для управления и поиска данных.
Теги индекса BLOB-объектов и управление данными
Префиксы имен контейнеров и BLOB-объектов представляют собой одномерную категоризацию. Индексы BLOB-объектов позволяют реализовать многомерную классификацию для типов данных BLOB (блочных, добавляемых и страничных). Многомерная классификация нативно индексируется в Azure Blob Storage, чтобы вы могли быстро найти свои данные.
Рассмотрим следующие пять объектов BLOB в вашей учетной записи хранения:
container1/transaction.csv
container2/campaign.docx
фотографии/bannerphoto.png
archives/completed/2019review.pdf
logs/2020/01/01/logfile.txt
Эти BLOB-объекты разделяются с использованием префикса контейнер/виртуальная папка/имя BLOB-объекта. Вы можете задать атрибут тега индекса Project = Contoso на этих пяти блобах, чтобы классифицировать их вместе при сохранении текущей структуры префиксов. Добавление тегов индекса устраняет необходимость в переносе данных, предоставляя возможность их фильтрации и поиска по индексу.
Настройка индексных тегов BLOB-объектов
Теги индекса BLOB-объектов — это атрибуты key-value, которые можно применить к новым или существующим объектам в вашей учетной записи хранилища. Теги индекса можно указать во время отправки с помощью команды Put Blob, Put Block List или Copy Blob, а также необязательного заголовка x-ms-tags. Если у вас уже есть блобы в учетной записи хранилища, вызовите Set Blob Tags, передав форматированный XML-документ с тегами индекса в тексте запроса.
Внимание
Установка тегов индекса BLOB-объектов может выполняться владельцем данных хранилища BLOB и любыми пользователями с общей подписью для доступа, имеющими разрешение SAS на доступ к тегам BLOB-объекта.
Кроме того, пользователи RBAC с разрешением Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write могут выполнять эту операцию.
Вы можете применить к объекту blob один тег, чтобы описать, когда была завершена обработка ваших данных.
"processedDate" = "2020-01-01"
Чтобы более точно описать данные, на ваш блоб можно применить несколько тегов.
"Project" = "Contoso" "Классифицирован" = "Истина" "Состояние" = "Необработанный" "Priority" = "01"
Чтобы изменить существующие атрибуты тега индекса, извлеките их, измените и замените с помощью операции Set Blob Tags. Чтобы удалить из бинарного объекта все теги индекса, вызовите операцию Set Blob Tags без указания атрибутов. Поскольку теги индекса больших двоичных объектов являются подресурсом данных BLOB-объекта, операция Set Blob Tags не изменяет его базовое содержимое и не изменяет время последнего изменения или тег eTag. Вы можете создавать или изменять теги индекса для всех текущих базовых BLOB-объектов. Теги индекса также сохраняются для предыдущих версий, но не передаются в механизм индексации больших двоичных объектов, поэтому нельзя запрашивать теги индекса для получения предыдущих версий. Теги для мягко удаленных BLOB-объектов нельзя изменить.
Для тегов индекса больших двоичных объектов действуют указанные ниже ограничения.
У каждого блоба может быть до 10 тегов индекса.
Ключи тегов должны быть между одним и 128 символами.
Значения тегов должны находиться в диапазоне от нуля до 256 символов.
Ключи и значения тегов чувствительны к регистру.
Ключи и значения тегов поддерживают только строковые типы данных. Все числа, даты, время или специальные символы сохраняются в виде строк.
Если управление версиями включено, теги индекса применяются к определенной версии BLOB-объекта. Если вы устанавливаете теги индекса для текущей версии и создается новая версия, тег не будет связан с новой версией. Тег будет связан только с предыдущей версией.
Ключи и значения тегов должны соответствовать указанным ниже правилам именования.
Алфавитно-цифровые символы:
от a до z (строчные буквы);
от A до Z (прописные буквы);
от 0 до 9 (цифры).
Допустимые специальные символы: пробел, плюс, минус, точка, двоеточие, знак равенства, символ подчеркивания, косая черта (
+-.:=_/).
Совет
Вы можете использовать задачу хранения, чтобы задать теги для объектов в масштабах нескольких учетных записей хранения на основе определенного набора условий. Задача хранения — это ресурс, доступный в Azure Storage Actions. Бессерверная платформа, которую можно использовать для выполнения общих операций с данными на миллионах объектов в нескольких учетных записях хранения. Дополнительные сведения см. в статье Что такое Azure Storage Actions?
Получение и перечисление тегов индекса больших двоичных объектов
Теги индекса блобов хранятся как подресурсы вместе с данными блобов и могут извлекаться независимо от содержимого основных данных блоба. Теги индекса для одного большого двоичного объекта можно получить с помощью операции Get Blob Tags. Операция List Blobs с параметром include:tags также вернет все блобы в контейнере вместе с их индексными тегами блобов.
Внимание
Получение и перечисление тегов индекса BLOB-объектов можно выполнить с помощью владельца данных хранилища BLOB и всех пользователей с Подписанным Доступом, который имеет разрешение на доступ к тегам BLOB (разрешение t SAS).
Кроме того, пользователи RBAC с разрешением Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read могут выполнять эту операцию.
Для больших двоичных объектов, имеющих хотя бы один тег индекса, операции x-ms-tag-count, Get Blob и Get Blob Properties возвращают , что указывает на количество тегов индекса для данного объекта.
Поиск данных с помощью тегов индекса Blob
Механизм индексирования выводит ваши атрибуты типа "ключ-значение" в многомерный индекс. После установки тегов индекса они появляются на объекте BLOB и могут быть немедленно извлечены.
До обновления индекса BLOB-объектов может потребоваться некоторое время. Это верно как для добавления тегов, так и для редактирования существующих. Время, необходимое для работы, зависит от рабочей нагрузки. Например, если операция "Задать теги BLOB" занимает 30 минут при скорости от 15000 до 20000 транзакций в секунду, то для индексирования всех этих BLOB может потребоваться до 10 минут. При более низком уровне задержка индексирования может быть менее секунды. Распределение трафика также влияет на задержки индексирования. Например, если клиентское приложение задает теги больших двоичных объектов в последовательном порядке в одном контейнере, задержка может быть выше, чем если теги применяются к большим двоичным объектам, которые не находятся вместе.
После обновления индекса BLOB-объектов можно использовать собственные возможности запроса и обнаружения, предоставляемые Blob Storage.
Операция поиска больших двоичных объектов по тегам Find Blobs by Tags позволяет получить отфильтрованный набор больших двоичных объектов, теги индекса которых соответствуют заданному выражению запроса.
Find Blobs by Tags поддерживает фильтрацию по всем контейнерам в учетной записи хранилища, или можно ограничить фильтрацию только одним контейнером. Поскольку все ключи и значения тега индекса являются строками, реляционные операторы применяют лексикографический порядок сортировки.
Внимание
Поиск данных с помощью тегов индекса BLOB-объектов можно выполнить пользователями с правами владельца данных хранилища BLOB-объектов и всеми, у кого есть Подписанный доступ с разрешением на поиск BLOB-объектов по тегам (разрешение SAS f).
Кроме того, пользователи RBAC с разрешением Microsoft.Storage/storageAccounts/blobServices/containers/blobs/filter/action могут выполнять эту операцию.
При фильтрации индекса больших двоичных объектов применяются перечисленные ниже критерии.
Ключи тегов должны быть заключены в двойные кавычки (").
Значения тегов и имена контейнеров должны быть заключены в одинарные кавычки (').
Символ @ разрешен только при фильтрации по контейнеру с определенным именем (например,
@container = 'ContainerName').Фильтры применяются с лексикографическим порядком сортировки строк.
Операции диапазона с одинаковыми границами на одном ключе недействительны (например,
"Rank" > '10' AND "Rank" >= '15').При создании критерия фильтрации с помощью REST символы должны быть в кодировке URI.
Запросы по тегам оптимизируются для совпадения по равенству с использованием одного тега (например, StoreID = "100"). Также эффективно выполняются запросы диапазона с использованием одного тега и операторов >, >=, <, <=. Запросы, где используется операция AND и несколько тегов, менее эффективны. Например, операция Cost > "01" AND Cost <= "100" эффективна. Параметр Cost > "01" AND StoreID = "2" не является столь эффективным.
В таблице ниже показаны все допустимые операторы для операции Find Blobs by Tags.
| Оператор | Описание | Пример |
|---|---|---|
| = | Равно | "Status" = 'In Progress' |
| > | Больше | "Date" > '2018-06-18' |
| >= | Больше или равно | "Priority" >= '5' |
| < | Меньше | "Age" < '32' |
| <= | Меньше или равно | "Priority" <= '5' |
| И | Логическое И | "Rank" >= '010' AND "Rank" < '100' |
| @container | Ограничение до конкретного контейнера | @container = 'videofiles' AND "status" = 'done' |
Примечание.
При настройке и запросе тегов необходимо иметь представление о лексикографическом порядке.
- Цифры сортируются перед буквами. Числа сортируются по первой цифре.
- Буквы в верхнем регистре сортируются перед буквами в нижнем.
- У символов нет стандарта. Некоторые символы сортируются перед числовыми значениями. Другие символы сортируются перед буквами или после них.
Условные операции с BLOB-объектами с тегами индекса
В версиях REST 2019-10-10 и выше большинство API-службы BLOB теперь поддерживают условный заголовок x-ms-if-tags, так что операция будет выполнена только если указано указанное условие индекса BLOB. Если условие не выполнено, вы получите error 412: The condition specified using HTTP conditional header(s) is not met.
Заголовок x-ms-if-tags можно объединять с другими существующими условными заголовками HTTP (If-Match, If-None-Match и т. п.). Если в запросе указано несколько условных заголовков, все они должны оцениваться как истинные, чтобы операция была успешной. Все условные заголовки фактически объединяются с помощью логической операции И.
В таблице ниже показаны допустимые операторы для условных операций.
| Оператор | Описание | Пример |
|---|---|---|
| = | Равно | "Status" = 'In Progress' |
| <> | Не равно | "Status" <> 'Done' |
| > | Больше | "Date" > '2018-06-18' |
| >= | Больше или равно | "Priority" >= '5' |
| < | Меньше | "Age" < '32' |
| <= | Меньше или равно | "Priority" <= '5' |
| И | Логическое И | "Rank" >= '010' AND "Rank" < '100' |
| ИЛИ | Логическое ИЛИ | "Status" = 'Done' OR "Priority" >= '05' |
Примечание.
Существует два дополнительных оператора — "не равно" и логическое ИЛИ, которые разрешены в условном заголовке x-ms-if-tags для операций с BLOB-объектами, но не существуют в операции Find Blobs by Tags.
Интеграция платформ с индексными тегами блобов
Теги индекса BLOB-объектов не только помогают классифицировать, администрировать и искать данные объектов BLOB, но и обеспечивать интеграцию с другими функциями Blob Storage, такими как управление жизненным циклом.
Управление жизненным циклом
С помощью blobIndexMatch в качестве фильтра правил при управлении жизненным циклом можно перемещать данные на более холодные уровни или удалять их на основе тегов индекса, примененных к BLOB-данным. Можно настроить правила более детально и перемещать или удалять определенные BLOB-объекты, только если они соответствуют заданным критериям тегов.
Сопоставление индекса BLOB можно задать в качестве отдельного фильтра в правиле управления жизненным циклом для применения действий к данным с тегами. Также можно объединить префиксы с индексом большого двоичного объекта для более точного поиска наборов данных. Если в правиле жизненного цикла указано несколько фильтров, применяется логический оператор И. Действие будет применено только в том случае, если выполняются все условия фильтрации.
Следующий пример правила управления жизненным циклом применяется к блочным BLOB-объектам в контейнере videofiles. Правило перемещает BLOB-объекты на архивное хранилище только в том случае, если данные соответствуют критериям тегов индекса BLOB "Status" == 'Processed' AND "Source" == 'RAW'.
Разрешения и авторизация
Вы можете предоставить доступ к тегам индекса для BLOB-объектов с помощью одного из следующих подходов:
Использование управления доступом Azure на основе ролей (Azure RBAC) для предоставления разрешений субъекту безопасности Microsoft Entra. Используйте Microsoft Entra ID для обеспечения повышенной безопасности и простоты использования. Дополнительные сведения об использовании Microsoft Entra ID с BLOB-операциями см. в Authorize access to data in Azure Storage.
Использование сигнатуры доступа (SAS) для делегирования доступа к индексу BLOB. Дополнительные сведения об общих подписях доступа см. в разделе Grant limited access для Azure Storage ресурсов с использованием общих подписей доступа (SAS).
Использование ключей доступа к учетной записи для авторизации операций с Общим ключом. Дополнительные сведения см. в статье Авторизация с помощью общего ключа.
Теги индекса BLOB являются подресурсом для данных BLOB. Пользователь с разрешениями или маркером SAS для чтения или записи объектов BLOB может не иметь доступ к тегам индекса BLOB-объектов.
Контроль доступа на основе ролей
Абоненты, использующие удостоверение Microsoft Entra, могут получить следующие разрешения для работы с тегами индекса BLOB-объектов.
| Операции с тегами индекса Blob. | действие RBAC Azure |
|---|---|
| Установка тегов BLOB-объектов | Microsoft. Storage/storageAccounts/blobServices/container/blobs/tags/write |
| Получение тегов BLOB | Microsoft. Storage/storageAccounts/blobServices/container/blobs/tags/read |
| Поиск BLOB-объектов по тегам | Microsoft. Storage/storageAccounts/blobServices/container/blobs/filter/action |
Для операций с тегами индекса требуются дополнительные разрешения, действующие отдельно от базовых данных BLOB-объектов. Роль владельца данных хранилища BLOB предоставляет разрешения для всех трех операций с тегами индексов BLOB-объектов.
Разрешения SAS
Вызывающие абоненты, использующие общий доступ подписи (SAS), могут получить ограниченные разрешения на использование тегов индекса BLOB-объектов.
служебный SAS для объекта BLOB
Следующие разрешения могут быть предоставлены в служебном SAS для BLOB, чтобы разрешить доступ к тегам индекса BLOB-объектов. Для чтения или записи тегов индекса недостаточно иметь только разрешения на чтение (r) и запись (w) больших двоичных объектов.
| Разрешение | Символ URI | Разрешенные операции |
|---|---|---|
| Теги индекса | t | Получение и установка тегов индекса для большого двоичного объекта |
Service SAS для контейнера
Чтобы разрешить фильтрацию по тегам больших двоичных объектов, в SAS службы для контейнера можно предоставить указанные ниже разрешения. Для фильтрации BLOB-объектов с использованием индексных тегов недостаточно разрешения на доступ к списку BLOB-объектов (i).
| Разрешение | Символ URI | Разрешенные операции |
|---|---|---|
| Теги индекса | f | Найти области данных с отметками индекса |
SAS для учетной записи
Следующие разрешения могут быть предоставлены в SAS учетной записи, чтобы разрешить доступ к тегам индекса BLOB-объектов и фильтрацию по тегам BLOB-объектов.
| Разрешение | Символ URI | Разрешенные операции |
|---|---|---|
| Теги индекса | t | Получение и установка тегов индекса для большого двоичного объекта |
| Теги индекса | f | Найти области данных с отметками индекса |
Чтобы читать и записывать теги индекса, недостаточно только разрешений на чтение (r) и запись (w) BLOB-объектов, а для фильтрации BLOB-объектов по их тегам индекса недостаточно разрешения на создание списка (i).
Выбор между метаданными и тегами индекса больших двоичных объектов
Теги индекса блоба и метаданные разрешают хранить произвольные заданные пользователем свойства в виде пар "ключ – значение" вместе с ресурсом блоба. И теги, и метаданные можно получать и задавать напрямую без возврата и изменения содержимого объекта BLOB. Метаданные и теги индекса можно использовать параллельно.
Только теги индекса автоматически индексируются и становятся доступными для поиска родным сервисом Blob Storage. Встроенная индексация и поиск метаданных не реализованы. Необходимо использовать отдельную службу, например Azure Search. У тегов индекса BLOB-объектов есть дополнительные разрешения на чтение, фильтрацию и запись, которые отделены от базовых данных самих BLOB-объектов. Метаданные используют те же разрешения, что и BLOB-объект, и возвращаются в виде заголовков HTTP с помощью операций Get Blob и Get Blob Properties. Теги индекса BLOB-объектов шифруются в состоянии покоя с помощью ключа, управляемого Microsoft. Метаданные шифруются в состоянии покоя с использованием того же ключа шифрования, что и blob данные.
В следующей таблице перечислены различия между метаданными и тегами индекса больших двоичных объектов.
| Метаданные | Теги индекса BLOB-объектов | |
|---|---|---|
| Ограничения | Без числового ограничения, 8 КБ всего, без учета регистра. | До 10 тегов на BLOB-объект, 768 байт на тег, с учетом регистра. |
| Обновления | Не допускается на уровне архивирования, Set Blob Metadata заменяет все существующие метаданные, Set Blob Metadata изменяет последнее время изменения BLOB. |
Разрешено для всех уровней доступа, Set Blob Tags заменяет все существующие теги, Set Blob Tags не изменяет время последнего изменения BLOB. |
| Хранение | Хранятся вместе с данными большого двоичного объекта. | Подресурс данных BLOB. |
| Индексирование и запросы | Необходимо использовать отдельную службу, например поиск Azure | Возможности индексирования и запроса, встроенные в Blob Storage |
| Шифрование | Шифруются при хранении с тем же ключом шифрования, что и данные BLOB. | Шифруются при хранении с помощью ключа шифрования, управляемого корпорацией Майкрософт. |
| Цены | Размер метаданных включается в затраты на хранение блоба | Фиксированная стоимость на индексный тег. |
| Ответ в виде заголовка | Для операций Get Blob и Get Blob Properties метаданные возвращаются в виде заголовков. |
Для операций Get Blob и Get Blob Properties возвращается количество тегов, теги возвращаются только для операций Get Blob Tags и List Blobs. |
| Разрешения | Разрешения на чтение и запись данных большого двоичного объекта распространяются и на метаданные. | Для чтения, фильтрации и записи тегов индекса требуются дополнительные разрешения. |
| Именование | Имена метаданных должны соответствовать правилам именования идентификаторов C#. | Теги индекса Blob поддерживают расширенный диапазон буквенно-цифровых символов. |
Цены
Плата взимается за среднее количество тегов индекса в учетной записи хранения в месяц. Система индексирования бесплатна. Запросы на установку тегов BLOB-объектов, получение тегов BLOB-объектов и поиск тегов BLOB-объектов взимаются по соответствующим текущим тарифам на транзакции. Обратите внимание, что количество транзакций списка, используемых при выполнении операции поиска объектов BLOB по тегу, равно количеству условий в запросе. Например, запрос (StoreID = 100) является одной учетной транзакцией. Запрос (StoreID = 100 AND SKU = 10010) соответствует двум учетным транзакциям. См. Block Blob Pricing для получения дополнительной информации.
Поддержка функций
Поддержка этой функции может повлиять на включение протокола Data Lake Storage Gen2, сетевой файловой системы (NFS) 3.0 или протокола SSH-передачи файлов (SFTP). Если вы включили любую из этих возможностей, ознакомьтесь с поддержкой функций Blob Storage в учетных записях Azure Storage для оценки поддержки этой функции.
Примечание.
Теги объектов BLOB без индексирования доступны в предварительной версии для учетных записей хранилища, включающих иерархическое пространство имен (HNS). Чтобы попробовать эту функцию, пользователи должны зарегистрироваться на предварительный просмотр функции "Теги BLOB-объектов для иерархического пространства имен" в подписке. В настоящее время теги BLOB-объектов в учетных записях с поддержкой HNS не интегрированы с функциями хранилища объектов, такими как управление жизненным циклом.
Ограничения и известные проблемы
В этом разделе описаны известные проблемы и условия.
Поддерживаются только учетные записи общего назначения версии 2 и премиум-аккаунты блочных BLOB-объектов. Блоб страницы Премиум и устаревший блоб не поддерживаются. Учетные записи общего назначения версии 1 не будут поддерживаться.
При загрузке страничных BLOB-данных с тегами индекса теги не сохраняются. Теги следует задавать после загрузки страничного BLOB-объекта.
Если в хранилище блобов включено управление версиями, вы по-прежнему можете использовать индексные теги на текущей версии. Теги индекса сохраняются для предыдущих версий, но не передаются механизму индексации больших двоичных объектов, поэтому их нельзя извлечь из предыдущих версий. Если вы повышаете предыдущую версию до текущей, то теги предыдущей версии становятся тегами текущей версии. Поскольку эти теги связаны с текущей версией, они передаются механизму индекса больших двоичных объектов, и вы можете запрашивать их.
Аналогичным образом теги индекса сохраняются для объектов BLOB и моментальных снимков, помеченных как удаленные, но эти теги не передаются в движок индексирования BLOB, поэтому их нельзя использовать для получения таких объектов и моментальных снимков. При восстановлении мягко удаленных больших двоичных объектов и моментальных снимков их теги передаются в движок индексов BLOB-объектов, и их можно запросить.
API для определения, индексируются ли теги, отсутствует.
В управлении жизненным циклом поддерживаются только проверки на равенство при сопоставлении индексов BLOB-объектов.
Copy Blobне копирует теги индекса BLOB из исходного объекта в новый целевой объект. Вы можете указать теги, которые необходимо применить к целевому объекту, во время операции копирования.
Вопросы и ответы
См. Часто задаваемые вопросы о Blob-тегах индекса.
Следующие шаги
Пример использования индекса BLOB-объектов см. в статье Использовать индекс BLOB-объектов для управления и поиска данных.
Узнайте об управлении жизненным циклом и установке правила соответствия индекса больших двоичных объектов.