结合银行关键业务系统介绍下分片字段选择的原则?

分片字段选择是分布式数据库适配的关键,关系到数据的分布,查询的效率,以及扩展性,请结合银行关键业务系统案例,介绍下分片字段选择的原则,重点表如何选取分片字段。可以和“表类型选择”问题联合进行介绍。...显示全部

分片字段选择是分布式数据库适配的关键,关系到数据的分布,查询的效率,以及扩展性,请结合银行关键业务系统案例,介绍下分片字段选择的原则,重点表如何选取分片字段。可以和“表类型选择”问题联合进行介绍。

收起
参与16

查看其它 3 个回答hanfeng_twt的回答

hanfeng_twthanfeng_twt数据库架构师SphereEx

分片字段的选择,需涉及的因素很多,可大致分为以下几个方面:
1.数据结构

  • 主键或唯一索引字段是否要包含如分片字段。很多数据库丛唯一性校验,是必须要求包含分片键在其中,否则无法完成校验工作。
  • 索引字段对分片字段的选择上,没有直接影响。对于全局索引的,可考虑通过二级索引表的方式解决;对于普通索引,则可以在分片基础上做本地索引。
  • 字段类型,选择适合分片的字段作为分片键。常见的分片类型包括有数字、日期、文本等。
    2.数据特征
  • 表规模,是是否使用分片的关键因素之一。表做了分片后,势必后造成一定的“功能退化”,如能采取其他方式缩小表的大小,尽量采用。可通过表的全生命周期规划,如常规的数据归档、压缩、转储、清理策略,减少数据量。此外,数据库内置的如表分区、垂直分表等策略也可以有效减小表的大小。
  • 数据离散度,按某个字段或字段组合后,表的数据是否足够分散。数据分片的初衷就是减少表的规模,尽量做到数据打散是其根本原则之一。这里需要统计数据拆分后离散程度,尽量选择能充分打散的字段作为分片键。这里需注意,如果选择字段是带有业务特征,还要关注未来业务变化对它的影响。
    3.访问特征
  • 可变化性,选择相对固定、不再变化的字段作为分片键。虽然有些数据库也支持分片键的修改,但毕竟修改后会涉及数据移动,成本代价很高;还是优选不变的字段为好。
  • 事务隔离,尽量选择按字段拆分后的数据,对数据的变化处理可集中在分片内解决。这样大量的业务变化是可以通过Local的事务完成,开销比全局的要小很多,效率也高。
  • 关联字段,如后续此表与其他关联表经常联合使用,优先那些参与到关联操作的字段为佳。尽量是数据在关联后,能在本地完成Join的动作,减少数据 Shuffle或上移汇聚类的操作
    4.其他因素
  • 如涉及到多个字段作为分片键的话,还需考虑如字段顺序等问题。
金融其它 · 2022-07-12
浏览830

回答者

hanfeng_twt
数据库架构师SphereEx
擅长领域: 数据库服务器分布式系统

hanfeng_twt 最近回答过的问题

回答状态

  • 发布时间:2022-07-12
  • 关注会员:5 人
  • 回答浏览:830
  • X社区推广