Eine Strategie zum Herunterladen großer Dateien wird als segmentierte Objektdownloads bezeichnet.
Bei einem solchen Download werden zahlreiche GET
-Anfragen parallel gestellt, wobei die Daten in einer temporären, vorab zugewiesenen Zieldatei gespeichert werden. Sobald alle Slices heruntergeladen wurden, wird die temporäre Datei in die Zieldatei umbenannt.
Segmentierte Objektdownloads können deutlich schneller sein, wenn die Netzwerk- und Laufwerkgeschwindigkeit keine einschränkenden Faktoren sind. Allerdings verursachen segmentierte Objektdownloads mehrere Schreibvorgänge an verschiedenen Stellen des Laufwerks, sodass diese Download-Strategie die Leistung von Laufwerken mit langsamen Suchzeiten beeinträchtigen kann, insbesondere wenn ein Download in eine große Anzahl von Segmenten unterteilt wird. Tools wie die Google Cloud CLI haben niedrige Standardwerte für die Anzahl der erstellten Segmente, um mögliche Leistungseinbußen zu minimieren.
Segmentierte Objektdownloads sollten immer eine schnelle zusammensetzbare Prüfsumme (CRC32C) verwenden, um die Datenintegrität der Segmente zu verifizieren. Für die Durchführung von segmentierten Objektdownloads benötigen Tools wie die gcloud CLI eine kompilierte Version von crcmod auf dem Computer, auf dem der Download durchgeführt wird. Wenn das kompilierte crcmod nicht verfügbar ist, führt die gcloud CLI stattdessen nicht segmentierte Objektdownloads aus.
So verwenden Tools und APIs segmentierte Objektdownloads
Abhängig davon, wie Sie mit Cloud Storage interagieren, werden segmentierte Objektdownloads möglicherweise automatisch in Ihrem Namen verwaltet. In diesem Abschnitt wird das Verhalten des segmentierten Objektdownloads für verschiedene Tools beschrieben und Sie erfahren, wie Sie das Verhalten ändern können.
Console
Die Google Cloud Console führt keine segmentierten Objektdownloads durch.
Befehlszeile
Standardmäßig aktiviert gcloud storage cp
die segmentierten Objektdownloads.
Sie können steuern, wie und wann die gcloud CLI segmentierte Objektdownloads ausführt. Ändern Sie dazu die folgenden Attribute:
storage/sliced_object_download_threshold
: Die minimale Gesamtdateigröße für einen segmentierten Objektdownload. Sie können alle segmentierten Objektdownloads deaktivieren. Setzen Sie dazu diesen Wert auf0
.storage/sliced_object_download_max_components
: Die maximale Anzahl von Slices, die im Download verwendet werden sollen. Legen Sie0
für kein Limit fest. In diesem Fall wird die Anzahl der Slices ausschließlich durchstorage/sliced_object_download_component_size
bestimmt.storage/sliced_object_download_component_size
: Die Zielgröße für jedes Download-Segment. Dieses Attribut wird ignoriert, wenn die Datei insgesamt so groß ist, dass für das Herunterladen von Slices dieser Größe mehr Slices als zulässig erforderlich sind, wie instorage/sliced_object_download_max_components
festgelegt.
Um diese Attribute zu ändern, erstellen Sie eine benannte Konfiguration und wenden diese entweder mit dem projektweiten Flag --configuration
pro Befehl oder für alle gcloud CLI-Befehle mit dem gcloud config set
-Befehl an.
Es wird kein zusätzlicher lokaler Speicherplatz benötigt, wenn Sie die gcloud CLI für segmentierte Objektdownloads verwenden. Wenn der Download vor dem Abschluss fehlschlägt, führen Sie den Befehl noch einmal aus, um die fehlgeschlagenen Segmente fortzusetzen. Segmente, die vor dem Fehler erfolgreich heruntergeladen wurden, werden bei einem erneuten Versuch nicht noch einmal heruntergeladen, es sei denn, das Quellobjekt hat sich zwischen den Downloadversuchen geändert.
Temporäre heruntergeladene Objekte werden im Zielverzeichnis mit dem Suffix _.gstmp
in ihrem Namen angezeigt.
Clientbibliotheken
Java
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Java API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Sie können segmentierte Objektdownloads ausführen. Setzen Sie dazu AllowDivideAndConquer
auf true
.
Beispiel:
Node.js
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Node.js API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Sie können segmentierte Objektdownloads mit der Methode downloadFileInChunks
ausführen. Beispiel:
Python
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Python API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Sie können segmentierte Objektdownloads mit der Methode download_chunks_concurrently
ausführen. Beispiel:
REST APIs
Sowohl die JSON API als auch die XML API unterstützen Bereichs-GET
-Anfragen. Sie können also beide APIs verwenden, um Ihre eigene Strategie für einen segmentierten Objektdownload zu implementieren.
Um vor Datenbeschädigung durch das Ändern des Quellobjekts während des Downloads zu schützen, sollten Sie in jeder Download-Anfrage für ein Segment des Objekts die Generierungsnummer des Quellobjekts angeben.