Le namespace hiérarchique organise les objets dans une arborescence de répertoires. Il permet des opérations atomiques de renommage de répertoires et d'objets sans lister tous les objets partageant un même préfixe. Contrairement au namespace plat par défaut qui simule les répertoires à l'aide de barres obliques (/), le namespace hiérarchique améliore considérablement les performances de gestion des répertoires.
Avantages
-
Opérations atomiques sur les répertoires
Dans un namespace plat, les applications doivent parfois traiter des millions d'objets pour une seule tâche au niveau du répertoire. Avec le namespace hiérarchique, la mise à jour d'un répertoire parent est une opération atomique unique qui exécute simultanément plusieurs tâches au niveau du répertoire.
-
Performances optimisées
Le namespace hiérarchique élimine la nécessité de répliquer ou de convertir les données avant leur analyse, ce qui améliore les performances de gestion des répertoires. Cet aspect est crucial pour les frameworks Big Data tels que Hive et Spark, qui écrivent les résultats dans des répertoires temporaires puis les renomment une fois la tâche terminée. Dans un namespace plat, le renommage prend souvent plus de temps que la tâche elle-même.
Procédure
-
Activez le namespace hiérarchique.
Vous ne pouvez activer le namespace hiérarchique qu'à la création du bucket. Vous ne pouvez pas le désactiver par la suite. Pour plus d'informations, consultez Créer un bucket.
-
Gérez les répertoires dans un bucket utilisant le namespace hiérarchique.
Le tableau suivant présente les méthodes de gestion des répertoires dans un bucket utilisant le namespace hiérarchique.
Méthode d'implémentation
Description
Console OSS
Console de gestion web
Exemples de code SDK pour les opérations sur les répertoires
Remarques d'utilisation
-
Régions prises en charge
Le namespace hiérarchique est disponible uniquement dans les régions suivantes : États-Unis (Silicon Valley), Japon (Tokyo), Royaume-Uni (Londres) et Malaisie (Kuala Lumpur).
-
Création de répertoires
Un nom de répertoire ne peut pas contenir de barres obliques (/) consécutives.
Vous ne pouvez pas écrire de données directement dans les répertoires. La valeur Content-Length d'un répertoire doit être définie sur 0.
La valeur Content-Type d'un répertoire doit être définie sur
application/x-directory. -
Renommage d'un répertoire ou d'un objet
Un répertoire ou un objet renommé ne peut pas porter le même nom qu'un répertoire ou un objet existant dans le même bucket.
Le répertoire parent du chemin de destination doit exister. Par exemple, pour renommer un répertoire en
destfolder/examplefolder/test, le répertoire parentdestfolder/examplefolderdoit exister dans le bucket. -
Suppression de répertoires
-
Suppression récursive
Supprime un répertoire ainsi que tous ses objets et sous-répertoires. Cette opération nécessite l'autorisation DeleteObject sur le répertoire et sur tout son contenu.
Par exemple, pour supprimer de manière récursive dest/testfolder, vous devez disposer de l'autorisation DeleteObject sur
dest/testfolderetdest/testfolder/*.ImportantSi une requête d'écriture concurrente cible un répertoire pendant sa suppression récursive, l'opération de suppression peut échouer.
-
Suppression non récursive
Supprime uniquement les répertoires vides. Cette opération nécessite l'autorisation DeleteObject sur le répertoire cible.
-
Fonctionnalités non prises en charge
Le tableau suivant présente les fonctionnalités non prises en charge par les buckets utilisant le namespace hiérarchique.
|
Catégorie |
Description |
|
Fonctionnalités de bucket |
|
|
Fonctionnalités d'objet |
|