私は Windows Azure 用の小さな Web アプリケーションを作成しています。これは明らかに、ブロブの保存にブロブ ストレージを使用する必要があります。
挿入時に BLOB の一意の名前を自動的に生成する関数または方法はありますか?
私は Windows Azure 用の小さな Web アプリケーションを作成しています。これは明らかに、ブロブの保存にブロブ ストレージを使用する必要があります。
挿入時に BLOB の一意の名前を自動的に生成する関数または方法はありますか?
そのためにGuidを使用できます。
string blobName = Guid.NewGuid().ToString();
「挿入時に」一意の名前を生成するものはありません。事前に名前を考え出す必要があります。
BLOBの名前を選択するときは、ある種の連続番号(BLOBの名前の最初または最後)を生成するアルゴリズムを使用する場合は注意が必要です。Azure Storageは、負荷分散のために名前に依存しています。順次値を使用すると、Azureがストレージの適切な負荷分散を妨げる可能性があるため、AzureBlobへのアクセス/書き込みで競合が発生する可能性があります。各ノード(つまりサーバー)で60MB/秒を取得します。したがって、適切な負荷分散を確保し、複数のストレージノードで60MB /秒を活用するには、BLOBにランダムな名前を使用する必要があります。Sandrinoが推奨しているように、私は通常、この問題を回避するためにGuidを使用します。
Sandrinoが言ったこと (複製される可能性が非常に低い GUID を使用)に加えて、競合のない識別子の例を生成するいくつかのサードパーティ ライブラリを検討できます: Flake ID Generator
編集
Herveは、どの BLOB 名でも考慮する必要がある非常に有効な Azure BLOB 機能、つまりAzure Storage の負荷分散と BLOB のパーティショニングを指摘しています。
Azure はすべての BLOB をパーティション サーバーに保持します。特定の BLOB を格納するために使用するパーティション サーバーは、BLOB コンテナーと BLOB ファイル名によって決まります。残念ながら、ブロブのパーティショニングに使用されるアルゴリズムを説明するドキュメントを見つけることができませんでした。
Azure Blob アーキテクチャの詳細については、Windows Azure ストレージ アーキテクチャの概要に関する記事を参照してください。