关键词

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

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

项目

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

存储分区

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

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

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

存储分区名称

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

存储分区标签

存储分区标签是键值元数据对,借此,您可以对存储分区以及其他 Google Cloud Platform 资源(例如虚拟机实例永久性磁盘)进行分组。例如,您可以使用标签来创建一个值为 alphabeta 以及 deltateam 键,并将 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
需要帮助?请访问我们的支持页面