L'une des stratégies d'importation de fichiers volumineux est appelée importation composite parallèle. Dans ce type d'importation, un fichier est divisé en un maximum de 32 fragments qui sont importés en parallèle d'objets temporaires. L'objet final est ensuite recréé à l'aide des objets temporaires, et ceux-ci sont supprimés.
Les importations composites parallèles peuvent être considérablement plus rapides si la vitesse du réseau et celle du disque ne sont pas des facteurs limitants. Cependant, l'objet final stocké dans votre bucket est un objet composite qui ne comporte qu'un hachage crc32c et non un hachage MD5. Par conséquent, vous devez utiliser crcmod pour effectuer des vérifications d'intégrité lors du téléchargement de l'objet à l'aide d'applications Python. Vous ne devez effectuer des importations composites parallèles que si les conditions suivantes s'appliquent :
Les utilisateurs de Python, y compris les utilisateurs de gsutil, qui ont besoin de télécharger vos objets ont installé google-crc32c ou crcmod.
Par exemple, si vous utilisez Python pour importer des éléments vidéo qui ne sont diffusés que par une application Java, les importations composites parallèles constituent un choix judicieux, car des implémentations CRC32C efficaces sont disponibles en Java.
Les objets importés n'ont pas besoin de comporter de hachage MD5.
Utilisation des importations composites parallèles par les outils et les API
Selon votre manière d'interagir avec Cloud Storage, les importations composites parallèles peuvent être gérées automatiquement en votre nom. Cette section décrit le comportement d'importation composite parallèle pour différents outils et fournit des informations sur la façon dont vous pouvez le modifier.
Console
La console Google Cloud n'effectue pas d'importations composites parallèles.
Ligne de commande
Vous pouvez configurer comment et quand gcloud storage cp
effectue des importations composites parallèles en modifiant les propriétés suivantes :
storage/parallel_composite_upload_enabled
: propriété permettant d'activer les importations composites parallèles. Si la valeur estFalse
, désactivez les importations composites parallèles. Si la valeur estTrue
ouNone
, effectuez des importations composites parallèles pour les objets qui répondent aux critères définis dans les autres propriétés. Le paramètre par défaut estNone
.storage/parallel_composite_upload_compatibility_check
: propriété permettant d'activer ou de désactiver les contrôles de sécurité. Si la valeur estTrue
,gcloud storage
n'effectue des importations composites parallèles que lorsque toutes les conditions suivantes sont remplies :- La classe de stockage de l'objet importé est
STANDARD
. - Le bucket de destination ne dispose pas de règle de conservation.
- La préservation à titre conservatoire des objets par défaut n'est pas activée sur le bucket de destination.
Notez que pour vérifier ces conditions, gcloud CLI récupère les métadonnées du bucket de destination dans le cadre de la commande d'importation.
Si la valeur est
False
,gcloud storage
n'effectue aucun contrôle. Le paramètre par défaut estTrue
.- La classe de stockage de l'objet importé est
storage/parallel_composite_upload_threshold
: taille totale minimale des fichiers pour effectuer une importation composite parallèle. Le paramètre par défaut est de 150 Mio.storage/parallel_composite_upload_component_size
: taille maximale de chaque objet temporaire. Cette propriété est ignorée si la taille totale du fichier est si importante que plus de 32 morceaux de cette taille seraient nécessaires.storage/parallel_composite_upload_component_prefix
: préfixe utilisé lors de l'attribution de noms aux objets temporaires. Cette propriété peut être définie soit en tant que chemin absolu, soit en tant que chemin spécifique à l'objet final. Pour en savoir plus, consultez la description de la propriété. Le préfixe par défaut est le chemin absolu/gcloud/tmp/parallel_composite_uploads/see_gcloud_storage_cp_help_for_details
.
Vous pouvez modifier ces propriétés en créant une Configuration nommée et en appliquant la configuration soit pour chaque commande à l'aide de l'option --configuration
à l'échelle du projet, soit pour toutes les commandes gcloud CLI à l'aide de la commande gcloud config set
.
Aucun espace disque local supplémentaire n'est requis lorsque vous utilisez gcloud pour effectuer des importations composites parallèles. Si une importation composite parallèle échoue avant la composition, exécutez à nouveau la commande gcloud CLI afin de tirer parti des importations avec reprise pour les objets temporaires qui ont échoué. Tous les objets temporaires importés avec succès avant l'échec ne sont pas réimportés lorsque vous reprenez l'importation.
Les objets temporaires sont nommés selon le modèle suivant :
TEMPORARY_PREFIX/RANDOM_VALUE_HEX_DIGEST_COMPONENT_ID
Où :
TEMPORARY_PREFIX
est contrôlé par la propriétéstorage/parallel_composite_upload_component_prefix
.RANDOM_VALUE
est une valeur numérique aléatoire.HEX_DIGEST
est un hachage dérivé du nom de la ressource source.COMPONENT_ID
est le numéro séquentiel du composant.
Généralement, les objets temporaires sont supprimés à la fin d'une importation composite parallèle. Toutefois, pour éviter de laisser des objets temporaires, vous devez vérifier l'état de sortie à partir de la commande gcloud CLI et supprimer manuellement tous les objets temporaires qui ont été importés dans le cadre d'une importation annulée.
Bibliothèques clientes
Java
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Java.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Vous pouvez effectuer des importations composites parallèles en définissant AllowParallelCompositeUpload
sur true
.
Exemple :
Node.js
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Node.js.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
La bibliothèque cliente Node.js n'accepte pas les importations composites parallèles. Utilisez plutôt les importations en plusieurs parties avec l'API XML.
Python
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Python.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
La bibliothèque cliente Python n'accepte pas les importations composites parallèles. Utilisez plutôt les importations en plusieurs parties avec l'API XML.
API REST
L'API JSON et l'API XML permettent toutes deux d'importer des fragments d'objets en parallèle et de les recombiner en un seul objet grâce à l'opération compose
.
Tenez compte des éléments suivants lorsque vous concevez du code pour des importations composites parallèles :
Lorsque vous utilisez l'opération
compose
, les objets sources ne sont pas affectés par le processus de composition.En d'autres termes, si ces objets sont censés être temporaires, vous devez les supprimer explicitement une fois la composition terminée. Dans le cas contraire, les objets sources restent dans votre bucket et sont facturés en conséquence.
Afin d'empêcher les modifications d'objets sources entre les requêtes d'importation et de composition, vous devez fournir un numéro de génération attendu pour chaque source.