分布式数据库的表分片信息如何从集中式数据库迁移及管理?

对于从集中式数据库迁移到分布式数据库的场景,分布式数据库要求对表的分片策略、分片键有效管理。对敏态项目,迭代周期短,表结构变化频繁,如何解决以下问题,
1.1 如何有效管理全量表的分片信息,分片信息指分片策略和分片键。包括测试环境频繁的迁移和迁移后的维护。
1.2 如何监控到不合理的分片信息并高效调整。

参与19

4同行回答

austindatabaseaustindatabase数据库架构师互联网金融
分布式数据库本身具有一定的数据分片的能力1  分布式数据库本身,不需要完全依靠逻辑分库分表的理念来进行分表,而是通过硬件以及数据库分布式数据库(不同的数据库本身有不同的方法和原理)来打散数据2  分布式更需要的是针对功能的复杂性进行拆分,而不是考虑表分片的信息进...显示全部

分布式数据库本身具有一定的数据分片的能力

1  分布式数据库本身,不需要完全依靠逻辑分库分表的理念来进行分表,而是通过硬件以及数据库分布式数据库(不同的数据库本身有不同的方法和原理)来打散数据

2  分布式更需要的是针对功能的复杂性进行拆分,而不是考虑表分片的信息进行管理

3  部分伪分布式数据库(如不同数据库本身原理,而通过类似 MYSQL 一些中间件分库分表的原理)则需要考虑如上的信息,对于一些达标,在主键如何进行设计进行考虑,但大概率都会牵扯到
性能的降低和事务粒度的调整

如使用第三种分布式数据库产品,需要架构,软件设计重新对于业务实现方式的重构,而非单一的通过数据库的一条路来解决问题

收起
互联网服务 · 2023-09-01
  • 匿名用户
    对解答者给出的解答,提一点不同的见解: 。 1、分布式更需要的是针对功能的复杂性进行拆分,而不是考虑表分片的信息进行管理 。 分布式关系型数据库的原理就是基于关系模型来做数据分片,我们应该是关注为业务模型打造稳定可靠、性能最佳的数据分片,也即数据分片是跟业务有关的。 。 不建议描述成功能的复杂性进行拆分,这条路是走应用拆分解决数据分片的问题,也即会对应用系统的数据架构设计、应用开发、运维管理等带来巨大的侵入性和破坏性。 。 2、”对于一些达标,在主键如何进行设计进行考虑,但大概率都会牵扯到 性能的降低和事务粒度的调整“,若一款分布式关系型数据库产品 要基于主键/唯一索引或隐含主键来做数据分片,是很难具有通用性,或者说多数业务场景下需要牺牲性能体验、消耗更多硬件资源来弥补数据库产品能力不足,所以要坚持数据分片的分片键一定要是业务需求来决定。 (做不到的数据库产品 就是存在巨大缺陷的,例如:TDSQL、GaussDB等是必须依赖主键或唯一索引,OceanBase是改进后不依赖主键或唯一索引的,SeaSQL、HotDB、PowerSQL等是能做到不依赖主键或唯一索引的)
    2023-09-26
oltponeoltpone业务咨询顾问null
热璞的HotDB分布式事务数据库有分片方案自动推荐功能,表的分片信息有单独的管理页面维护;且表类型、分片字段、分片函数可以在线不停机更换显示全部

热璞的HotDB分布式事务数据库有分片方案自动推荐功能,表的分片信息有单独的管理页面维护;且表类型、分片字段、分片函数可以在线不停机更换

