Grundlegendes zu Block-BLOBs, Anhang-BLOBS und Seiten-BLOBs
Der Speicherdienst bietet drei Typen von Blobs, Blockblobs, Anfügeblobs und Seitenblobs. Beim Erstellen des BLOB geben Sie an, welchen Typ Sie verwenden möchten. Nachdem das Blob erstellt wurde, kann sein Typ nicht mehr geändert werden, und er kann nur mithilfe von Vorgängen aktualisiert werden, die für diesen Blobtyp geeignet sind, d. h. schreiben einen Block oder eine Liste von Blöcken in ein Blockblob, das Anfügen von Blöcken an ein Anfügeblob und das Schreiben von Seiten in ein Seitenblob.
Alle BLOBs geben Änderungen, für die ein Commit ausgeführt wurde, sofort wieder. Jede Version des BLOB verfügt über ein eindeutiges Tag, das ETag genannt wird und das Sie in Zugriffsbedingungen verwenden können, um zu gewährleisten, dass Änderungen nur in einer bestimmten Instanz des BLOB durchgeführt werden.
Jedes BLOB kann für exklusiven Schreibzugriff geleast werden. Wenn ein BLOB geleast wurde, können nur Aufrufe, die die aktuelle Lease-ID enthalten, das BLOB oder (bei Block-BLOBs) dessen Blöcke ändern.
Jedes BLOB kann in einer Momentaufnahme dupliziert werden. Informationen zu Momentaufnahmen finden Sie unter Erstellen einer Momentaufnahme eines Blobs.
Hinweis
Blobs im Azure-Speicheremulator sind auf eine maximale Größe von 2 GiB beschränkt.
Informationen zu Blockblobs
Blockblobs sind für das effiziente Hochladen großer Datenmengen optimiert. Blockblobs bestehen aus Blöcken, die jeweils durch eine Block-ID identifiziert werden. Ein Blockblob kann bis zu 50.000 Blöcke enthalten. Jeder Block in einem Blockblob kann eine andere Größe aufweisen, bis zur maximal zulässigen Größe für die verwendete Dienstversion. Um ein Blockblob zu erstellen oder zu ändern, schreiben Sie einen Satz von Blöcken über den Vorgang Put Block (Block setzen) und commiten Sie die Blöcke dann mit dem Vorgang Blockliste platzieren in ein Blob.
Blobs, die kleiner als eine bestimmte Größe (bestimmt durch die Dienstversion) sind, können mit einem einzelnen Schreibvorgang über Put Blob vollständig hochgeladen werden.
In der folgenden Tabelle werden die maximal zulässigen Block- und Blob-Größen für die Dienstversion beschrieben.
Dienstversion | Maximale Blockgröße (über Put Block) | Maximale Blob-Größe (über Put Block-Liste) | Maximale Blob-Größe über einen einzelnen Schreibvorgang (über Put Blob) |
---|---|---|---|
Ab Version 2019-12-12 | 4\.000 MiB | Ungefähr 190,7 TiB (4-000 MiB · 50.000 Blöcke) | 5000 MiB |
Version 2016-05-31 bis Version 2019-07-07 | 100 MiB | Ungefähr 4,75 TiB (100 MiB X 50.000 Blöcke) | 256 MiB |
Versionen vor 2016-05-31 | 4 MiB | Ungefähr 195 GiB (4 MiB X 50.000 Blöcke) | 64 MiB |
Speicherclients sind standardmäßig auf einen maximalen Upload eines einzelnen Blobs von 128 MiB festgelegt, der in der Azure Storage-Clientbibliothek für .NET Version 11 mithilfe der SingleBlobUploadThresholdInBytes-Eigenschaft des BlobRequestOptions-Objekts festgelegt werden kann. Wenn ein Block-BLOB-Upload größer ist als der Wert in dieser Eigenschaft, wird die Datei von Speicherclients in mehrere Blöcke aufgeteilt. Sie können die Anzahl der Threads festlegen, die zum parallelen Hochladen der Blöcke pro Anforderung verwendet werden, indem Sie die ParallelOperationThreadCount-Eigenschaft des BlobRequestOptions-Objekts verwenden.
Wenn Sie einen Block in ein BLOB in Ihrem Speicherkonto hochladen, wird er dem angegebenen Block-BLOB zugeordnet. Der Block wird aber erst dann Teil des BLOB, wenn Sie für eine Liste von Blöcken, die die ID des neuen Blocks enthält, einen Commit ausführen. Neue Blöcke verbleiben ohne Commit, bis explizit ein Commit ausgeführt wird oder die Blöcke verworfen werden. Es können maximal 100.000 nicht festgelegte Blöcke vorhanden sein. Durch das Schreiben eines Blocks wird die Uhrzeit der letzten Änderung eines vorhandenen BLOB nicht aktualisiert.
Block-BLOBs stellen Funktionen bereit, die Ihnen bei der Verwaltung großer Dateien im Netzwerk helfen. Mit einem Block-BLOB können Sie mehrere Blöcke parallel hochladen, um die Uploadzeit zu verkürzen. Jedem Block kann ein MD5-Hash hinzugefügt werden, mit dem die Übertragung überprüft und so der Uploadstatus nachverfolgt werden kann, um Blöcke bei Bedarf neu zu übermitteln. Sie können Blöcke in beliebiger Reihenfolge hochladen und die endgültige Reihenfolge der Blöcke beim abschließenden Commit in der Blockliste festlegen. Sie können auch einen neuen Block hochladen, um einen vorhandenen Block mit derselben Block-ID zu ersetzen, wenn für den Block noch kein Commit ausgeführt wurde. Sie haben eine Woche Zeit, den Commit für Blöcke in einem BLOB auszuführen, bevor die Blöcke verworfen werden. Zudem werden alle Blöcke ohne Commit auch dann verworfen, wenn ein Commit ausgeführt wird und die Blöcke nicht in der Blockliste des Commitvorgangs enthalten sind.
Sie können ein vorhandenes Block-BLOB ändern, indem Sie Blöcke einfügen oder ersetzen oder vorhandene Blöcke löschen. Nachdem Sie den oder die Blöcke hochgeladen haben, die sich geändert haben, bestätigen Sie die neue Version des BLOB, indem Sie in einem einzelnen Commitvorgang einen Commit für die neuen und für alle vorhandenen Blöcke ausführen, die erhalten bleiben sollen. Wenn Sie einen identischen Bytebereich an zwei verschiedenen Speicherorten in einem BLOB einfügen möchten, können Sie für einen Block in einem einzelnen Commitvorgang einen Commit an zwei Speicherorten ausführen. Wenn einer der Blöcke während eines Commitvorgangs nicht gefunden wird, schlägt der gesamte Commitvorgang fehl, und das BLOB wird nicht geändert. Jede Blockbindung überschreibt die vorhandenen Eigenschaften und Metadaten des Blobs und verwirft alle nicht festgeschriebenen Blöcke.
Block-IDs sind Zeichenfolgen derselben Länge innerhalb eines BLOB. Block-Clientcode verwendet üblicherweise die Base-64-Codierung, um eine normalisierte Version der Zeichenfolgen mit gleicher Länge zu erstellen. Bei Verwendung der Base-64-Codierung darf die Ausgangszeichenfolge nicht länger sein als 64 Bytes. In unterschiedlichen BLOBs können dieselben Block-IDs verwendet werden.
Wenn Sie einen Block für ein BLOB schreiben, das noch nicht vorhanden ist, wird ein neues Block-BLOB mit der Größe 0 Bytes erstellt. Dieses BLOB wird in BLOB-Listen aufgeführt, die BLOBs ohne Commit enthalten. Wenn Sie keinen Block für dieses Blob committen, werden er und seine nicht festgeschriebenen Blöcke eine Woche nach dem letzten erfolgreichen Blockupload verworfen. Alle Blöcke ohne Commit werden auch dann verworfen, wenn ein neues BLOB mit demselben Namen in einem einzelnen Schritt erstellt wird (statt in zwei Schritten Blöcke hochzuladen und dann einen Commit auszuführen).
Informationen zu Seitenblobs
Seitenblobs stellen eine Sammlung von 512-Byte-Seiten dar, die für zufällige Lese- und Schreibvorgänge optimiert sind. Um ein Seiten-BLOB zu erstellen, initialisieren Sie zunächst das Seiten-BLOB und geben hierbei die maximale Größe an, die für das Seiten-BLOB verfügbar sein soll. Um den Inhalt eines Seitenblobs hinzuzufügen oder zu aktualisieren, schreiben Sie eine Seite oder Seiten, indem Sie einen Offset und einen Bereich angeben, die beide an Seitengrenzen von 512 Byte ausgerichtet sind. Ein Schreibvorgang in ein Seitenblob kann nur eine Seite, einige Seiten oder bis zu 4 MiB des Seitenblobs überschreiben. Schreibvorgänge für ein Seiten-BLOB erfolgen direkt im BLOB und erfordern keinen zusätzlichen Commitvorgang. Die maximale Größe für ein Seitenblob beträgt 8 TiB.
Datenträger virtueller Azure-Computer werden durch Seitenblobs unterstützt. Azure bietet zwei Arten dauerhaften Datenträgerspeichers: Premium und Standard. Premium-Speicher für Seitenblobs ist für Workloads virtueller Azure-Computer konzipiert, die eine konsistente hohe Leistung und geringe Latenz erfordern. Ausführliche Informationen finden Sie im Abschnitt Ssd Premium im Artikel Auswählen eines Datenträgertyps für IaaS-VMs. Informationen zu den Skalierbarkeitszielen für Storage Premium für Seitenblobs finden Sie unter Skalierbarkeits- und Leistungsziele für Azure Storage.
Informationen zu Anfügeblobs
Ein Anfügeblob besteht aus Blöcken und ist für Anfügevorgänge optimiert. Wenn Sie ein Anfügeblob ändern, werden Blöcke nur am Ende des Blobs über den Vorgang Block anfügen hinzugefügt. Das Aktualisieren oder Löschen vorhandener Blöcke wird nicht unterstützt. Im Gegensatz zu einem Blockblob macht ein Anfügeblob seine Block-IDs nicht verfügbar.
Jeder Block in einem Anfügeblob kann eine andere Größe haben, bis zu maximal 4 MiB, und ein Anfügeblob kann bis zu 50.000 Blöcke enthalten. Die maximale Größe eines Anfügeblobs beträgt daher etwas mehr als 195 GiB (4 MiB x 50.000 Blöcke).