1. ホーム
  2. azure

[解決済み] AzureストレージのBlobコンテナは、小さなものをたくさん持つのと、大きなものを一つ持つのと、どちらが良いですか?

2023-03-19 23:31:14

質問

つまり、シナリオは次のようなものです。

Azure Storage にデータの blob を書き込む Web サービスの複数のインスタンスを持っています。受信した時間に応じて、Blob をコンテナ (または仮想ディレクトリ) にグループ化する必要があります。時々(最悪の場合、毎日)、古いBlobが処理され、その後削除されます。

2つのオプションがあります。

選択肢1

例えば)"blobs"というコンテナを1つ作り、そのコンテナにすべてのブログを格納します。各blobは、ディレクトリ名を受信した時刻とするディレクトリ形式の名前を使用します(例:"hr0min0/data.bin", "hr0min0/data2.bin", "hr0min30/data3.bin", "hr1min45/data.bin", .........., "。, "hr23min0/dataN.bin", etc - 毎回新しいディレクトリが作成されます。 X 分ごとに新しいディレクトリを作成します)。これらの blob を処理するものは、まず hr0min0 blob を処理し、次に hr0minX を処理します (処理中も blob は書き込まれています)。

オプション2

到着時刻に基づいた名前を持つ多くのコンテナ(最初はblobs_hr0min0、次にblobs_hr0minXというコンテナなど)があり、コンテナ内のすべてのblobは、名前の付いた時刻に到着したblobになります。これらのブログを処理するものは、一度に1つのコンテナを処理します。

そこで質問ですが、どのオプションが良いのでしょうか?それとも、多くのコンテナが未知の問題を引き起こす可能性があるため、オプション 1 が良いのでしょうか?

どのように解決するのですか?

Win Azure の blobs ストレージのパーティショニングはコンテナではなく blob レベルで行われるため、(スケーラビリティ/並列化の観点からは)あまり関係ないと思います。異なるコンテナに分散する理由は、アクセス制御 (例: SAS) や総ストレージ サイズに関係することが多いです。

詳しくはこちらをご覧ください。 http://blogs.msdn.com/b/windowsazurestorage/archive/2010/05/10/windows-azure-storage-abstractions-and-their-scalability-targets.aspx

("Partitions"までスクロールしてください)。

引用元

ブロブ - パーティション・キーはブロブ名までなので、異なるブロブへのアクセスを多くのサーバーに負荷分散することができます。 多くのサーバーで異なる blob へのアクセスをロード バランシングして、アクセスをスケール アウトすることができます。 アクセスをスケールアウトすることができます。これにより、コンテナを必要なだけ大きくすることができます。 コンテナを必要なだけ大きくすることができます(ストレージアカウントの容量制限内で)。ただし トレードオフは、複数のBlobにまたがるアトミックなトランザクションを実行する機能を提供しないことです。 トランザクションを実行する機能は提供されません。