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

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

参与16

4同行回答

xiamx_ksrcbxiamx_ksrcbdba某农商行
这个问题是要和该表适不适合做分表、其他相关联表的分片字段一起讨论的。通常做分表的数据量一定是足够大才考虑的,如果数据量小,就算有良好的分片字段,也没有做分片的必要,可以考虑做成广播表或单表。 这样就可以规避掉很多分片字段的选择场景。分布式数据库在分表之间关联...显示全部

这个问题是要和该表适不适合做分表、其他相关联表的分片字段一起讨论的。
通常做分表的数据量一定是足够大才考虑的,如果数据量小,就算有良好的分片字段,也没有做分片的必要,可以考虑做成广播表或单表。 这样就可以规避掉很多分片字段的选择场景。
分布式数据库在分表之间关联时,如果关联字段不是分片字段,则会引发数据上拉进行跨分片关联,性能损耗极大。因此在选择分片字段依据并且只依据关联分表的分片字段情况
首先定好分片基调,例如银行系统通常选择是账号或卡号,将所有与账户关联的分表全部按业务逻辑的账号或卡号的字段进行分片,便于与账户主表的关联。对于其他的分表,则根据关联查询的表一起协定用一个字段做分片,尽可能统一。如果一个分表同时要和两个分表做关联,且关联字段不同,解决思路:1.该表能否做成广播表;2.是否能改查询逻辑,与其中一个分表不做直接关联
如果分表没有关联其他表,字段选择优先能够让数据均匀分布到各个分片上的字段,通常选唯一主键。

收起
银行 · 2022-07-13
浏览731
hanfeng_twthanfeng_twt数据库架构师SphereEx
分片字段的选择,需涉及的因素很多,可大致分为以下几个方面:1.数据结构主键或唯一索引字段是否要包含如分片字段。很多数据库丛唯一性校验,是必须要求包含分片键在其中,否则无法完成校验工作。索引字段对分片字段的选择上,没有直接影响。对于全局索引的,可考虑通过二级索引表的方...显示全部

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

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

分片字段选择的原则:

  1. 业务相关性原则:分片字段应该与业务相关,能够反映业务实体的属性和关系。例如,银行账户系统中,分片字段可以包括账户号、开户行、客户姓名等。
  2. 数据一致性原则:分片字段应该保证数据的一致性,避免出现数据冗余或不一致的情况。例如,在银行交易系统中,分片字段可以包括交易时间、交易类型、交易金额等。
  3. 查询效率原则:分片字段应该尽可能简单明了,易于查询和分析。例如,在银行贷款系统中,分片字段可以包括借款人姓名、借款金额、还款期限等。
  4. 扩展性原则:分片字段应该考虑到系统的扩展性和未来的需求变化。例如,在银行客户管理系统中,分片字段可以包括客户ID、客户姓名、联系方式等。

    重点表如何选取分片字段:

  5. 根据业务需求确定需要进行分片的表,并对表中的字段进行分类和筛选。
  6. 根据以上所述的原则,选择合适的分片字段,并将其分配到不同的分片中。
  7. 对于一些重要的表,可以考虑使用主键作为分片字段,以提高查询效率和数据一致性。
  8. 在实际应用中,还需要根据系统的实际情况进行调整和优化,以达到最佳的效果。
收起
电信设备制造商 · 2023-07-13
浏览393
zftangzftang其它小白一枚
业务场景数据场景技术路线显示全部

业务场景
数据场景
技术路线

收起
互联网服务 · 2022-09-14
浏览586

提问者

chenlii
系统架构师某券商
擅长领域: 服务器云计算数据库

问题来自

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2022-07-08
  • 关注会员:5 人
  • 问题浏览:1627
  • 最近回答:2023-07-13
  • X社区推广