开发者社区 问答 正文

表格存储Table Store-主键,数据分片,数据分片键


表中的每一行由主键(PK)唯一确定。用户在创建表的时候必须指定组成主键的列,这些列称为主键列。主键列是一种特殊的列,必须有值。用户必须确保主键列的值的组合能够唯一地确定一行。在后续使用的过程中,主键列的类型不能改变。

Table Store会自动把表分成不同的数据分片,以达到对其存储数据的负载均衡。数据分片的划分粒度为主键的第一列,我们将该列称为数据分片键。即,拥有相同数据分片键的行必然在同一个数据分片中。Table Store能够保证对具有同一数据分片键的数据进行更改操作的一致性。



如上图所示的电子邮件系统的邮件表的一部分,其中列UserID, ReceiveTime, FromAddr分别表示邮件用户的ID,接收时间,发送人,这些列为主键列,唯一确定一封邮件;列ToAddr, MailSize, Subject, Read分别表示收件人,邮件大小,邮件主题和邮件是否已读,这些为普通的列,存储邮件的相关信息。主键列中UserID列为数据分片键,上图中OTS把UserID为U0001和U0002的用户信息划在一个数据分片中,而把UserID为U0003和U0004的用户信息划分在另一个数据分片中。

展开
收起
云栖大讲堂 2017-10-26 10:48:51 2659 分享 版权
阿里云 AI 助理回答

在Table Store中,数据表的设计与管理遵循以下关键原则和操作方法:

  1. 主键(PK)定义

    • 每张表的每一行数据由主键唯一确定。创建表时,必须明确指定构成主键的列,这些列即为主键列。
    • 主键列必须为非空,且其值的组合需确保每行数据的唯一性。
    • 一旦设定,主键列的数据类型不可更改,以维护数据结构的稳定性和查询效率。
  2. 数据分区与分区键

    • Table Store会自动对数据进行分区(分片),以实现负载均衡。数据分区的基本单位是根据主键的第一列,这一列被称作数据分区键或数据分片键。
    • 所有具有相同数据分区键的行将存储在同一数据分区内,保证了对该分区键下数据操作的一致性。
    • 例如,在一个电子邮件系统的邮件表中,UserID作为数据分区键,确保了同一用户的所有邮件记录存储在一起,便于管理和查询一致性。
  3. 主键自增功能

    • 在某些场景下,主键列之一可以设置为自增列,以简化数据写入过程。创建表时,只需将该主键列属性设置为AUTO_INCREMENTAUTO_INCR
    • 写入数据时,无需为自增列指定具体值,系统会自动为其生成递增的唯一值。在代码示例中,通过使用如TableStore.PK_AUTO_INCRPrimaryKeyTypeConst::CONST_PK_AUTO_INCR等占位符来标识自增列位置。

综上所述,设计Table Store表结构时,应精心选择主键及其列,利用数据分区键优化数据分布和查询性能,并可利用主键自增特性简化数据插入逻辑,确保数据的唯一性和管理的高效性。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答