• 请不要在回答技术问题时复制粘贴 AI 生成的内容
SlipStupig
V2EX  ›  程序员

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

  •  
  •   SlipStupig · Oct 24, 2016 · 5262 views
    This topic created in 3667 days ago, the information mentioned may be changed or developed.

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

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

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

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

    不这样的话 memchached 或者 redis 也都可以
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1630 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 13:32 · PVG 21:32 · LAX 05:32 · JFK 08:32
    ♥ Do have faith in what you're doing.