Azure Storage の BLOB インデックスを使用したデータの管理と検索 — プレビュー開始

2020年5月4日 に投稿済み

Program Manager, Azure Storage

 

BLOB インデックスは、マネージド セカンダリ インデックスの一種であり、多次元オブジェクト属性を格納して、Azure Blob Storage のデータ オブジェクトについて記述できます。この機能をプレビューで使用できるようになりました。BLOB ストレージ上に構築された BLOB インデックスは、すべてのワークロードに一貫した信頼性、可用性、パフォーマンスを提供します。BLOB インデックスのネイティブ オブジェクト管理とフィルター機能により、データに設定された属性タグに基づいてデータを分類および検索できます。

BLOB インデックスでデータを管理および検索する

データセットが大きくなるにつれて、広大なデータから特定の関連オブジェクトを見つけるのは困難で面倒な作業になります。これまで、クライアントは ListBlobs API を使用して一度に 5,000 件の辞書式レコードを取得し、リストを解析し、必要な BLOB が見つかるまで繰り返していました。また、一部のユーザーは、個別のルックアップ テーブルを管理して特定のオブジェクトを検索するという手法を取っていました。これらの個別のテーブルは同期しない可能性があるので、コストや複雑さが増大し、ストレスにつながります。ユーザーは、データの編成やインデックス テーブルの管理について心配することなく、自らのビジネスを成長させる強力なアプリケーションの開発に集中できる必要があります。

BLOB インデックスを使用すると、すべての BLOB 型 (ブロック BLOB、追加 BLOB、ページ BLOB) がサポートされるため、データ管理の手間やクエリに関する問題が軽減されます。BLOB インデックスは、使い慣れた BLOB ストレージ エンドポイントと API を通じて公開され、データと分類インデックスの両方を同じサービスで簡単に保存してアクセスできるため、アプリケーションの複雑さも軽減されます。

BLOB インデックスに値を格納するには、アップロード中の新しいデータ、またはお使いのストレージ アカウントの既存データのいずれかで、データのキー値タグ属性を定義します。これらの BLOB インデックス タグは、基になる BLOB データと共に格納されます。その後、BLOB インデックス作成エンジンで、新しいタグが自動的に読み取られ、そのインデックスが作成され、ユーザーがクエリ可能な BLOB インデックスに公開されます。Azure portal、REST API、または SDK を使用して、FindBlobsByTags API 呼び出しを発行し、一連の条件を指定できます。BLOB ストレージによって、一致条件を満たす BLOB のみで構成されたフィルター済みの結果セットが返されます。

以下のシナリオで、BLOB インデックスの動作例を説明します。

  1. 100 万個の BLOB を含むストレージ アカウント コンテナーで、新しい BLOB 「B2」をアップロードし、次の BLOB インデックス タグを付けます: < Status = Unprocessed, Quality = 8K, Source = RAW >
  2. BLOB とその BLOB インデックス タグはストレージ アカウントに保存され、アカウントのインデックス作成エンジンによって新しい BLOB インデックスがすぐに公開されます。
  3. その後、エンコード アプリケーションで、少なくとも 4K 解像度の品質の未処理のメディア ファイルをすべて検索する必要が生じました。アプリケーションで FindBlobs API 呼び出しが発行され、次の条件に一致するすべての BLOB が検索されます: < Status = Unprocessed AND Quality >= 4K AND Status == RAW>
  4. BLOB インデックスによって、100 万個の BLOB から指定された条件に一致する BLOB 「B2」のみがすぐに返されます。エンコード アプリケーションで処理ジョブを迅速に開始できるようになり、アイドル状態のコンピューティング時間とコストを節約できます。

 

BLOB インデックスの概要の例。

BLOB インデックスとプラットフォーム機能の統合

BLOB インデックスを使用すると、BLOB データを分類、管理、検索できるだけでなく、ライフサイクル管理など、他の Blob service 機能と統合できるようになります。

新しい blobIndexMatch をフィルターとして使用し、BLOB に適用されているタグに基づいて、データをよりクールな層に移動したり、データを削除したりできます。これにより、ルールをより細かく設定し、指定した条件に一致する場合にのみデータの移動や削除を行うことができます。

以下のサンプル ライフサイクル管理ポリシーは「videofiles」コンテナー内のブロック BLOB に適用され、BLOB の BLOB インデックス タグの Status が「Processed」で Source が「RAW」の場合にのみ、オブジェクトが 1 日後にアーカイブ ストレージに階層化されます。

blobIndexMatch を使用したライフサイクル管理ルールの例。

BLOB インデックスとライフサイクル管理の統合は、ほんの始まりにすぎません。他の BLOB プラットフォーム機能との統合が近日中に追加される予定です。

BLOB インデックス タグを使用した条件付きの BLOB 操作

REST バージョン 2019-10-10 以降では、ほとんどの BLOB サービス API で新しい条件付きのヘッダー x-ms-if-tags がサポートされています。このヘッダーを使用すると、指定された BLOB インデックス タグ条件を満たす場合にのみ操作が成功します。条件を満たさない場合、操作は失敗し、BLOB は変更されません。この機能を BLOB インデックスで使用すると、明示的にタグ付けされた BLOB でのみデータ操作が行われるので、マルチスレッド アプリケーションによる偶発的な削除や変更を防ぐことができます。

使用方法

BLOB インデックスのプレビューに登録するには、以下の PowerShell または CLI コマンドを実行して、この機能を自分のサブスクリプションに登録する要求を送信します。

PowerShell を使用して登録する

Register-AzProviderFeature -FeatureName BlobIndex -ProviderNamespace Microsoft.Storage

Register-AzResourceProvider -ProviderNamespace Microsoft.Storage

Azure CLI を使用して登録する

az feature register --namespace Microsoft.Storage --name BlobIndex

​az provider register --namespace 'Microsoft.Storage'

要求が承認されると、フランス中部フランス南部の既存または新規の汎用 v2 (GPv2) ストレージ アカウントで、BLOB インデックスの機能を使用できます。ほとんどのプレビューと同様、この機能は一般提供されるまで運用ワークロードで使用しないでください。

フィードバックのお願い

プレビューの登録と承認が完了すると、新規または既存のデータにタグを設定し、タグに基づいてデータを検索し、タグ フィルターで豊富なライフサイクル管理ポリシーを設定して、BLOB インデックスのすべての機能を活用できます。詳細については、「Manage and find data on Azure Blob Storage with Blob Index」 (BLOB インデックスを使用した Azure Blob Storage でのデータの管理と検索) をご覧ください。

お客様は、ストレージ アカウント内の BLOB インデックス タグの合計数 (1 か月の平均値) に対して課金されます。SetBlobTagsGetBlobTagsFindBlobsByTags への要求は、それぞれの操作の種類に応じて課金されます。インデックス作成エンジンには料金はかかりません。詳細については、「ブロック BLOB の価格」をご覧ください。

Microsoft では今後も機能の改善を続けていきますので、BlobIndexPreview@microsoft.com 宛てに電子メールを送信して、BLOB インデックスやその他の機能に関するフィードバックをお寄せください。Azure Storage に関するアイデアやご提案は、Azure Storage フィードバック フォーラムまでご投稿ください。