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

2015-03-05 01:27:29 +08:00
 9xrtp7r1

有个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

3013 次点击
所在节点    问与答
2 条回复
jianghu52
2015-03-05 09:06:06 +08:00
看了你之前的帖子,那个python脚本自动更新。
要我来设计的话,可能也会设计成同你一样。但是有一点可能不太相同,就是关于增量更新的频率问题。
如果你的查询也非常频繁,而且要求实时,准确的话,那么不管你的脚本频率多低,总是会有一个延迟。
所以如果在要求高速,准确的情况下。我倾向于老数据+内存 来显示更新内容。
具体来说,就是我先将一个小时内的orders 的内容保存到内存中,这个时候如果客户需要查询的话,那么我就把neworder数据抽出来再加上内存上的数据,显示给客户。然后一个小时后我再将内存的数据插入neworder。
这样做的好处一方面是降低了数据库的读写压力,另外一方面在时效性上也能得到保证。
但是缺点是对于机器要求高,(很吃内存),另外一方面对于服务器的稳定性也有要求,(一旦down的话,1个小时内的数据都消失了。所以整合数据的工作要做好)
9xrtp7r1
2015-03-05 21:34:45 +08:00
@jianghu52 非常感谢您

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/174564

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX