读书人

商品迁徙中遇到有关问题的解决

发布时间: 2013-08-09 15:16:24 作者: rapoo

商品迁徙中遇到问题的解决

需求简述

sqlserver商品库全量迁徙至mysql

sqlserver商品库增量迁徙至mysql

mysql商品库增量迁徙至sqlserver

两边数据是异构的:几条sqlserver数据要合成一个mysql数据,几个sqlserver表数据对应mysql一张表的数据。

?

问题1:sqlserver商品库增量迁徙至mysql上线后发现有积压数据,观察后发现每天的变更量有1000多万,原因是一条商品变更后经过中间系统的传递,一个产品中的一个表变了,最后产生*10倍的changelog(记录哪些数据变更了)。

?

解决分析:效率点并不是因为程序处理慢,而是有重复的数据处理,只要过滤掉重复数据就可以了。增加了一个clean程序,对changelog进行清洗,增量程序只处理经过清洗的changelog.

?

问题2:回写程序效率问题,mysql是分库分表的,sqlserver是一个库,有些表因为两边异构,比如属性表,mysql中的一条对应sqlserver几十条。担心由于数据库的压力造成积压。

? ? ? ? ? ? ? 需求容易变更区域:mysql的一个changelog,可能会需要其它mysql表才能完成。这个关系是不稳定的。? ? ? ? ? ? ?

两种方案:1.不管哪个表变了,把changelog合并成产品维度,同步整个产品,逻辑简单,适应需求变更。但担心效率。

? ? ? ? ? ? ? ? ?2.按changelog影响数据,做局部同步,逻辑复杂要考虑每个表变化会不会影响其它表的情况,代码不好维护,需求变更响应差,好处是效率好。

解决分析:第一种效率问题主要在sqlserver端,第二种pass逻辑太复杂,是mysql部分哪些数据要同步及组装成需要同步的sqlserver数据复杂。使用第一种方案,用产品维度同步,但保留每个产品记录变更信息(),但在sqlserver更新数据库代码时可以使用变更信息。这样逻辑清晰,又保留了性能优化的接口。

?

总结下:解决问题要针对要解决的问题。

? ? ? ? ? ? ? ?1.明确问题。

? ? ? ? ? ? ? ? 2.解决问题。

读书人网 >编程

热点推荐