有JAVA WEB 项目三个,每个项目都拥有其自己的客户回访模块
三个系统该功能相关的数据表表结构80%以上是相同的,分布在三个数据库中。
现希望以其中一个系统的回访模块的功能为基准抽离可供三个系统调用的独立服务模块。
但由于其数据表结构不完全统一,且不在同一数据源。
所以现在解决方式只想到了两点:
1. 将三个数据源合并为一个(但同时与此表关联的所有数据表均需要进行数据割接转换主键)
1. 服务同时兼容三个数据源,后期有其他系统接入该服务时选取其中一个数据源进行扩展。(代码量增加,复杂度提高)
以上办法均有优缺点。不知哪位高人可以提供其他思路以解决该问题。还请您帮忙给出,感谢!
个人意见,不知道与你项目的真实情况是否符合。
建议三个项目的数据库整合为一个数据源,你也提到了说表结构80%都是一致的,我想整合起来不会太过复杂,就是重构表结构和数据迁移的时候会费点力气,但是这样的结果对以后系统的扩展是非常有利的。
这里就是使用所谓三层最好的时机,如果你仅仅是表结构不同,可以为三个系统编写三套Dal(数据访问层),然后抽象出一致的 IDal 接口
在此之上的界面、和业务逻辑就可以共享了。
合并为同一个数据源,至于数据合并需要避免冲突的问题,可以通过加前缀的方式规避,三个系统调用的时候带上appkey之类的,写一个转化映射程序,这样老系统数据库基本不用改,新系统接入就用默认的统一前缀,形成一个统一的客户微服务