本页面简要介绍了分层命名空间、主要功能、常见用例、优势和需要考虑的限制。
概览
分层命名空间是 Cloud Storage 提供的一项功能,可让您将对象整理到文件夹中。借助分层命名空间,您可以将数据存储在逻辑文件系统结构中。在文件系统结构中整理数据可提高性能、确保一致性,并简化对数据密集型和文件导向型工作负载的管理。
文件夹管理操作可提供可靠性和管理功能,包括创建、删除、列出和重命名文件夹。对象的分层组织简化了数据组织,并简化了数据管理任务。在启用了分层命名空间的存储桶中,文件夹可以包含对象、其他文件夹,或两者的组合。
您必须在创建存储桶时选择是否使用分层命名空间;存储桶创建后,其分层命名空间设置将无法更改。如需了解如何为存储桶启用分层命名空间,请参阅创建和管理启用了分层命名空间的存储桶。
下图显示了一个启用了分层命名空间的存储桶示例,其中对象按分层结构的文件夹进行整理。
主要特性
分层命名空间提供以下功能:
初始每秒查询次数 (QPS) 较高:与未启用分层命名空间的存储分区相比,启用了分层命名空间的存储分区可为读写对象提供高达 8 倍的初始 QPS 限制。更高的初始 QPS 可让您更轻松地扩展数据密集型工作负载,并提高吞吐量。如需了解在启用了分层命名空间的存储分区中使用文件夹时的性能优化方法,请参阅文件夹管理。
文件夹:文件夹充当对象和其他文件夹的容器,支持创建、删除和获取文件夹等操作。
重命名文件夹:重命名文件夹操作可帮助您以原子方式重命名文件夹及其底层文件夹的路径,而无需删除任何对象。这种方法既高效又省时,对于包含多个对象的大型文件夹尤其如此。
列出文件夹:列出文件夹操作会列出存储桶中或特定文件夹下的所有文件夹,帮助您管理和了解存储在存储桶中的数据的结构。
何时应为存储桶启用分层命名空间
在使用需要文件系统式层次结构和语义的应用时,您应考虑启用分层命名空间。分层命名空间对数据密集型任务(例如分析、AI 和机器学习工作负载)非常有用。在如下一些常见场景中,您应考虑使用分层命名空间:
基于 Hadoop 的处理:Hadoop 和 Spark 工作负载通常需要类似于文件系统的存储结构,并根据时间为文件和文件夹命名。分层命名空间与 Cloud Storage 连接器集成,可提高吞吐量并实现原子文件夹重命名,从而提高许多数据处理流水线的数据完整性和一致性。
文件导向型工作负载处理:批量分析处理、金融服务或高性能计算等工作负载会根据文件夹和文件的层次结构进行分区。分层命名空间可通过专用的文件夹管理 API 帮助管理这些环境。此外,分层命名空间还可简化对包含其他文件夹和对象的文件夹的管理。只需一个 API 命令,您就可以快速重命名文件夹及其所有内容,从而节省宝贵的时间和资源。
AI 和机器学习处理:TensorFlow、Pandas 和 PyTorch 等 AI 和机器学习工具需要类似于文件系统的访问和语义。分层命名空间(尤其是与 Cloud Storage FUSE 结合使用时)可提高吞吐量并实现高效的数据访问。因此,分层命名空间可提高机器学习模型迭代的性能和可靠性。
在为存储桶启用分层命名空间之前,您应考虑分层命名空间的限制。如需了解分层命名空间的限制,请参阅限制。
分层命名空间的优势
为存储桶启用分层命名空间后,您可以执行以下操作:
优化组织:您可以将数据整理到层次化的文件夹结构中,以便管理和查找文件或数据集。
建立类似于文件系统的生态系统:分层命名空间引入了类似于文件系统的功能,例如文件夹、文件夹重命名和文件夹列出,这些功能对文件导向型应用(包括 Hadoop 生态系统以及 AI 和机器学习工作负载)非常有用。
性能提升:通过扩展数据密集型工作负载以处理更高的吞吐量,您可以提升应用的整体性能。
平台支持
具有分层命名空间的存储桶支持以下 Cloud Storage 平台功能:
所有 Cloud Storage 对象 API 和广泛使用的 Cloud Storage 功能。如需详细了解任何不支持的功能,请参阅限制。
使用 Storage Transfer Service 将数据从标准存储桶转移到具有分层命名空间的存储桶。
与以下产品集成:
Cloud Storage 连接器,由 Dataproc 为用于 Hadoop 工作负载进行维护。如需了解详情,请参阅将启用了分层命名空间的存储桶用于 Hadoop 工作负载
使用客户端访问类似文件系统的存储桶的 Cloud Storage FUSE。
与 Cloud Storage 操作和功能的兼容性
启用了分层命名空间的存储分区会与其他 Cloud Storage 操作进行以下交互:
对象操作
启用了分层命名空间的存储分区会通过以下方式处理对象操作:
- 只要您拥有必要的权限,
Upload
、Rewrite
和Compose
等操作就会自动创建所有缺失的父级文件夹。因此,您无需在上传对象之前预先创建文件夹。 - 虽然文件夹可以在对象操作期间自动创建,但您需要使用
DeleteFolder
操作明确删除它们。 - 将
ListObjects
操作与delimiter
参数搭配使用时,存储分区会将每个子文件夹作为prefix.
返回。不过,默认情况下会排除空文件夹。如需包含空文件夹(类似于典型的文件系统列表),您必须设置includeFoldersAsPrefixes
参数。如需了解在启用了分层命名空间的存储分区中列出对象时的性能优化方法,请参阅列出对象。
托管文件夹操作
已启用分层命名空间的存储分区会通过以下方式处理托管式文件夹操作:
- 启用了分层命名空间的存储分区可通过托管文件夹提供精细的访问权限控制。如需管理文件夹内的访问权限,您必须创建一个与该文件夹同名的托管文件夹,然后对其应用 IAM 政策。没有相应文件夹,托管文件夹便无法存在。
- 创建托管式文件夹会自动创建所有缺少的父级文件夹,包括同名文件夹。
- 删除文件夹会自动删除关联的托管文件夹。
- 重命名文件夹会自动重命名关联的托管文件夹。
- 具有分层命名空间的存储分区必须遵循代管式文件夹名称规则和文件夹名称规则。虽然文件夹名称最多可以嵌套 50 层,但托管式文件夹名称最多只能嵌套 15 层。托管式文件夹名称大小上限受文件夹名称大小上限的限制,该上限为 512 个字节(采用 UTF-8 编码)。
存储分区操作
您可以按照与任何其他存储桶相同的方式删除启用了分层命名空间的存储桶。如果启用了分层命名空间的存储桶仅包含空文件夹,而不包含对象或托管式文件夹,则可以删除该存储桶。
对象生命周期管理
借助对象生命周期管理,您可以根据条件(例如年龄或前缀)自动执行对象操作。不过,由于 RenameFolder
操作,对象生命周期管理规则在具有分层命名空间的存储分区和具有平面命名空间的存储分区中的行为可能会有所不同:
适用于采用扁平命名空间的存储分区的对象生命周期管理规则:重命名操作涉及使用工具重命名每个对象,具体方法是将每个对象复制到目标位置,然后从来源位置删除原始对象。因此,系统会在目标位置创建具有新创建时间的新对象。如果为目标位置应用了基于年龄的对象生命周期管理规则,这些规则不会立即应用于新对象,因为新对象的创建时间会重置。
适用于已启用分层命名空间的存储分区的对象生命周期管理规则:重命名文件夹是在文件夹一级进行的,无需重命名每个对象。因此,系统会保留对象的创建时间,这意味着,如果重命名的对象满足年龄条件,基于年龄的对象生命周期管理规则会立即应用于这些对象。
如何管理启用了分层命名空间的存储分区
您可以列出启用了分层命名空间的所有存储分区,无论其存储布局如何。存储桶的存储布局描述了对象在存储分区内的排列方式(在平面命名空间或分层命名空间中)。如需了解如何查看存储桶的存储布局,请参阅获取存储桶的存储布局。如需列出所有存储分区,请按照列出存储分区中详述的说明操作。
您可以按照与任何其他存储桶相同的方式删除启用了分层命名空间的存储桶。删除时,如果启用了分层命名空间的存储桶仅包含空文件夹,而不包含对象或托管式文件夹,则该存储桶会被视为空。如需了解如何删除存储分区,请参阅删除存储分区。
价格
如需了解价格信息,请参阅 Cloud Storage 价格。
限制
分层命名空间的限制如下:
您必须在创建存储桶时选择是否使用分层命名空间;存储桶创建后,其分层命名空间设置将无法更改。
为了启用分层命名空间,存储桶还必须启用 统一存储桶级访问权限。
对于使用分层命名空间的存储分区,不支持以下 Cloud Storage 功能:
- Autoclass
- 对象版本控制
- 对象保留锁定
- 存储桶锁定
后续步骤
自行试用
如果您是 Google Cloud 新手,请创建一个账号来评估 Cloud Storage 在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
免费试用 Cloud Storage