分库分表环境下,如何进行数据表结构同步?

问题背景

        对于一个游戏来说,分库分表是最常见的操作。对于多个环境下,我们如何保证表结构的一致性呢?

        举个例子:本地、内网、QA、压测、生产等多个环境下都需要分库分表,团队使用kingshard作为中间件进行分库分表,使用sqlboiler作为ORM框架。假设现在同事A合并了新的系统,新的系统有新的表,其它同事可以将内网的数据表复制到自己本地,但是1个环境复制一次,10个环境复制10次,每次复制N个表,那么就会导致大量人力资源的浪费。

对于这种情况如何解决呢?我们将这个问题划分为几个子问题:

  1. 在研发团队中,如何保持所有团队成员的表结构一致?---版本控制工具
  2. 如何定义表结构模版规范?---写结构体模版(ORM规范或者自定义)
  3. 如何根据表结构模版生成表? ---ORM的工具
  4. 如何根据kingshard配置生成对应数量的表?比如ks分了两个表,工具也需要生成两个数据表。---在生成表时需要读取ks的分表规则
  5. 如何与项目用的sqlboiler生成的model合并。---需要一个ORM框架,同时支持DML和DDL

技术方案选型

        针对上述问题拆解,最初考虑是自研ORM框架,但是博主在产品部,成本太大,所以放弃了;另外主程之前项目有用过XML实现表同步(他们项目用的C++)

你可能感兴趣的:(服务器)