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