事情是这样的,我有二十台数据库,然后每天有二万台设备的各类数据新增进来,需求就是每一千台的设备的数据放在一个数据库里面。
设备id是固定的FB00001~FB20000,通过什么中间件可以快速协调起来
如果是新开发的项目,可以采用分库的方式。20个数据库就创建20个数据源,每个数据源对应一个数据,然后,编写一个函数,通过设备ID返回对应的数据源或者DAO实现类的对象。这样做有一个好处,就是,20个数据库的表结构是一致的,并且,每张表存哪个设备都可以,表名与设备ID没有关系。
如果是老项目扩容,说明数据库中的表名,与设备ID有关了,那就比较复杂了。如果时间允许,可以对项目进行重构。
很少有项目,把数据库表的表名与设备ID进行关联的,后期维护和更新将变得越来越复杂。
分库的中间件都可以吧,mycat,shrding jdbc ...
20个数据源 ==> 20组DAO ==> 20组Service ==> 20个TransactionManager
这个关系要确定才行。
如果自定义注解,注解的功能是选择数据源的话,你还是要硬编码20套上述的东西。
现在,问题的关键应该是: