V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
9xrtp7r1
V2EX  ›  问与答

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

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

    有个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   ·   实用小工具   ·   4881 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 07:23 · PVG 15:23 · LAX 00:23 · JFK 03:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.