收起
IT其它 · 2023-09-12
浏览700
混沌混沌数据库架构师自由职业者
1、表分片信息的来源是由分布式数据库引入的,因此对于表信息的管理也应该由分布式数据库产品本身来解决,因此在分布式数据库选型的时候需要关注这点功能是否具备以及实现效果如何下方内容主要针对OLTP场景下表与表间有JOIN关系时的复杂分片逻辑处理进行解答(自动打散的分片...显示全部

1、表分片信息的来源是由分布式数据库引入的,因此对于表信息的管理也应该由分布式数据库产品本身来解决,因此在分布式数据库选型的时候需要关注这点功能是否具备以及实现效果如何

下方内容主要针对OLTP场景下表与表间有JOIN关系时的复杂分片逻辑处理进行解答(自动打散的分片场景不适用于复杂OLTP场景,则本次不讨论)

2、分片信息的有效管理应该包含:
2.1)分片策略:页面展示或其他有效途径直观展示数据表按照什么规则拆分(范围、哈希、匹配等)
2.2)分片键:页面展示或其他有效途径直观展示数据表通过哪个字段进行拆分,是否另外存在数据分区
2.3)分片表间关联:页面展示或其他有效途径直观展示 OLTP场景内存在表和表之间的JOIN关联,如何能够展示有关联的表之间的分片联动情况
2.4)分片信息的存储:有统一存放的位置便于环境迁移过程中能够快速恢复或复用,而非零散存储

3、监控不合理的分片信息并高效调整与第2点内的内容息息相关
3.1)分片策略的有效监控和调整:需要产品本身对于数据表内数据类型与分片规则主动校验是否匹配
3.2)分片键的有效监控和调整:本条主要和分片表间关联、数据倾斜有关,需要结合分片表间关联字段是否与分片键一致,若有多个表间关联情况下要有对应取舍或使用全局表等策略;数据分片键的选择需要尽可能实现数据的均匀打散,以便发挥分布式数据库的并行计算能力;
当然还有其他不同因素影响,上述描述的为主要原因,同时也要关注分布式数据库自身的性能表现

综上所述:通过人工处理分片信息的优化需要技术人员对业务流、数据流、表结构设计、性能优化等多方面信息非常熟练,也能够预见单个系统靠人工来处理的话需要耗费大量精力,更不论一个企业有多个甚至上百个业务系统了。因此选择一款具备上述能力的分布式数据库产品为最佳推荐,目前行业内的分布式数据库百花齐放,也希望分布式数据库厂商能够不断提供好的能力。

分布式数据库推荐:根据行业调研和各家产品官网信息来看,目前阿里、腾讯能够具备这样的专家能力,希望能同步赋能产品;热璞数据库产品已经具备这样的能力且有复杂场景打磨值得期待;其他厂商希望能够在便于运维方向多多加油,让非互联网客户能够便捷使用。

收起
IT其它 · 2024-03-04
浏览297
AmygoingAmygoing联盟成员产品经理数据库
对于从集中式数据库迁移到分布式数据库的场景,分布式数据库要求对表的分片策略、分片键有效管理。对敏态项目,迭代周期短,表结构变化频繁,如何解决以下问题:  1.1 如何有效管理全量表的分片信息,分片信息指分片策略和分片键。包括测试环境频繁的迁移和迁移后的维护。   1...显示全部

对于从集中式数据库迁移到分布式数据库的场景,分布式数据库要求对表的分片策略、分片键有效管理。对敏态项目,迭代周期短,表结构变化频繁,如何解决以下问题:
  
1.1 如何有效管理全量表的分片信息,分片信息指分片策略和分片键。包括测试环境频繁的迁移和迁移后的维护。
  
1.2 如何监控到不合理的分片信息并高效调整。
  
常识信息:
   
常识之一: 集中式关系型数据库的表分片信息:集中式关系型数据库中不存在表对象数据分片信息,故不存在迁移相关的操作。 
  
常识之二:集中式关系型数据库的分区功能  跟 分布式关系型数据库的分片功能,看着相似,实则完全不同且无法等同的能力及要求。
  
数据分片信息的分片类型、分片存储位置、水平分片的分片字段等会决定执行计划不同。但分区功能不会有这么大的影响力。
   
常识之三:分布式关系型数据库产品的分片信息不合理,是会导致整个业务系统的性能体验、稳定可靠都存在巨大的风险,会出现是好是坏的情况,且只有优化数据分片信息来改善的,那么就要分布式关系型数据库产品提供这类的发现问题功能、纠错调优功能才行。
  
小结:采用某一款分布式关系型数据库产品必须具备数据分片优化推荐的功能,要么数据库产品厂商派遣数据库专家兜底服务(注:数据分片信息优化往往需要顶级数据库专家才行)
   

办法措施:

