目前应用(非核心交易业务)采用的是开源mysql,计划向分布式数据库转型,请问采用哪种技术方案,兼容性最好、代码改动最小,有什么推荐,谢谢。
收起分布式数据库实现方案大致分两类:一类是自研分布式数据库,另一类是开源数据库 + 中间件的模式。
贵行已经用了开源mysql,从成本上来说,直接用开源mycat可能更节约一些, 用mycat来实现水平扩展、读写分离、分库分表等能力。但是这么做也有隐形风险,一要看业务sql、事务是否适合做分布式改造;二要评估贵行的人力投入,mycat策略需要手动配置;三是这么做的话可能最终还是一个业务系统一套数据库的模式,并没有真正实现分布式数据库统一管控的目标。
若是采用自研分布式数据库,那就要做好poc测试选型了, 以下几个关键要素,作为选型的参考:可扩展性、高并发性、高可用性、支持分布式事务、易于维护、兼容性。此外, 有的企业比较看重自主可控。还需考虑迁移改造成本。在选型时一定要考虑原数据库迁移至分布式数据库的改造成本,包括 sql 语句、数据迁移等方面的改造难度和改造工作量,也包括与分布式数据库匹配的硬件投入(某些分布式数据库对于硬件的要求比较高,硬件会影响数据库性能。)建议选一两个典型业务系统,做兼容性和改造量的评估测试。
没有绝对的答案,要通过测试来评估最适合贵行的产品。