宽表模型(WideColumn)是类Bigtable/HBase模型,可应用于元数据、大数据等多种场景。宽表模型通过数据表存储数据,单表支持PB级数据存储和千万QPS。数据表具有Schema-Free、宽行、多版本数据以及生命周期管理特点,支持主键列自增、局部事务、原子计数器、过滤器、条件更新等功能。
模型介绍
表格存储宽表模型是类Bigtable/HBase模型,通过数据表采用三维结构(行、列和时间)存储数据。数据表的每一行可以有不同的列,可以动态增加或者减少属性列,创建表时无需为表的属性列定义严格的Schema。
模型构成
宽表模型如上图所示,由以下几个部分组成。
组成部分 | 描述 |
主键(Primary Key) | 主键是数据表中每一行的唯一标识,主键由1到4个主键列组成。 |
分区键(Partition Key) | 主键的第一列称为分区键。表格存储按照分区键对数据表的数据进行分区,具有相同分区键的行会被划分到同一个分区,实现数据访问负载均衡。 |
属性列(Attribute Column) | 一行中除主键列外,其余都是属性列。属性列会对应多个值,不同值对应不同的版本,每行的属性列个数没有限制。 |
版本(Version) | 每一个值对应不同的版本,版本的值是一个时间戳,用于定义数据的生命周期。更多信息,请参见版本号。 |
数据类型(Data Type) | 表格存储支持多种数据类型,包含String、Binary、Double、Integer和Boolean。更多信息,请参见数据类型。 |
生命周期(Time To Live) | 每个数据表可定义数据生命周期。例如生命周期配置为一个月,则表格存储会自动清理一个月前写入数据表的数据。更多信息,请参见数据生命周期。 |
最大版本数(Max Versions) | 每个数据表可定义每个属性列的数据最多保存的版本个数,用于控制属性列数据的版本个数。当一个属性列数据的版本个数超过Max Versions时,表格存储会异步删除较早版本的数据。更多信息,请参见最大版本数。 |
核心组件
数据表、行、主键和属性是表格存储宽表模型的核心组件。数据表是行的集合,而每个行是主键和属性的集合。组成主键的第一个主键列称为分区键。
主键、属性和分区键的具体说明请参见下表。
说明
关于主键列和属性列的数据类型的更多信息,请参见命名规则和数据类型。
组件 | 说明 |
主键 | 主键是数据表中每一行的唯一标识,主键由1到4个主键列组成。创建数据表时,必须指定主键的组成、每一个主键列的名称、数据类型以及主键的顺序。 表格存储根据数据表的主键索引数据,数据表中的行默认按照主键进行升序排序。 |
分区键 | 组成主键的第一个主键列称为分区键。表格存储会根据数据表中每一行分区键的值所属范围自动将一行数据分配到对应的分区和机器上来达到负载均衡的目的。具有相同分区键值的行属于同一个数据分区,一个分区可能包含多个分区键值。表格存储服务会自动根据特定的规则对分区进行分裂和合并。 说明 分区键值是最小的分区单位,相同的分区键值的数据无法再做切分。为了防止分区过大无法切分,单个分区键值所有行的大小总和建议不超过10 GB。关于分区键选择的更多信息,请参见表操作篇。 |
属性 | 属性由多个属性列组成。每行的属性列个数无限制,且每行的属性列可不同。属性列在某一行的值可以为空。同一个属性列的值可以有多种数据类型。 属性列具有版本特征,属性列的值可以根据需求保留多个版本,用于查询和使用;属性列的值可以设置生命周期(TTL)。更多信息,请参见数据版本和生命周期。 |
与关系模型区别
宽表模型和关系模型的区别请参见下表。
模型 | 特点 |
宽表模型 | 三维结构(行、列和时间)、Schema-Free、宽行、多版本数据以及生命周期管理。 |
关系模型 | 二维(行、列)以及固定的Schema。 |
使用限制
使用宽表模型时的通用限制,请参见通用限制。
-
如果使用了SQL查询与分析数据,请参见SQL查询的使用限制。更多信息,请参见SQL使用限制。
使用流程
主要步骤说明请参见下表。
步骤 | 操作 | 说明 |
1 | 创建RAM用户后,为RAM用户配置访问表格存储资源所需的最小化权限。您可以使用系统默认策略或者自定义权限策略为RAM用户授予访问表格存储资源的权限。 如果要使用阿里云账号或者要使用的RAM用户已具有访问表格存储存储资源所需的权限,请跳过此步骤。 重要 阿里云账号默认具有所有云资源的操作权限,为了您的资源安全,建议您为阿里云账号创建RAM用户并为其授权,实现不同RAM用户拥有不同资源访问权限的目的。 | |
2 | 使用表格存储功能前,您必须开通表格存储服务。 服务仅需开通一次,开通过程免费。如果已经开通表格存储服务,请跳过此操作。 | |
3 | 重要
根据确定的实例模型和实例规格在所需地域中创建相应实例。 如果已存在实例满足使用需求,请跳过此步骤。 | |
4 | 说明 合理的主键和分区键设计能有效避免数据热点问题,建议您参考表操作最佳实践文档进行表设计。 创建数据表用于存储业务相关数据。创建数据表时,您可以根据业务需求同时配置如下功能。
| |
5 | 说明 合理的属性列设置能提升业务数据使用效率,建议您参考数据操作最新实践文档进行属性列设置。 在数据表中写入、更新、读取或者删除数据。 如果要删除数据,您可以直接进行手动删除或者使用数据生命周期实现自动清理数据。具体操作,请参见删除数据或数据版本和生命周期。 | |
6 | 使用索引加速数据查询 | 如果基于数据表主键的数据读取不能满足业务的查询需求,您可以使用索引加速数据查询。表格存储提供了二级索引和多元索引用于满足不同场景的数据查询需求。 |
7 | 分析数据 | 通过SQL查询或者多元索引统计聚合分析表中的数据。
说明 您也可以通过MaxCompute、Spark、Hive或者HadoopMR、函数计算、Flink等计算引擎分析表格存储中的数据。更多信息,请参见计算与分析概述。 |