はじめに
こんにちは。
いつもは別のクラウド製品上でDWH開発をしているので、その際に纏まっていたら助かると思った仕様の違いを纏めました。
整理したいストレージサービスはこの2つ。
- Azure Blob Storage
- Azure Data Lake Storage Gen2
Azure Data Lake Storage Gen1は2024年2月に廃止。
https://learn.microsoft.com/en-us/answers/questions/281107/retirement-announcement-azure-data-lake-storage-ge
特徴
関係性のイメージとしてはADLS Gen2 = Azure Blob Storage + ADLS Gen1。
Blob Storage:
ADLS Gen2と比較して安い。仕組みがシンプル。
Azureで長く使われているサービスのため、ほかの製品や外部サービスのIF先として接続設定が提供されている可能性が高く、間口が広い(のではないかと個人的に思う)。
ADLS Gen2:
蓄積したデータを扱う際の操作性が良い。
ディレクトリ単位で操作が可能なことにより、分析ユースケースでのストレージと取得のパフォーマンスが向上し、分析コストが削減可能。
削減イメージとして、例えば同じ量のデータを格納しているストレージに対してBlobは広範囲をスキャンしに行く。それに対しADLS Gen2はパーティション設計するなどして特定の範囲をスキャンしてデータを取得しに行くことができるため、スキャン量を抑えることができる。
上記のように、使いようによってはコストがBlob > ADLS Gen2になることもあるため用途に適した選定を行う必要がある。
採用シナリオ
Blob Storage:
初期の頃から提供されているサービス。複雑な設計は対応できない。例えば大量の非構造化データを効率的に保存および管理する目的向け。
<具体的な採用例>
インタフェース領域用
画像やドキュメントを直接ブラウザに配信する用
バックアップと復元、障害復旧、アーカイブのためのデータの保存用
ADLS Gen2:
Blob Storageを基に作成された後発サービス。ストレージ機能 + ビッグ データ分析専用の一連の機能を備えている。設計の柔軟性が高く、蓄積層に採用するのはこちらがお勧め。
<具体的な採用例>
モダンなDWHの構築用
ビッグデータに対する高度な分析用
リアルタイム分析ソリューションの構築用
特に気になった仕様
階層構造が構成できるか否か
Blob Storage:構成不可
ADLS Gen2:構成可能
フォルダとファイルのように、階層構造を取ることがADLS Gen2は可能だが、Blob Storageはフラットファイル構造のみの提供で構成出来ない。ただし、Blob Storageも疑似的に階層型名前空間を表現できる。これはあくまで階層型で表現されていそうに見せているだけであって実態はフラットな(≒階層構造ではない)状態で保持している。
処理を実装する場合の操作イメージが異なるので、設計時は注意したい。
※ この記事が分かり易い。
https://azure.github.io/jpazpaas/2023/11/08/difference-between-flat-and-hierarchical-namespaces.html
さいごに
執筆中にAzureアカウントの無料クレジットが切れました…追記していきたいので、また今度機会があれば。
参考
https://azure.github.io/jpazpaas/2023/11/08/difference-between-flat-and-hierarchical-namespaces.html
https://medium.com/awesome-azure/azure-difference-between-azure-blob-storage-and-azure-data-lake-storage-comparison-azure-blob-vs-adls-gen2-81af5ef2a6e1
https://learn.microsoft.com/ja-jp/azure/storage/blobs/create-data-lake-storage-account
https://learn.microsoft.com/ja-jp/shows/azure-friday/azure-data-lake-storage-gen2-overview
https://azure.microsoft.com/ja-jp/blog/a-closer-look-at-azure-data-lake-storage-gen2/