基于mybatis自己实现分表
由于业务增长,需要分表处理。实现思路:
1.使用一致性hash算法通过业务id来计算数据属于哪张表
一致性hash算法参考:https://www.jianshu.com/p/ded630cb6d6c
2.使用自定义注解获取业务id,在需要分表接口实现类加入自定义注解。然后注解下的mapper方法获取到分表名进行sql替换。需注意的是自定义的mapper无法通过自定义注解和处理器替换表名,需要逐个改造。
3.使用mybatis动态表名处理器接口自己实现替换表名
4.可以先预估一个分表的量,然后分N张表。数据量参考可以单表最多500万或单表2G,后期数据量增多可以考虑数据迁移。
5.数据存储时可以把分表索引存储到id中,这样查询数据时可以通过id定位到具体分表。