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

时间:2014-04-21 13:07:56

标签: mongodb schema-design stockquotes

我需要存储每日股票收盘价以及MongoDB中的tick数据。你会如何设计这样的架构?对于每日价格,我很想为每个股票代码创建一个文档,例如

{
    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。这会是一个好方法吗?即每个符号每天一个文件?

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

1 个答案:

答案 0 :(得分:4)

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

  • 每个股票代码都有一个文档,可以很好地概览集合中的所有符号。每个文档都有相当可维护的大小。
  • 在我看来,如果你在单个文档上甚至接近16MB,那么架构设计远远不够好。它不易读取或维护。每次需要文档中的任何内容时,您还必须获取大量数据。
  • 你提到“每个符号每天一个文件”。对我而言,这听起来像是一种合理的数据结构方式。虽然我不熟悉股票的tick数据中的细节,但我认为这将为模式设计提供良好的基础。你每天分开它,并且可以轻松获得给定日期/小时的所有刻度。
  • 请记住,只要您仔细思考,架构设计就没有绝对的解决方案。 (肯定有正确/错误的方式);)