迁移至国产分布式数据库后分表实践方案?

各位老师,迁移至国产分布式数据库后的分库分表方案,一直困扰着我;也查阅了很多相关资料,但是还是感觉没有一个满意的可落地方案。因此提出几个具体问题,希望各位老师能够解答,也希望各位同业一起交流。
1 尽量保证单库查询的原则是指的一个交易事务范围内,还是单个sql范围内呢。
2 一笔记账交易涉及多类表:如账户表,参数表,凭证表,流水表,机构表等。如何合理划分分片键呢,保证尽量单库处理。能否有具体的案例参考。
3 如何衡量分库分表策略合理呢。是否有类似单库sql占比,两分片sql占比等类似的指标进行衡量呢。
4 是否可以提供某个具体案例,交易描述,分片策略等,帮助我们进行参考

参与14

4同行回答

oltponeoltpone业务咨询顾问null
一般表记录数快速增长的做水平表(比如日志表、流水表等), 表记录数增长缓慢且知道最大增长到多少的做垂直表, 表记录数快速增长的做全局表/广播表(比如参数表、配置表) 金融行业一般用机构号来做分片的较多...显示全部

一般表记录数快速增长的做水平表(比如日志表、流水表等), 表记录数增长缓慢且知道最大增长到多少的做垂直表, 表记录数快速增长的做全局表/广播表(比如参数表、配置表)

金融行业一般用机构号来做分片的较多

收起
IT其它 · 2023-02-28
浏览681
huhu097huhu097DBA云南红塔银行
先考虑表的性质,是在线交易型(存放在线交易数据),还是分析型(历史数据归档和交易日志等),在线交易型的表分区优先考虑事务处理逻辑,避免分布式事务,考虑和其他表关联的情况,来确定分区键以及分区的方式,索引的创建和使用需要考虑表分区键,在线交易系统单笔交易涉及sql数量一般都比较...显示全部

先考虑表的性质,是在线交易型(存放在线交易数据),还是分析型(历史数据归档和交易日志等),在线交易型的表分区优先考虑事务处理逻辑,避免分布式事务,考虑和其他表关联的情况,来确定分区键以及分区的方式,索引的创建和使用需要考虑表分区键,在线交易系统单笔交易涉及sql数量一般都比较多,单个事务内包含多条sql,建议分析交易处理逻辑以及sql涉及的表结构,再做分区。分析型的表优先考虑历史数据归档以及清理的问题,另外还有历史数据查询的效率问题,OceanBase现有的表组,支持全局唯一性索引(可以不带分区键),广播表,对分表非常的友好。

收起
银行 · 2022-12-26
浏览875
lulihuan1987lulihuan1987课题专家组数据库管理员张家港行
通常单sql查询索引合理的情况下不会有问题,这里的单sql指的是单表的sql,如果带上分片字段的话是最优解,只操作单节点。单sql的更新,update和delete需要带上分片字段,否则存在跨节点更新,会有效率问题,对于不支持全局一致性的数据库来说,可能还有一致性问题。insert时涉及跨节点更...显示全部

通常单sql查询索引合理的情况下不会有问题,这里的单sql指的是单表的sql,如果带上分片字段的话是最优解,只操作单节点。单sql的更新,update和delete需要带上分片字段,否则存在跨节点更新,会有效率问题,对于不支持全局一致性的数据库来说,可能还有一致性问题。insert时涉及跨节点更新时也要注意。两个以上表操作sql设计是难点,总得原则就是避免跨节点数据流动,能拆就拆,不能拆的关键字段必须是分片字段。

收起
银行 · 2022-12-23
浏览922
乃伊组特 邀答
hanfeng_twthanfeng_twt数据库架构师SphereEx
1.所谓单库查询,是指语句查询可以精确到某个分片中,这样的效率最高。从事务处理角度来看,能否限制在某个分片内(即本地事务),也是效率最高的。2.具体的分片策略没有一定之规,一方面可选择业务的共性部分作为分片键,一方面数据量不大又参与到业务中的,也可考虑全局表(或广播表)的方式...显示全部

1.所谓单库查询,是指语句查询可以精确到某个分片中,这样的效率最高。从事务处理角度来看,能否限制在某个分片内(即本地事务),也是效率最高的。
2.具体的分片策略没有一定之规,一方面可选择业务的共性部分作为分片键,一方面数据量不大又参与到业务中的,也可考虑全局表(或广播表)的方式。
3.无法完全杜绝分库分表,只能尽量减少。具体比例取决于业务及分片策略。
4.可参考北京金融联盟最新发布的单元化策略指南

收起
金融其它 · 2022-12-26
浏览939

ChatGPT 回答

  1. 尽量保证单库查询的原则是指的一个交易事务范围内。在一个交易事务中,如果需要查询多个表,为了保证数据的一致性,这些表应该在同一个数据库中,避免跨库查询。如果需要跨库查询,可以在应用层进行处理,将多个查询结果进行合并。
  2. 合理划分分片键需要考虑业务特点和数据分布情况。一般来说,可以根据业务特点将数据按照某个维度进行划分,比如按照账户ID、机构ID等进行分片。同时,需要考虑数据分布的均匀性,避免某些分片数据过多或过少。具体的划分方案需要根据业务情况进行调整和优化。可以参考一些开源的分库分表中间件,如ShardingSphere、MyCAT等,它们提供了一些默认的分片策略和灵活的配置选项。
  3. 衡量分库分表策略合理需要考虑多个指标,如单库SQL占比、两分片SQL占比、数据分布均匀性等。单库SQL占比是指在一个交易事务中,单个SQL查询的数据是否集中在同一个库中;两分片SQL占比是指在一个交易事务中,两个SQL查询的数据是否分别在两个库中。数据分布均匀性可以通过观察各个分片的数据量和数据变化情况来评估。同时,还需要考虑分片策略对性能、可用性、扩展性等方面的影响。
  4. 关于具体案例,可以参考一些开源的分库分表中间件的案例,如ShardingSphere、MyCAT等。这些中间件提供了详细的文档和示例,可以帮助我们了解分库分表的实现原理和应用场景。同时,也可以参考一些银行行业的实际案例,了解它们是如何应用分库分表技术的。

提问者

gjjs2
项目经理某银行

问题来自

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2022-12-20
  • 关注会员:5 人
  • 问题浏览:1935
  • 最近回答:2023-02-28
  • X社区推广