6

我需要在 MongoDB 中存储每日股票收盘价以及报价数据。您将如何设计这样的架构?对于每日价格,我很想为每个股票代码准备一份文件,例如

{
    symbol: "AAPL",
    quotes: {
        {
           date: '2014-01-01',
           values: { open: 1, high: 1, low: 1, close: 1, volume: 100 }
        },
        {
           date: '2014-01-02',
           values: { open: 1, high: 1, low: 1, close: 1, volume: 100 }
        }, ...
    }
}

对于刻度数据,我可以用一个带有刻度数组的子文档每小时做一个类似的事情。

但是,考虑到最大文档大小只有 16MB,我相信这个限制会很快达到,尤其是对于刻度数据。

我知道这种方法http://blog.mongodb.org/post/65517193370/schema-design-for-time-series-data-in-mongodb。那会是一个好方法吗?即每天每个符号一个文件?

那么,您将如何分别设计每日价格和分时数据的架构?

4

1 回答 1

5

我认为你在正确的轨道上。

  • 为每个股票代码拥有一个文档将使您对集合中的所有代码有一个很好的概述。每个文档都有一个相当可维护的大小。
  • 在我看来,如果您在单个文档上甚至接近 16MB,那么架构设计还远远不够好。它不容易阅读或维护。每次您想要从文档中获取任何内容时,您还必须获取大量数据。
  • 您提到“每天每个符号一个文档”。对我来说,这听起来像是一种合理的数据结构方式。虽然我不熟悉股票报价数据中的细节,但我认为这将为您提供架构设计的良好基础。您每天将其拆分,并且可以轻松获取给定日期/小时的所有刻度。
  • 请记住,模式设计没有绝对的解决方案,只要您仔细考虑即可。(虽然肯定有正确/错误的方式);)
于 2014-04-21T13:23:20.113 回答