O recurso de hierarchical namespace organiza objetos em uma hierarquia de diretórios e permite renomear diretórios e objetos de forma atômica, sem listar todos os objetos que compartilham um prefixo. Ao contrário do flat namespace padrão, que simula diretórios com barras (/), o hierarchical namespace melhora significativamente o desempenho do gerenciamento de diretórios.
Benefícios
-
Operações atômicas em diretórios
Em um flat namespace, as aplicações podem precisar processar milhões de objetos para executar uma única tarefa no nível de diretório. Com o hierarchical namespace, a atualização de um diretório pai é uma operação atômica única que conclui várias tarefas de diretório simultaneamente.
-
Desempenho otimizado
O hierarchical namespace elimina a necessidade de replicar ou converter dados antes da análise, o que melhora o desempenho do gerenciamento de diretórios. Esse aspecto é fundamental para frameworks de big data como Hive e Spark, que gravam resultados em diretórios temporários e os renomeiam após a conclusão da tarefa. Em um flat namespace, a renomeação frequentemente leva mais tempo do que a própria tarefa.
Procedimento
-
Ative o hierarchical namespace.
O hierarchical namespace só pode ser ativado durante a criação do bucket e não pode ser desativado posteriormente. Para obter mais informações sobre como ativar o hierarchical namespace, consulte Criar um bucket.
-
Execute operações de diretório em um bucket com hierarchical namespace.
A tabela a seguir lista os métodos para gerenciar diretórios em um bucket com hierarchical namespace.
Método de implementação
Descrição
Console do OSS
Console de gerenciamento baseado na web
Exemplos de código do SDK para operações de diretório
Observações de uso
-
Regiões compatíveis
O hierarchical namespace está disponível apenas nas seguintes regiões: EUA (Silicon Valley), Japão (Tóquio), Reino Unido (Londres) e Malásia (Kuala Lumpur).
-
Criação de diretórios
O nome de um diretório não pode conter barras consecutivas (/).
Não é possível gravar dados em diretórios. O Content-Length de um diretório deve ser definido como 0.
O Content-Type de um diretório deve ser definido como
application/x-directory. -
Renomeação de diretório ou objeto
Um diretório ou objeto renomeado não pode ter o mesmo nome de um diretório ou objeto existente no mesmo bucket.
O diretório pai no caminho de destino deve existir. Por exemplo, para renomear um diretório para
destfolder/examplefolder/test, o diretório paidestfolder/examplefolderdeve existir no bucket. -
Exclusão de diretórios
-
Exclusão recursiva
Exclui um diretório e todos os seus objetos e subdiretórios. Requer a permissão DeleteObject no diretório e em todo o seu conteúdo.
Por exemplo, para excluir recursivamente dest/testfolder, é necessária a permissão DeleteObject em
dest/testfolderedest/testfolder/*.ImportanteSe uma solicitação de gravação simultânea tiver como alvo um diretório durante a exclusão recursiva, a exclusão poderá falhar.
-
Exclusão não recursiva
Exclui apenas diretórios vazios. Requer a permissão DeleteObject no diretório de destino.
-
Recursos incompatíveis
A tabela a seguir lista os recursos incompatíveis com buckets com hierarchical namespace.
|
Categoria |
Descrição |
|
Recursos de bucket |
|
|
Recursos de objeto |
|