OSS分层命名空间功能,将对象(Object)组织到多级目录层级结构中,使得重命名目录或文件成为单个原子操作,无需列举和处理共享目录名称前缀的所有对象。与原Bucket内部扁平命名空间中使用正斜线+文件名的方式模拟文件夹相比,分层命名空间功能极大地提高了目录管理操作的性能。
功能优势
原子目录操作
在OSS扁平命名空间没有真实目录的情况下,应用程序可能需要处理数百万个单独的对象才能完成目录级任务。 相比之下,分层命名空间可通过更新单个父目录批量处理多个任务。
性能优化
与OSS扁平命名空间相比,分层命名空间不需要在分析数据前,对数据进行复制或转换,因此极大地提高了目录管理操作的性能。分层命名空间对于大数据分析框架尤为重要,例如Hive、Spark等工具在作业过程中通常将输出结果写入临时路径,然后在作业结束时需要对该位置进行重命名。 如果没有分层命名空间,该场景下重命名操作通常比分析过程本身更耗时。
操作步骤
注意事项
支持地域
目前仅支持在美国(硅谷)、日本(东京)、英国(伦敦)、马来西亚(吉隆坡)地域开启分层命名空间。
创建目录
设置的目录绝对路径(DirectoryName)中不能出现连续的正斜线(/)。
目录不支持传入数据,目录的Content-Length固定为0。
目录的Content-Type固定为
application/x-directory
,无法修改。重命名目录或文件
重命名后的目录或文件不能与同一个Bucket下已存在的目录或者文件重名。
重命名后的目录或文件,其父级目录必须存在。例如目录重命名为
destfolder/examplefolder/test
,则Bucket中必须存在destfolder/examplefolder
。删除目录
递归删除
递归删除用于删除目录下的文件和子目录。使用递归删除方式删除目录时,您必须拥有目录以及该目录下所有文件和子目录的DeleteObject权限。
例如要递归删除dest目录下的子目录testfolder及其包含的所有文件,您必须拥有
dest/testfolder
和dest/testfolder/*
的DeleteObject权限。重要使用递归删除方式删除目录时,如果同时存在向目录的并发写请求,则可能导致目录删除失败。
非递归删除
非递归删除用于删除空目录。使用非递归方式删除目录时,您必须拥有目录的DeleteObject权限。
不支持的功能
在开启了分层命名空间的Bucket中,不支持使用以下功能:
分类 | 说明 |
Bucket级别的功能 |
|
Object级别的功能 |
|