我需要在 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 .那会是一个好方法吗? IE。每天每个符号一份文档?
那么,您将如何分别为每日价格和报价数据设计架构?
最佳答案
我认为您走在正确的轨道上。
- 为每个股票代码准备一份文档将使您对集合中的所有代码有一个很好的概览。每个文档的大小都相当易于维护。
- 在我看来,即使单个文档的大小接近 16MB,架构设计也远远不够好。它不容易阅读或维护。每次需要从文档中获取任何内容时,您还必须获取大量数据。
- 您提到“每天每个符号一份文件”。对我来说,这听起来像是一种合理的数据结构方式。虽然我不熟悉股票报价数据的详细信息,但我认为这将为您的架构设计奠定良好的基础。您可以按天拆分它,并且可以轻松获取给定日期/小时的所有报价。
- 请记住,模式设计没有绝对的解决方案,只要您仔细考虑即可。 (当然有正确/错误的方法);)
关于MongoDB:股票报价数据库的模式设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23198100/