数据库的分库分表
设计一个查询获取更新数据到表之前的一个拦截器。
拦截器干啥活:根据分库分表的策略去查不同的库对应的表
当然得有表记录已经分库的表的对应策略,比如1记录走A库,2记录走B库,查询或者更新前查询这个策略表然后把库名传进查询xml,查询到对应的记录
理论上一张业务表对应一张策略记录表,策略表有自增id,业务表id,库名,创建时间,更新时间,这个表业务创建的时候也跟着创建,格式统一,比如业务表为A001,则策略表为A001_celue。
策略表可以单独在一个库,如果数据量很大很大,还可以对策略表进行进一步分库
还可以对策略表做缓存
还有个当前的全局的分库策略表,新进来的数据根据该策略走不同的库
还有个策略更新记录表,记录什么时候修改策略
所有后续的数据迁移的修改对应的策略表。所以最好页面用户传入迁移的sql,然后进行迁移,并修改对应的策略表
后续用户只需要管理后台操作分库分表就可以。
后台页面得有个功能,根据不同的库自动把所有的表的表名展示,用户可以根据选择业务表名自动创建和更新对应的策略表。
查询策略表的时候想办法用数据结构提高查询效率,B+数啊或者其他,这个得学习和研究。