Writer:佐久森
Blob Storageとは?AzureのIoT向けサービス群での位置づけや特徴・使い方までを紹介
AzureのIoT向けサービスでは、データ格納用のストレージが用途ごとに選択できるよう豊富に用意されています。本コラムではそのうち最も安価にデータが格納できるBlob Storageに焦点を当てます。Blob Storageとは何か?その概要と特徴を、AzureのIoTサービス群における位置づけも交えて紹介します。
関連資料
Blob StorageのAzureの IoTサービス群における位置づけ
まずは、Blob Storageが、AzureのIoT向けサービス群でどのような位置づけにあるかを確認していきましょう。ここでは全体像がイメージしやすいように、利用頻度が高いと考えられるサービスを抽出し、一つの例として以下のようにカテゴライズしています。
- デバイス収集・連携:IoT Hub/Data Factory
- データの蓄積:SQL Database/Blob Storage/Cosmos DB/SQL Data Warehouse
- データの処理・分析:Stream Analytics/Databricks/HDInsight
- 機械学習モデル、開発・管理:Cognitive Services/Custom Vision/Machine Learning Studio/DevOps
- データ可視化・実行:Power BI/Power Apps/Dynamics 365/IoT Central
今回紹介するのは、「データの蓄積」のサービスの1つであるBlob Storageです。
Blob Storageの特徴
それではBlob(Binary Large Object) Storageの特徴を見ていきましょう。
大量の非構造化データを格納できる
Blob Storageは、非構造化データが低価格で格納できるストレージです。
Blob Storageに格納できる非構造化データには、テキスト・バイナリ・画像・音声・動画など、さまざまなデータ型のファイルがあります。
これら、非構造化データを大容量(ペタバイト規模)で格納できることから、あらゆるデータ型を扱うIoTシステムにも最適なストレージだといえるでしょう。
HTTPおよびHTTPSでアクセス可能
Blob Storageは、HTTPおよびHTTPSを使用して、URLベースでストレージにアクセスできるという特徴を持っています。これにより、世界中のどこからでも Blob Storageに接続可能です。
Blob StorageへのアクセスURLは、以下のような形式になります。
・http://【ストレージアカウント名】.blob.core.windows.net/【コンテナー名】/【ファイル名】
例えば、画像・ドキュメントをブラウザで配信したり、動画や音楽などをストリーミング配信したりする用途にも利用できます。
また、大容量の分析データやバックアップデータを格納するのにも有用です。
複数のレプリケーション方式
Blob Storageは、レプリケーション方式にも特徴があり、以下の3つの方式を採用しています。
- LRS(Local Redundant Storage):ローカル環境での冗長化
- GRS(Geographically Redundant Storage):地理的に離れた場所(数百キロメートル単位)での冗長化
- ZRS(Zone Redundant Storage):複数の施設にわたる冗長化
上記は東日本のリージョンで「従量課金制データストレージ料金」を参考に安価な順に並べています。それぞれに利用料金は異なりますが、データの配置要件などによって選択可能です。
※料金参照元:Microsoft Azure「ブロック BLOBの価格」
また、いずれのレプリケーション方式を利用しても、Azureの管理ポータルからデータディスクを作成したときに、自動的に3重化されます。
例えば、作成されたBlob Storageに、クライアントからの書き込み要求があった場合には、3つの複製が完了してはじめて「書き込み成功」となるフローですので、常に3つの同じ環境が並行して作成されるということです。
これにより、万が一のストレージ障害が起こったときでも、自動的に正常なストレージへ切り替わりますので、クライアントの書き込み作業にダウンタイムは発生しません。
もちろん、Blob Storageの利用者がわざわざ特殊な操作をする必要がありませんので、意識せずに運用できます。
利用料金が節約できるクールストレージ
Blob Storageは、アクセス頻度によってストレージ層をわけることで、利用料金の節約になる仕組みがあります。
ストレージ層には「ホットストレージ層」と「クールストレージ層」があり、2つの違いは以下の通りです。
- ホットストレージ層:利用料金は高いが、頻繁にアクセスされるデータを最適化
- クールストレージ層:利用料金は安く、アクセス頻度が低いデータ(30日以上保管されるデータ)として格納
つまり、アクセス頻度の低いデータをクールストレージ層に格納すれば、ストレージ利用料金のコスト削減につながるということです。
「クール」か「ホット」の選択は、ストレージアカウントを作成するときのアクセスレベル項目で設定できます。
高い可用性
Blob Storageを含め、クラウドストレージの優位性は可用性の高さです。
Azureのクラウドストレージサービスでは、99.9%以上の可用性を実現しています。
このような可用性の高さは、オンプレミスではなかなか達成できないものでしょう。
標準ストレージとプレミアムストレージ
Blob Storageを含むAzureのストレージでは、「標準ストレージ」と「プレミアムストレージ」の利用を選択できます。
両者には、例えば使用するストレージ構成に違いがあります。
- 標準ストレージ:HDD構成
- プレミアムストレージ:SSD構成
より早い処理が必要な場合にはプレミアムストレージを選択すると良いでしょう。
Import/Exportサービスで安全なデータ移行
Blob Storageでは、大容量データを安全に移行するImport/Exportサービスが用意されています。
Import/Exportサービスでは、物理的にハードウェアドライブを郵送して、安全なデータ移行が行えるのです。
例えば、オンプレミスからクラウドへの大量データ移行時に、これまで使っていたHDDをAzureデータセンターへ送ることで、直接データの移行を行ってくれます。
サイズの大きなデータを、インターネット回線で転送する必要はありません。
強力なデータレイクの構築
Blob Storageは、データレイクの構築ができます。
例えば、サポートされている「Azure Data Lake Storage Gen2」では、ビッグデータの解析ソリューションを利用できるなど、高いスケーラビリティでBlob Storageを拡張できます。
ギガビット単位のスループットと、ペタバイト単位のデータ利用を想定して設計されていますので、低コストなBlob Storageにて利用すれば高い費用対効果を得られるでしょう。
各プログラム言語に対応したライブラリ
Blob Storageでは、ネイティブアプリケーションの構築に、以下の言語に対応したライブラリを利用可能です。
- .Net
- Java
- Node.js
- Python
- Go
- PHP
- Ruby
などです。
Blob Storageの使い方
Blob Storageを使うためには、Azureアカウントが必要です。また、Azureのストレージサービスを利用する際には、ストレージアカウントを作成する必要があります。
大まかな手順としては、「コンテナー」を作成し、「BLOBのアップロード」よりファイルをアップロードするだけです。
【手順】
- 「Azure Portal」→「概要」→「コンテナー」
- 「+コンテナー」→「コンテナー名」を入力→「作成」
- 「作成したコンテナー」→「アップロード」
- 「BLOBのアップロード」→アップロードするファイルの選択→「アップロード」
これで、コンテナー内のBLOBにファイルがアップロードされました。
全体的な階層構造を表すと「コンテナー>BLOB>オブジェクト(ファイル)」となります。
アップロードされたファイルは、HTTPSなどのURL経由でアクセスできます。
Blob Storage以外のAzure Storageについて
「データの蓄積」に利用できるサービスAzure Storageには、データの種類に応じた豊富なストレージが用意されています。例えば、非構造化データや半構造化データを格納するテーブル、サービス間の非同期タスクなどに使うキュー、標準的なプロトコルを使用してファイル共有するファイルなどです。そのうちの「Azure SQL Database」については、以下のコラムにて詳しく紹介していますので参考にしてください。
Azure SQL Database:Azure SQL Databaseの特徴とは?その概要からIoT向けサービス群での位置づけまでを紹介まとめ
Blob Storageは、AzureのIoT向けサービス群の中でも「データの蓄積」のサービスとして選択できるものです。ペタバイト規模の非構造化データを格納でき、データにはHTTPやHTTPSでアクセスできます。IoTデバイスから取得される膨大な動画や画像データ、ログデータなどの格納に役立つでしょう。