关键术语

为了有效使用 Cloud Storage,您应了解它的一些基础概念。本页面概述了适用于 Cloud Storage 的关键术语和概念。

有关使用 Cloud Storage 的简介,请参阅快速入门:使用 Console

项目

Cloud Storage 中的所有数据都属于项目内容。项目包含一组用户和一组 API,以及这些 API 的结算、身份验证和监控设置。您可以拥有一个或多个项目。

存储分区

存储分区是用于存放数据的基本容器。您在 Cloud Storage 中存储的所有内容都必须包含在存储分区中。您可以使用存储分区来整理数据并控制数据的访问权限,但与目录和文件夹不同,您无法嵌套存储分区。由于存储分区的创建和删除存在限制,您设计的存储应用应支持大量对象操作和相对较少的存储分区操作。

创建存储分区时,您需指定全局唯一名称、存放存储分区及其内容的地理位置以及默认的存储类别。您选择的默认存储类别会应用于已添加到存储分区中、但没有明确指定存储类别的对象。

创建存储分区后,您仍可将其默认存储类别更改为存储分区所在位置支持的任何类别;但是,您只能通过删除并重新创建存储分区来更改存储分区的名称和位置。

存储分区名称

存储分区名称比对象名称具有更多的限制,并且必须具有全局唯一性,因为每个存储分区都驻留在单个 Cloud Storage 命名空间中。 此外,存储分区名称可以搭配 CNAME 重定向使用,因此需要符合 DNS 命名约定。详情请参阅存储分区命名准则

存储分区标签

存储分区标签是键值元数据对,可让您对存储分区以及其他 Google Cloud Platform 资源(例如虚拟机实例永久性磁盘)进行分组。例如,您可以使用标签来创建一个值为 alphabetadeltateam 键,并将 team:alphateam:betateam:delta 标签应用到不同的存储分区,以便指明哪个团队与这些存储分区关联。

您可以为每个存储分区应用多个标签(每个存储分区最多可以有 64 个标签)。

  • 键和值的长度均不能超过 63 个字符。
  • 键和值只能包含小写字母、数字字符、下划线和短划线。允许使用国际字符。
  • 标签键必须以小写字母开头,允许使用国际字符。
  • 标签键不能为空。

如需查看在结算中使用标签来整理资源的一般示例,请参阅将结算数据导出至 BigQuery 查询的示例

对象

对象是您存储在 Cloud Storage 中的各个数据。 您可以在存储分区中创建的对象数量不受限制。

对象包含两个组成部分:对象数据对象元数据。对象数据通常是您要存储在 Cloud Storage 中的文件。对象元数据是描述各种对象特质的“名称-值”对的集合。

对象名称

对象的名称在 Cloud Storage 中被视为一项对象元数据。 对象名称可以包含 Unicode 字符的任意组合(采用 UTF-8 编码),长度不得超过 1024 个字节。

对象名称中通常会包含斜杠 (/)。使用斜杠可让对象看起来像是以层次结构存储。例如,您可以将某个对象命名为 /europe/france/paris.jpg,将另一个对象命名为 /europe/france/cannes.jpg。当您列出这些对象时,它们看起来就像是存储在依位置区分的目录层次结构中。但是,Cloud Storage 仍会将这些对象视为不具有任何层次关系的独立对象。

如需了解详情(包括如何重命名对象),请参阅对象命名准则

对象版本和世代号

Cloud Storage 中的对象可以具有不同的版本:默认情况下,当您覆盖对象时,Cloud Storage 会删除旧版本并使用新版本替代。如果为存储分区启用了对象版本控制功能,则当发生覆盖或删除操作时,旧版本将保留在存储分区中。

每个对象版本都由其世代号唯一标识,您可以在对象的元数据中找到该编号。在对象版本控制功能创建对象的旧版本后,您可以使用世代号来引用此旧版本。这样,您就可以恢复存储分区中被覆盖的对象,或永久删除不再需要的旧对象版本。在请求中加入前提条件时也会使用世代号。

资源

资源是 Google Cloud Platform 中的实体。Google Cloud Platform 中的每个项目、存储分区和对象都是一个资源(Compute Engine 实例等对象也是如此)。

资源名称

每个资源都有一个唯一名称作为标识,就像文件名一样。存储分区的资源名称采用 projects/_/buckets/[BUCKET_NAME] 的形式,其中,[BUCKET_NAME] 是存储分区的 ID。对象的资源名称采用 projects/_/buckets/[BUCKET_NAME]/objects/[OBJECT_NAME] 的形式,其中,[OBJECT_NAME] 是对象的 ID。

附加到资源名称末尾的 #[NUMBER] 表示对象的特定世代。#0 是最新对象版本的特殊标识符。当对象的名称以字符串结尾时,建议您添加 #0,否则该字符串将被解读为世代号。

地理位置冗余

具有地理位置冗余性的数据会以冗余方式存储在至少两个不同的地理位置,并且这些位置之间至少相隔 100 英里。存储在多区域位置和双区域位置的对象会具有地理位置冗余性,无论其存储类别如何。

系统将异步执行地理位置冗余操作,但是,所有 Cloud Storage 数据都会在被上传时立即冗余到至少一个地理位置。

即使发生大规模中断(比如自然灾害),地理位置冗余功能也可确保数据具备最高的可用性。双区域位置会使用两个特定的区域位置实现地理位置冗余。多区域位置会组合使用指定多区域位置内的任意数据中心来实现地理位置冗余,其中可能包括未明确列为可用区域的数据中心。

数据不透明性

对象的数据部分对 Cloud Storage 是完全不透明的。对于 Cloud Storage 而言,这只是一堆数据而已。

对象不变性

对象是不可变的,也就是说,对象一经上传,在整个存储生命周期内就不会变化。对象的存储生命周期指的是从成功创建(上传)对象到成功删除对象所经历的时间。 实际上,这意味着您无法对对象进行增量更改,例如执行附加操作或截断操作。但是,您可以覆盖存储在 Cloud Storage 中的对象,并且此操作将以原子方式进行,也就是说,在上传完新版本之前,系统会继续将对象的旧版本传送给读取者,而在上传完成之后,系统则会将对象的新版本传送给读取者。因此,单次覆盖操作只是标记了一个不可变对象的生命周期结束以及一个新的不可变对象的生命周期开始。

您可以在存储分区中创建或更新不同对象的频率没有限制。但是,单个特定对象每秒最多只能更新或覆盖一次。例如,如果您在存储分区 foo 中有一个对象 bar,那么您应该按照大约每秒一次的频率上传 foo/bar 的一个新副本。以高于每秒一次的频率更新同一对象可能会导致 429 Too Many Requests 错误。

您应该使用截断指数退避算法重试失败的请求。

层次结构

Cloud Storage 使用平面命名空间来存储对象。但为方便起见,某些工具(例如,Google Cloud Platform Consolegsutil)在处理对象时,可以假定对象存储在某个虚拟层次结构中。

命名空间

只有一个 Cloud Storage 命名空间,这意味着,每个存储分区必须在整个 Cloud Storage 命名空间中具有唯一名称。而对象名称只有在给定存储分区中才必须具有唯一性。

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Cloud Storage
需要帮助?请访问我们的支持页面