宽表模型介绍

更新时间: 2023-12-27 09:35:18

宽表模型(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使用限制

使用流程

image

主要步骤说明请参见下表。

步骤

操作

说明

1

配置用户访问表格存储权限

创建RAM用户后,为RAM用户配置访问表格存储资源所需的最小化权限。您可以使用系统默认策略或者自定义权限策略为RAM用户授予访问表格存储资源的权限。

如果要使用阿里云账号或者要使用的RAM用户已具有访问表格存储存储资源所需的权限,请跳过此步骤。

重要

阿里云账号默认具有所有云资源的操作权限,为了您的资源安全,建议您为阿里云账号创建RAM用户并为其授权,实现不同RAM用户拥有不同资源访问权限的目的。

2

开通表格存储服务

使用表格存储功能前,您必须开通表格存储服务。

服务仅需开通一次,开通过程免费。如果已经开通表格存储服务,请跳过此操作。

3

创建实例

重要
  • 创建实例前,您需要根据实际业务特点以及业务对读写性能和成本要求确定要使用的实例模型和实例规格。更多信息,请参见计费模式使用推荐实例

  • 目前宽表模型的多元索引、通道服务、SQL查询、数据湖投递、数据加密、Control Policy、数据备份和同城冗余功能未全地域支持,请选择支持所需功能的地域创建实例。更多信息,请参见功能和地域支持列表

根据确定的实例模型和实例规格在所需地域中创建相应实例。

如果已存在实例满足使用需求,请跳过此步骤。

4

创建数据表

说明

合理的主键和分区键设计能有效避免数据热点问题,建议您参考表操作最佳实践表设计的最佳实践文档进行表设计。

创建数据表用于存储业务相关数据。创建数据表时,您可以根据业务需求同时配置如下功能。

  • 如果业务中需要使用不同属性作为查询条件来执行数据查询,您可以创建二级索引加速数据查询。

  • 如果要落盘加密表中数据,您可以配置数据加密。

  • 如果业务中有类似电商网站的商品ID、大型网站的用户ID、论坛帖子的ID、聊天工具的消息ID等使用主键列自增的场景,您可以配置主键列自增。

5

基础数据操作

说明

合理的属性列设置能提升业务数据使用效率,建议您参考数据操作最新实践文档进行属性列设置。

在数据表中写入、更新、读取或者删除数据。

  1. 写入数据到数据表。具体操作,请参见写入数据

    说明

    如果现有业务对数据库的并发读写、扩展性和可用性要求较高,或者需要复杂的数据检索和大数据分析,原有数据架构已不能满足业务需求,您可以将MySQL、Oracle、Kafka、HBase、MaxCompute等数据源的数据迁移到表格存储的数据表中使用。更多信息,请参见迁移工具

  2. 根据表主键读取数据表中的数据。具体操作,请参见读取数据

如果要删除数据,您可以直接进行手动删除或者使用数据生命周期实现自动清理数据。具体操作,请参见删除数据数据版本和生命周期

6

使用索引加速数据查询

说明

使用合适的索引能大幅提升数据查询效率以及降低使用成本,建议您参考索引选择最佳实践多元索引最佳实践进行索引选择和设计。

如果基于数据表主键的数据读取不能满足业务的查询需求,您可以使用索引加速数据查询。表格存储提供了二级索引和多元索引用于满足不同场景的数据查询需求。

  • 二级索引:相当于把数据表的主键查询能力扩展到了不同的列。表格存储根据用户对读取一致性的不同需求提供了全局二级索引和本地二级索引。

    适用于能提前确定待查询的列,待查询列数量较少,且可以确定完整主键或主键前缀的场景。

  • 多元索引:使用倒排索引、BKD树、列存等结构,具备丰富的查询能力。

    多元索引适用于除数据表主键和二级索引之外的其他所有查询和分析场景,例如非主键列的条件查询、任意列的自由组合查询、关系查询、全文检索、地理位置查询、前缀查询、模糊查询、嵌套结构查询、Null值查询等。

7

分析数据

通过SQL查询或者多元索引统计聚合分析表中的数据。

  • SQL查询:使用SQL查询的SELECT语句可以实现Join、全文检索、聚合、算术运算、关系运算、逻辑运算、按字段分组、多元索引嵌套类型查询、多元索引数据类型查询、JSON函数等功能。更多信息,请参见查询数据

  • 多元索引统计聚合:使用多元索引统计聚合可以实现求最小值、求最大值、求和、求平均值、统计行数、去重统计行数、百分位统计、按字段值分组、按范围分组、按地理位置分组、按过滤条件分组、直方图统计、日期直方图统计、获取统计聚合分组内的行、嵌套查询等功能。

说明

您也可以通过MaxCompute、Spark、Hive或者HadoopMR、函数计算、Flink等计算引擎分析表格存储中的数据。更多信息,请参见计算与分析概述

计费说明

表格存储支持预留模式(预付费)和按量模式(后付费)两种计费模式,请根据所用的实例模型参考相应计费模式了解计费信息。更多信息,请参见计费概述

  • 预留模式:计费项包括计算能力、数据存储量和外网下行流量,其中数据存储量包括高性能存储、容量型存储和多元索引存储。

  • 按量模式:计费项包括读吞吐量、写吞吐量、数据存储量和外网下行流量。

常见问题

相关文档

阿里云首页 表格存储 相关技术圈