2013-01-14 22 views

Antwort

7

Sie können eine Guid dafür verwenden:

string blobName = Guid.NewGuid().ToString(); 
4

Zusätzlich zu dem, was Sandrino sagte (GUID verwendet, die von sehr geringe Wahrscheinlichkeit haben wird dupliziert) Sie einige Bibliotheken von Drittanbietern prüfen können die konfliktfreie Identifikatoren Beispiel erzeugen: Flake ID Generator

EDIT

Herve hat auf eine sehr gültige Azure Blob-Funktion hingewiesen, die mit allen Blobnamen in Betracht gezogen werden sollte, nämlich Azure Storage Load Balancing und Blobs Partitioning.

Azure behält alle Blobs in Partitionsservern. Welcher Partitionsserver zum Speichern eines bestimmten Blobs verwendet werden soll, wird für den Blob-Container und den Blob-Dateinamen festgelegt. Leider konnte ich Algorithmus zur Blob-Partitionierung nicht finden und dokumentieren.

Weitere Informationen zur Azure Blob-Architektur finden Sie unter Windows Azure Storage Architecture Overview Artikel.

4

Es gibt nichts, was einen eindeutigen Namen "beim Einfügen" erzeugt; Sie müssen sich den Namen im Voraus vorstellen.

Wenn Sie den Namen Ihres Blobs auswählen, sollten Sie vorsichtig sein, wenn Sie einen Algorithmus verwenden, der eine fortlaufende Nummer irgendeiner Art erzeugt (entweder am Anfang oder am Ende des Namens eines Blobs). Azure Storage basiert auf dem Namen für den Lastenausgleich. Wenn Sie sequenzielle Werte verwenden, kann dies zu Konflikten beim Zugriff auf Azure Blobs führen, da dies verhindern kann, dass Azure seinen Speicher ordnungsgemäß auslastet. Sie erhalten 60 MB/Sek auf jedem Knoten (d. H. Server). Um einen korrekten Lastausgleich zu gewährleisten und 60 MB/Sek. Für mehrere Speicherknoten zu nutzen, müssen Sie zufällige Namen für Ihre Blobs verwenden. Ich verwende normalerweise Guids, um dieses Problem zu vermeiden, genau wie Sandrino es empfiehlt.

+0

das ist ein sehr gültiger Punkt (+1). Übrigens, haben Sie Verweise auf einen Artikel, der den Algorithmus beschreibt, der von der Partitionsebene verwendet wird, um * Blobs * über BLOB-Speicherknoten zu verteilen? Ich denke, dass es aus Frage Sicht sehr vorteilhaft sein würde. – Tom

+0

Nein, tue ich nicht; Früher gab es einen MS-Artikel über die Tatsache, dass es so weiterging (ohne die zugrunde liegenden Details), aber ich kann es nicht mehr finden ... Wenn ich den Link finde, den ich posten werde. Sie können nicht kontrollieren, was MS mit der Partitionierung macht, und es ist wahrscheinlich dynamisch, basierend auf der Verwendung Ihrer Daten und anderer Tenant-Daten. Was ich also tue ist, dass ich die zugrunde liegende Zugriffsschicht als nicht deterministisch betrachte. –

+0

das ist fair genug. Ich habe nur einen Link zu einem Blog gefunden, in dem die Azure Storage-Architektur beschrieben wird: http://blogs.msdn.com/b/windowsazurestorage/archive/2010/12/30/windows-azure-storage-architecture-overview.aspx – Tom