Azureストレージサービスの1つである「ブロック Blob」
<1.Azure Blob Storage>
<1.Blobとは>
「Blob」とは、「Binary Large Object」の頭文字をとった略称です。
ストレージに格納するオブジェクトは「構造化データ」と「非構造化データ」の2つを格納します。
「構造化データ」に該当するオブジェクトは、ExcelやCSVファイルのように順序の定められた「行」と「列」で構成された規則性のあるデータとなります。
一方の「非構造化データ」に該当するオブジェクトはビデオや音声、静止画、映像コンテンツ等となります。特長は、ExcelやCSVファイルとは違って「行」と「列」といった「規則性を持たない」データとなります。ただし、「XML」や「Json」とっいた「規則性を持つ」非構造化データも存在します。
<2.マルチメディアに適した構造>
「非構造化データ」は「構造化データ」と違って、情報量が多いほど大容量のデータになります。
基本的にデータベースは、規則性のある構造化データのみを取り扱っていました。しかし、「技術」というものは日々進展をしているものです。そこで登場したのが「NoSQL」と呼ばれるリレーショナルデータベース管理システム以外のデータベース管理システムです。「NoSQL」は複数の形式が同時に存在し得るデータに対してテーブル構造を固定することなくそのままの形で格納できるス管理システムです。
「NoSQL」のおかげで、非構造化データのメタデータのタグ付けや、人工知能による自然言語処理等、様々な分野で活用されました。
<2.利用メリット>
<1.採用されている理由>
Azureで「Blob」が採用されている理由は非構造化データである映像データやテキストデータといった規則性を持たないデータの格納するのに最適化ということで、活用しています。
また、HTTPやHTTPS経由で、あらゆる場所からアクセスして大量の非構造化データを格納・取り出しができます。
<2.メリット>
- どこからでもアクセス可能なRESTベースのストレージ
- 管理の柔軟性と確実なデータ保存
Blob Storageは、複数のソフトウェアを分散システムを介して連携できる「REST(REpresentational State Transfer)」と呼ばれる設計原則を基盤にストレージを構築しています。RESTの分散処理の原則に則り、グローバルなリージョンに対応しているため、世界中どこにいても、オブジェクトの格納処理が行えます。
Blob Storageは、システム稼働中でもインプレースによるデータ編集に適しており、パフォーマンスを向上させつつ帯域幅の消費を抑制することが可能です。複数のリージョンでデータをコピーして、持続的なビジネスを地理的冗長性によって実現することができます。そのうえ、オブジェクトの変更時には、すべてのリージョンでの検証、データ統合性が確保が施されているため、いつでも「最新」のデータへのアクセスが可能です。
<3.Blobに適している分野>
<1.コンテンツの配信>
Azure Blob StorageはHTTPあるいはHTTPS経由で、いかなる場所からでも、データの出し入れができることは上段で説明しました。その取り出したデータ、映像や静止画といったマルチメディアに該当するコンテンツデータは、インターネット経由でWebブラウザーに可増やテキストを配信したり、リアルタイムのストリーミングによるライブ中継等、世界中どこからでも配信することが可能です。
そのほか、ログの書き込みや、保存されているビッグデータを解析してマーケティングの洞察を得ることにも適しています。
<2.バックアップ、リカバリーのためのデータ格納>
予期せぬ自然災害に備えて、保有するデータをレプリケーションやバックアップして、復旧のダウンタイムを最小限に抑えることは、ストレージ性能の中でも重要な点になります。
Azureでは「Azure site Recovery」のリージョン間レプリケーションを利用した「Disaster Recovery」を採用しています。オンプレミスのプラマリーサイトにある仮想マシンや物理サーバーを継続的にレプリケートして障害発生時にセカンダリーサイトにレプリケーションする事によって、障害から素早く復旧します。
<4.ブロック Blob>
<1.ブロック Blobとは>
「ブロック Blob」は、大本である「Blob ストレージ」の中に含まれている3種類のうちの1つになります。
「ブロック Blob」は主にドキュメント、メディアといったバイナリーデータや、災害、障害時に備えたバックアップデータ等の格納に適したストレージで、個別に管理できるデータブロックで構成されています。
<2.サービスバージョン>
サービスバージョン | 最大ブロックサイズ(Putブロック経由) | Blobの最大サイズ(Putブロック一覧の試用) | 一階の書き込み操作の最大サイズ(Put Blob経由) |
バージョン2019-12-12以降 | 4000MiB(プレビュー) | 約190.7TiB(4000 MiB X 5万ブロック) (プレビュー) | 5000MiB (プレビュー) |
バージョン 2016-05-31 ~ バージョン2019-07-07 | 100MiB | 約4.75TiB (100 MiB X 5万ブロック) | 256MiB |
2016-05-31 より前のバージョン | 4MiB | 約195GiB (4MiB X 5万ブロック) | 64MiB |
<3.ブロック Blobの利点>
「ブロック Blob」の利点は大量のデータを効率的にストレージへのアップロードでき、構成するブロックはすべて「ブロックID」で識別されます。
ブロック Blobでは最大で5万ものブロックを含めることができ、各ブロックは使用されているサービスバージョンで許可されている最大サイズまで、異なるサイズに容量を調整できます。
ブロック Blobを作成またはサイズの変更を行うには「Put block操作」を使用して一連のblockを書き込み、「Put Block List操作」を使用してBlobにコミットされます。
ストレージアカウント内のBlobにブロックをアップロードすれば、指定されたブロック Blobとブロックは関連付けられます。とはいえ、その新しいブロックのIDを含んだ一連のブロックがコミットされるまではBlobに追加されることはありません。
<4.ネットワーク経由で管理>
ブロック Blobには、容量の大きいファイルをネットワーク経由で管理することが可能です。仮に複数のブロックを並列的にアップロードすることでロード時間の短縮をすることも可能です。また、すべてのブロックには、「MD5ハッシュ」という転送結果を検証することができる券使用システムが組まれているため、アップロードの進行状況の追跡や、送信のし直しも容易にできます。
ブロックのアップロードする順序は、利用者の任意で行え、最後にコミットしたブロックの確認もミコミットする段階で確認することができます。
また、Blobにコミットされていないブロックは1週間を経過すると自動的に破棄されるので注意がいります。それは一連のブロックのコミット操作が実行されたとき、対象に含まれていない未コミットのプロックも破棄されます。
<5.既存ブロックの変更>
既存のブロック Blobに変更を加える場合は「挿入」「置換」「削除」という手段があります。変更済みのブロック単数あるいは複数をアップロードした後、保存を必要とする既存ブロックと併せて新規ブロックをコミットすることで新しいBlobへとバージョンアップします。
またコミット済みのBlobに、異なる2つの場所に同一容量範囲を挿入した場合、2か所にある同一ブロックは1度のコミット操作で済みます。しかし、コミット操作でいずれかのブロックも検出されなかった時はエラーが発生していますので、変更はされません。
<6.ブロックID>
「ブロックID」は、Blob内に存在する同じ長さを持つ「文字列」を言います。通常はブロックのクライアント側のコードが「Base 64エンコード形式」を使用して文字列を正規化します。「Base 64エンコード形式」を使用した場合、エンコード前の文字列長が64バイト以下であることが重要になります。IDの値はBlobが異なれば重複しても問題はありません。
<5.まとめ>
規則性を持たない非構造化データを、インターネット経由でアクセスするだけで、ファイルの管理までできます。
もちろん取り扱うデータコンテンツは、インターネットが通っている場所であるならばリアルタイムでブラウザに配信したり、ライブ中継を行うことも容易に行えます。
「ブロック Blob」の大本である「Blob ストレージ」は災害時の対策も行えるため、自然災害に見舞われやすい日本にとっては最良な対策がとれています。