MongoDB:股票报价数据库的架构设计

Mor*_*ten 4 schema-design stockquotes mongodb

我需要将每日收盘价以及报价数据存储在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 }
        }, ...
    }
}
Run Code Online (Sandbox Code Playgroud)

对于滴答数据,我可以每小时对一个子文档进行一系列类似的操作,完成上述操作。

但是,考虑到最大文档大小只有16MB,我相信可以很快达到限制,尤其是对于滴答数据。

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

因此,您将如何分别设计每日价格和报价数据的架构?

alu*_*sen 5

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

  • 每个股票代号都有一个文档,可以让您全面了解集合中的所有股票代号。每个文档的大小都可以维护。
  • 我认为,如果您在单个文档上甚至接近16MB,那么架构设计还远远不够。它不容易阅读或维护。每当您想要从文档中获取任何内容时,您还必须获取大量数据。
  • 您提到“每天每个符号一个文档”。对我来说,这听起来像是一种明智的数据结构方式。尽管我不熟悉股票报价数据的详细信息,但我认为这将为您提供架构设计的良好基础。您将其按天划分,可以轻松获得给定日期/小时的所有报价。
  • 请记住,对架构设计没有绝对的解决方案,只要您仔细考虑一下即可。(虽然肯定有对/错的方式);)