随笔分类 -  6第六部分 项目经验

2012-3用户数据迁移
摘要:(一)用户数据迁徙1.每次处理的数据要有一定的批量,保证内存和CPU占用稳定,不会内存溢出。2.在一定情况下,用可重复执行和报错机制来代替事务。比如change_log和数据操作不强调事务。数据迁徙经验汇总:迁移数据相关(这些问题看起来小,但带来的问题还是很麻烦的):一.如果前后空格无意义,数据库入库时要截断前后空格。二.同一字段在不同数据库或者同一数据库不同表中存储大小写要一致。不能数据库不区分,就存不一致的。三.数据库或者保持全角半角一致(同上),或者只存半角。一定不能有的地存全角,有的地存半角。四.如果业务要求字段唯一,数据库要做唯一限定。五.不可太相信业务系统,可以开发个非法数据检测程 阅读全文

posted @ 2013-11-08 14:52 关攀攀 阅读(223) 评论(0) 推荐(0)

2013-商品迁徙
摘要:需求简述sqlserver商品库全量迁徙至mysqlsqlserver商品库增量迁徙至mysqlmysql商品库增量迁徙至sqlserver两边数据是异构的:几条sqlserver数据要合成一个mysql数据,几个sqlserver表数据对应mysql一张表的数据。商品迁徙一开始设计用过头了mysql中的一个表的记录来源于sqlserver中几个表,设计了个buiid接口,每个sqlserver中的对象实现此接口再统一进入一个build集合进行构建,在编码后发现,哪个表哪些字段怎么build的很难维护,不同build分的太散乱了,改进成不同build的逻辑放到了一起。总结:不要过早设计,设计的 阅读全文

posted @ 2013-11-08 14:42 关攀攀 阅读(189) 评论(0) 推荐(0)

49.3. 2013-04用户等级消费额度升级程序迁徙及开发
摘要:(1)sqlserver版本程序先锁定再处理防止重复锁定取出加消费额任务时,先锁定成状态值+100的状态,再进行处理,防止被重复处理。并且在特定业务表使用业务关联UUID来进行防重复。(2)迁徙程序协作时的错误如果程序中使用了读入阻塞的BlockingQueue,每个BlockingQueue要有一个单独的读取线程。分库分表陷阱计算库和表的hash种子不能一样,避免分库和分表奇偶问题造成的不平均。(3)mysql版本程序关于服务层的考虑原程序BatchGradeService批量任务升级服务(锁定一批升级任务,UpGrade单个任务进行升级-事务,出错回滚,成功发送邮件短信)UpGrade(计 阅读全文

posted @ 2013-03-04 14:44 关攀攀 阅读(287) 评论(0) 推荐(0)

2012-10用户评价mongo迁移
摘要:1.按表分多线程--线程协作—写入级别提速改用按表分多线程2.in读和findById差10倍以上,读写差10倍以上3.分多线程比线程协作要优先考虑4.在mongo环境还没搭建起来用mock基于行为的测试,保证了开发时间。5.对于change_log 有了新想法,可以用多个容错应用部署,每个应用都可负担起全部。原来是多个应用一起才是全部。容错方法可以是延迟时间,比如第一个应用置为0延迟,第二个只取延迟5秒以上的。可以不使用状态,就可以保证不同应用不会消费相同数据。而且同时有了容错的能力,当第一台挂了,后面的就会接上。(也可以是其它的协作方式),这一点可以归结到避免单点的原则。 阅读全文

posted @ 2012-10-08 14:50 关攀攀 阅读(144) 评论(0) 推荐(0)

导航