表和视图
在 Bigtable 中,您可以将数据存储在表中,还可以创建多种类型的表视图。您使用的视图类型取决于您的应用场景。
表
Bigtable 表是一种有序键值对映射,可将数据存储在行和列中。每行通过一个唯一的行键编入索引。彼此相关的列通常组合在一起形成一个列族。
Bigtable 采用灵活的数据模型,其表属于稀疏表。这意味着,如果某行中某个列未使用,则系统不会存储该列的数据。与关系型数据库不同,您无需为未使用的列存储 NULL 值。在 Bigtable 表中,给定行可能只有 1 列,而其旁边的行可能有 100 列。
在行中,一列可以包含多个单元格,每个单元格都由四元组(行键、列族、列限定符、时间戳)标识。在列中存储多个单元格可提供相应行和列的已存储数据如何随时间的推移而变化的记录。
Bigtable 表不支持联接,并且事务仅在单个行内受支持。
表是实例级资源,会自动复制到实例中的每个集群。数据保留由在列族级设置的垃圾回收政策控制。
如需了解详情,请参阅 Bigtable 概览和架构设计最佳实践。
查看次数
Bigtable 支持三种类型的表视图:逻辑视图、连续具体化视图和已获授权的视图。借助视图,您可以与特定用户和群组共享表数据,而无需为其授予底层源数据的访问权限。
逻辑视图
逻辑视图(通常简称为视图)是 SQL 查询的结果。它可用作可由其他 SQL 查询查询的虚拟表。如需了解详情,请参阅创建和管理逻辑视图。
持续的物化视图
持续性物化视图是通过持续对 Bigtable 表运行 SQL 查询而创建的。Bigtable 会根据查询输出创建一个新表,并使其与源表保持同步。
持续性具体化视图有助于提升查询性能。新表(即连续性具体化视图)的架构与源表不同,其中包含预聚合或经过转换的数据,这些数据针对与源表上使用的查询不同的查询进行了优化。
持续的物化视图是只读的。您需要支付持续性具体化视图的存储费用,以及创建第二个表、使其与源表保持同步以及对其进行复制所需的处理工作费用。
如需了解详情,请参阅连续具体化视图。
已获授权的视图
授权视图是表的视图,您可以将其配置为包含特定的表数据,然后单独授予对该授权视图的访问权限,而不是对源表的访问权限。授权视图由 JSON 格式的定义文件定义。
与持续性物化视图或逻辑视图不同,Bigtable 授权视图可用于控制读写访问权限。
如果您在 Bigtable 表中存储多位客户的数据,并且希望仅向每位客户授予对包含其数据的表的一部分的访问权限,则授权视图非常有用。
授权视图不会产生额外的存储费用。
如需了解详情,请参阅已获授权的视图概览。
比较
下表详细介绍了 Bigtable 表视图之间的差异。
逻辑视图 | 持续性具体化视图 | 已获授权的视图 | |
---|---|---|---|
结构 | 表示 SQL 查询结果的虚拟表 | 基于源表的只读表 | 表的子集 |
定义 | SQL 查询 | SQL 查询 | JSON 定义文件 |
与来源表的一致性 | 在运行查询时保持一致 | 最终一致 | 在运行查询时保持一致 |
查询选项 | 必须使用 SQL | SQL 或 Bigtable Data API | Bigtable Data API |
可写入 | 否 | 否 | 是 |
存储 | 数据会保留在源表中 | 系统会复制、汇总或转换数据,并将其存储在新的表中(只读) | 数据会保留在源表中 |
使用费用 | 执行查询的计算处理 | 同步时的计算处理费用、存储费用 | 执行查询的计算处理 |