对于从集中式数据库迁移到分布式数据库的场景,分布式数据库要求对表的分片策略、分片键有效管理。对敏态项目,迭代周期短,表结构变化频繁,如何解决以下问题:
1.1 如何有效管理全量表的分片信息,分片信息指分片策略和分片键。包括测试环境频繁的迁移和迁移后的维护。
1.2 如何监控到不合理的分片信息并高效调整。
常识信息:
常识之一: 集中式关系型数据库的表分片信息:集中式关系型数据库中不存在表对象数据分片信息,故不存在迁移相关的操作。
常识之二:集中式关系型数据库的分区功能 跟 分布式关系型数据库的分片功能,看着相似,实则完全不同且无法等同的能力及要求。
数据分片信息的分片类型、分片存储位置、水平分片的分片字段等会决定执行计划不同。但分区功能不会有这么大的影响力。
常识之三:分布式关系型数据库产品的分片信息不合理,是会导致整个业务系统的性能体验、稳定可靠都存在巨大的风险,会出现是好是坏的情况,且只有优化数据分片信息来改善的,那么就要分布式关系型数据库产品提供这类的发现问题功能、纠错调优功能才行。
小结:采用某一款分布式关系型数据库产品必须具备数据分片优化推荐的功能,要么数据库产品厂商派遣数据库专家兜底服务(注:数据分片信息优化往往需要顶级数据库专家才行)
办法措施:
分片信息的分片策略:根据数据库服务器配置及数量、业务数据的规模大小、业务数据的访问频率、业务数据的表对象关联关系等来共同确定业务系统的分片策略。
往往会先梳理一张表格:表对象名称、数据行数、数据容量、平均行长(含索引)、并发数、吞吐量、增长趋势等,然后根据调研表的信息制定分片策略,往往包含:水平分片表类型的分片数量、分布位置,全局分片表类型的分布数量、分布位置、跟那个水平分片表类型的表对象有关,垂直分片类型的分布数量、分布位置、跟那些垂直分片表类型的表对象有关。
分片信息的分片键:水平分片表对象的分片键决定是一个多维立体的模型分析,至少要考虑表对象的行数、容量、行长、增长趋势、并发数、关联次数等,数据库专家需要掌握业务流、数据流、ER模型、SQL语句及执行频率、数据分布及增长趋势等,依靠人力完成则容易产生死角,故往往依赖数据库产品的能力实现,例如:新华三分布式关系型数据库SeaSQL 就提供了这样的能力
分片信息的不合理检测:分片信息的不合理最大危害是造成业务系统的稳定可靠、服务体验,往往服务体验是忽快忽慢且最可怕是某一些时刻或者业务场景是最慢的 ,从而导致排错分析的困难复杂增加。
例如:新华三分布式关系型数据库SeaSQL是提供了数据分片是否合理的自动预警功能,类似考试的试卷会告知您那道题丢分了
分片信息的高效调整:分片信息的分片类型或分片字段的调整,第一要做到不中断现有业务服务的正常运行,其次要做到尽量少地影响现有业务服务的性能体验(也即控制资源占用对生产环境的业务服务影响),最后要做到尽量快地完成分片信息的调整。