数据同步

1.避免数据比较。
数据同步不能进行数据比较,这样没法做。想一下mysql中的master-slave中,如果mysql每次都要比较slave和master中每条数据的变化哪性能非常差。


2.全量还是增量?
全量:
如果数据量比较小并且经常变化,全量比较简单,比如这次每期活动中的物品,物品有状态,计数,专辑名。 最简单的做法是查询出每次活动的所有物品,不管有没有变化,都save到mongo里面。

增量:
如果数据量太大需要做增量同步,增量同步有几种方案:
a.通过记录一个last_id来做,每次从上次last_id开始同步,比如给QQ同步xml也是这种方案,但这种方案有一个bug,如果在last_id之前的数据有变化则出现数据不一致。


b.通过查询update_time来做,每次查询最近更新时间在N秒中以内的数据,比如( a.gmt_updated > SUBDATE(now(),INTERVAL 10 SECOND) )。这种方案不存在上面这种问题。

c. 通过记录update_time来做。2方案存在一个问题,如果同步任务挂掉会导致一部分数据丢失。

一般的做法是第一次做全量同步,然后每次做增量同步。

猜你喜欢

转载自san-yun.iteye.com/blog/1661842