数据库 不同表 之间的 实时增量更新 有什么更优的方案吗 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
9xrtp7r1
V2EX    问与答

数据库 不同表 之间的 实时增量更新 有什么更优的方案吗

  •  
  •   9xrtp7r1 2015-03-05 01:27:29 +08:00 3449 次点击
    这是一个创建于 3887 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有个mysql数据库 里面有2个表,一个表叫orders ,另外一个表叫newOrders

    orders存的是订单数据,并且 时时刻刻都会有新数据进入 或者 有某个数据的状态发生变化,这个表里有2个字段 分别叫lastchange,jsonText,jsonText 存的是json格式的字符串,也就是把一段json,存到这里的; lastchange 意思是 这条记录最后更新的时候

    newOrders 有很多字段,存在的目的是 为了 把 orders表里的 jsonText 进行序列化为json,然后把json里面的所有信息提取出来,存入newOrders里面的每个对应字段里

    这样做的目的是, 如果用orders表 那么 就无法对订单进行统计分析,因为所有的信息都存在jsonText这个字段里, 而我们的数据库是mysql,不是mongodb 也不是postgresql,所以不支持json查询,
    所以如果我们把数据解析分离出来,到一个新的表newOrders里面,就可以直接查询了

    现在遇到的问题是,写一个脚本,来完成 把 orders里面的数据 实时增量更新到newOrders里面,

    因为orders里面会永久保存所有数据库,所以数据量很大, 所以不能每次都全部把数据库插入到newOrders里面
    但orders里面有个lastchange字段,我们可以通过这个字段来进行增量操作

    因为内容包含图表,v2编辑器无法贴图和表格,所以我放到笔记里的,请点击下面的链接查看

    http://note.youdao.com/share/?id=8f27b9d6f36c8cfbf69cdefb38ce9db7&type=note

    2 条回复    2015-03-05 21:34:45 +08:00
    jianghu52
        1
    jianghu52  
       2015-03-05 09:06:06 +08:00   1
    看了你之前的帖子,那个python脚本自动更新。
    要我来设计的话,可能也会设计成同你一样。但是有一点可能不太相同,就是关于增量更新的频率问题。
    如果你的查询也非常频繁,而且要求实时,准确的话,那么不管你的脚本频率多低,总是会有一个延迟。
    所以如果在要求高速,准确的情况下。我倾向于老数据+内存 来显示更新内容。
    具体来说,就是我先将一个小时内的orders 的内容保存到内存中,这个时候如果客户需要查询的话,那么我就把neworder数据抽出来再加上内存上的数据,显示给客户。然后一个小时后我再将内存的数据插入neworder。
    这样做的好处一方面是降低了数据库的读写压力,另外一方面在时效性上也能得到保证。
    但是缺点是对于机器要求高,(很吃内存),另外一方面对于服务器的稳定性也有要求,(一旦down的话,1个小时内的数据都消失了。所以整合数据的工作要做好)
    9xrtp7r1
        2
    9xrtp7r1  
    OP
       2015-03-05 21:34:45 +08:00   1
    @jianghu52 非常感谢您
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1150 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 17:44 PVG 01:44 LAX 10:44 JFK 13:44
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86