2013-01-14 6 views

答えて

7

あなたはそのためのGuidを使用することができます。

Sandrinoはあなたには、いくつかのサードパーティのライブラリを考慮することができる(を重複しているの 非常に低い確率を持っているGUIDを使用して)言ったことに加えて
string blobName = Guid.NewGuid().ToString(); 
4

ました競合のない識別子の例を生成します。Flake ID Generator

EDIT

Herveは、非常に有効なAzure Blob機能を指摘しています。これは、すべてのBLOB名で考慮する必要があります。AzureストレージロードバランシングとBLOBパーティショニング

Azureはすべてのブロブをパーティションサーバに保持します。特定のblobを格納するために使用されるパーティションサーバは、blobコンテナとblobファイル名で決定されます。残念ながら、ブロブの分割に使用されるアルゴリズムを見つけることはできませんでした。

アズールの詳細ブロブのアーキテクチャはWindows Azure Storage Architecture Overviewの記事で見つかります。

4

「挿入時」に一意の名前を生成するものはありません。あなたは時間の前に名前を思い付く必要があります。

ブロブの名前を選択するときは、何らかの種類の連続番号(ブロブ名の先頭または末尾のいずれか)を生成するアルゴリズムを使用する場合は注意が必要です。 Azure Storageは、ロードバランシングの名前に依存します。シーケンシャル値を使用すると、Azureがストレージのロードバランシングを適切に実行できなくなる可能性があるため、Azureブロブへのアクセス/書き込みで競合が発生する可能性があります。各ノード(サーバー)で60MB /秒が得られます。したがって、適切なロードバランシングを実現し、複数のストレージノードで60MB /秒を活用するには、ブロブにランダムな名前を使用する必要があります。 Sandrinoが推薦しているのと同じように、私は通常この問題を避けるためにGuidsを使います。

+0

非常に有効な点です(+1)。ところで、Blobストレージノード間に* Blobs *を分配するためにパーティションレイヤーが使用するアルゴリズムを記述した記事への参照はありますか?私はそれが質問の観点から非常に有益だろうと思う。 – Tom

+0

いいえ、私はしません。これは(基本的な詳細なしで)続いていたという事実に関するMSの記事がありましたが、私はもうそれを見つけることができません...もし私がリンクを見つけたら私は投稿します。 MSがどのようにパーティション化を行うのかを制御することはできず、データや他のテナントデータの使用状況に基づいて動的である可能性があります。だから私は、基本的なアクセスレイヤーを非決定論的なものとして扱うということです。 –

+0

それは十分です。私は、次のようなAzureストレージアーキテクチャを記述するブログへのリンクを見つけました:http://blogs.msdn.com/b/windowsazurestorage/archive/2010/12/30/windows-azure-storage-architecture-overview.aspx – Tom

関連する問題