分片信息的分片策略:根据数据库服务器配置及数量、业务数据的规模大小、业务数据的访问频率、业务数据的表对象关联关系等来共同确定业务系统的分片策略。
  
往往会先梳理一张表格:表对象名称、数据行数、数据容量、平均行长(含索引)、并发数、吞吐量、增长趋势等,然后根据调研表的信息制定分片策略,往往包含:水平分片表类型的分片数量、分布位置,全局分片表类型的分布数量、分布位置、跟那个水平分片表类型的表对象有关,垂直分片类型的分布数量、分布位置、跟那些垂直分片表类型的表对象有关。
   
分片信息的分片键:水平分片表对象的分片键决定是一个多维立体的模型分析,至少要考虑表对象的行数、容量、行长、增长趋势、并发数、关联次数等,数据库专家需要掌握业务流、数据流、ER模型、SQL语句及执行频率、数据分布及增长趋势等,依靠人力完成则容易产生死角,故往往依赖数据库产品的能力实现,例如:新华三分布式关系型数据库SeaSQL 就提供了这样的能力

   
分片信息的不合理检测:分片信息的不合理最大危害是造成业务系统的稳定可靠、服务体验,往往服务体验是忽快忽慢且最可怕是某一些时刻或者业务场景是最慢的 ,从而导致排错分析的困难复杂增加。

例如:新华三分布式关系型数据库SeaSQL是提供了数据分片是否合理的自动预警功能,类似考试的试卷会告知您那道题丢分了

  
分片信息的高效调整:分片信息的分片类型或分片字段的调整,第一要做到不中断现有业务服务的正常运行,其次要做到尽量少地影响现有业务服务的性能体验(也即控制资源占用对生产环境的业务服务影响),最后要做到尽量快地完成分片信息的调整。
  

收起
软件开发 · 2023-09-26
浏览696

ChatGPT 回答

对于从集中式数据库迁移到分布式数据库的场景,分布式数据库的表分片管理确实是一个非常重要的问题。以下是对于问题的解答:

1.1 如何有效管理全量表的分片信息?

针对全量表的分片信息,可以考虑以下几点:

1.1.1 建立分片信息管理系统

可以建立一个分片信息管理系统,用于管理所有表的分片信息。该系统可以包括分片策略、分片键、分片数量、分片节点等信息。在该系统中,可以对分片信息进行增删改查,并且可以进行版本控制,以便于追踪分片信息的变化。

1.1.2 自动化分片信息采集

可以考虑使用自动化工具来采集分片信息。例如,可以编写脚本来自动化采集分片信息,并将其存储到分片信息管理系统中。这样可以避免手动采集分片信息的繁琐过程,并且可以保证分片信息的准确性。

1.1.3 集成分片信息管理到CI/CD流程中

可以将分片信息管理集成到CI/CD流程中。例如,在每次代码提交后,可以自动化地检查分片信息的变化,并将其同步到分片信息管理系统中。这样可以保证分片信息的及时更新,并且可以避免手动同步分片信息的错误。

1.2 如何监控到不合理的分片信息并高效调整?

针对不合理的分片信息,可以考虑以下几点:

1.2.1 建立分片信息监控系统

可以建立一个分片信息监控系统,用于监控分片信息的变化。该系统可以检测到分片信息的变化,并且可以自动化地进行分析和报警。例如,如果分片信息的变化导致了性能下降或数据不一致等问题,该系统可以自动化地进行报警,并且可以提供相应的解决方案。

1.2.2 定期进行分片信息的评估和优化

可以定期进行分片信息的评估和优化。例如,可以使用分片信息监控系统来分析分片信息的性能和数据一致性,并且可以根据分析结果来进行优化。例如,可以调整分片策略、分片键等信息,以提高性能和数据一致性。

1.2.3 集成分片信息监控到CI/CD流程中

可以将分片信息监控集成到CI/CD流程中。例如,在每次代码提交后,可以自动化地进行分片信息的检测和分析,并且可以自动化地进行报警和优化。这样可以保证分片信息的及时更新,并且可以避免手动检测和优化分片信息的错误。

提问者

wenhao
软件开发岗海通证券股份有限公司
擅长领域: 数据库分布式系统服务器

问题来自

相关问题

相关资料

相关文章

问题状态

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