V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
SlipStupig
V2EX  ›  程序员

Mongodb 怎么设计结构,存储历史价格最合理呢?

  •  
  •   SlipStupig · 2016-10-24 05:48:40 +08:00 · 4152 次点击
    这是一个创建于 2742 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我现在要存储一百万件商品的历史价格,目前数据结构是这么设计的:

    
        {"product_id":123,
        “ current_price ”: 998,
      "history":[{"date":"2015-12-01 13:32 1202", "price": 21}]
    
    }
    
    

    这么设计目前存在几个问题, 1.由于我数据是实时更新的,但我只想保留变动的历史数据,没有变动不想要,目前我是用$addToSet 去添加数据,如果用用时间精确到小时都会插入大量对我没有什么意义的数据, 怎么才能既能精确保留历史变更数据但是又不会导致数据无意义写入
    2.我想给用户去推送最近价格下降的商品,我该怎么改进结构,能让程序能够快速方便的查询到呢?

    9 条回复    2016-10-25 09:00:05 +08:00
    hrong
        1
    hrong  
       2016-10-24 06:12:08 +08:00 via Android   ❤️ 1
    一,变动的时候插入数据。二,增加新表。
    yidinghe
        2
    yidinghe  
       2016-10-24 08:07:07 +08:00 via Android   ❤️ 1
    在 Document 内部进行实时检索是不行的,因为缺少索引。建议加上一个最近趋势的属性,每次更新价格时,如果较上次价格降低了,则设置该属性值为 down ,否则为 up ,这样就能轻松查到最近价格下降的商品了。
    SlipStupig
        3
    SlipStupig  
    OP
       2016-10-24 11:18:38 +08:00
    @hrong 变动的时候,我怎么知道变动了,我一条一条数据跟新的数据去比对?这样会不会有点慢啊
    hrong
        4
    hrong  
       2016-10-24 14:17:52 +08:00 via Android
    @SlipStupig 参考二楼
    whimsySun
        5
    whimsySun  
       2016-10-24 22:10:20 +08:00   ❤️ 1
    二楼,再加一个上一次变动的数据
    SlipStupig
        6
    SlipStupig  
    OP
       2016-10-24 23:08:14 +08:00
    @hrong 这样是很好,但是如果这个商品过一段时候没有变价,状态一直会是降价,可能在一个时间段类降价的商品会有点多哦
    jimideer
        7
    jimideer  
       2016-10-25 00:02:01 +08:00   ❤️ 1
    用个定时器,对于时间长时间价格不变的,把价格升降的属性去掉。
    zado
        8
    zado  
       2016-10-25 08:21:03 +08:00   ❤️ 1
    1.用 memcached 把上次的价格存起来。
    2.用 memcached 把价格下降的商品存起来。
    minvacai
        9
    minvacai  
       2016-10-25 09:00:05 +08:00 via Android   ❤️ 1
    可以考虑用二楼的方法再加上变动时间,最近一段时间内变动的才显示为降价,例如近三天内或者近两周内

    不这样的话 memchached 或者 redis 也都可以
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2683 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 02:17 · PVG 10:17 · LAX 19:17 · JFK 22:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.