分布式系统 读书笔记(二)数据平滑迁移
- - 企业架构 - ITeye博客在开始进行数据迁移时,记录增量的日志,在迁移结束后,再对增量变化进行处理. 在最后,可以把要迁移的数据的写暂停,保证增量日志都处理完毕后,再切换规则,放开所有的写,完成迁移工作. 我们希望根据id去模把上面这个表 划分到两个数据库中, 也就是id mod 2 为0的还在原数据库 为1的在新库中.
如果一个查询涉及多个库或者多张分表 结果该如何处理
1.排序,即多个来源的数据查询出来以后,在应用层进行排序的工作。查出来如果是已经排序号的,则对多路进行归并排序否则就要进行一个全排序。
2.函数处理,即使用Max,Min,Sum,Count 等函数对多个数据来源的值进行相应的函数处理
3.求平均值,从多个数据来源进行查询时,需要把SQL改为查询SUM和Count,然后对多个数据来源的Sum求和,count求和后,计算平均值,这是需要注意的地方
4非排序分页,这需要看具体实现所采取的策略,是同等步长地在多个数据源上分页处理,还是同等比例地分页处理。
同等步长地意思是:分页的每页中,来自不同数据源的记录数是一样的
数据源1 1 1 2 2 3 3 4 4 5 5 5 5 6 6 6 6
数据源2 1 1 2 2 3 3 4 4
同等比列:分页的每页中,来自不同数据源的数据数占这个数据源符合条件的数据总数的比列是一样的。
数据源1 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4
数据源2 1 1 2 2 3 3 4 4
5排序后分页
两个不同的数据例子
数据源1 1 3 5 7 9 11 13 15 17 19 21 23 25
数据源2 2 4 6 8 10 12 14 16 18 20 22 24 26
数据源1 1 3 5 6 7 8 10 12 13 19 21 23 25
数据源2 2 4 9 11 14 15 16 17 18 20 22 24 26
注意排序分页是合并操作中最复杂的情况,因此,在访问量很大的系统中,应该尽量避免这种方式,尤其是排序后需要翻N页的情况