问题描述
我正在尝试找出每天插入的财务数据的最佳结构。 查询数据有 3 个用例
目前正在为此考虑使用 MongoDB,但我不确定哪种结构最适合我的需求。将每个符号的所有数据嵌入 10 年的时间似乎太多了,所以我想也许是嵌入每个符号的当前数据,并创建对历史文档的引用。
您会采用什么方法来存储这些数据? MongoDB 不是很好的解决方案吗?
这是一个符号数据的小例子。
{
"symbol": "AAPL","info": {
"company_name": "Apple Inc.","description": "some long text","website": "http://apple.com","logo_url": "http://apple.com"
},"quotes": {
"open": 111,"close": 321,"high": 111,"low": 100
},"dividends": {
"amountPaid": 0.5,"exDate": "2020-01-01","yieldOnCost": 10,"growth": { value: 111,pct_chg: 10 } /* some fields Could be more attributes than just k/v */
"yield": 123
},"fundamentals": {
"num_employees": 123213213,"shares": 123123123123,....
}
}
谢谢。
解决方法
您会采用什么方法来存储这些数据?
根据您发布的信息(示例数据和用例),我认为将历史数据存储为单独的集合听起来不错。
影响数据库设计(或数据模型)的一些重要因素是数据量和查询类型 - 您计划对数据执行的最重要的查询。假设您发布的 JSON 数据(用于股票代码)可用于执行前两个查询 - 您可以从将历史数据存储为单独集合的想法开始。交易品种的历史数据文档可以是一年的或年份范围 - 取决于查询、数据大小和信息类型。
MongoDB 的基于文档的模型允许灵活的模式,这对于轻松实现未来的更改和要求非常有用。请注意,一个 MongoDB 文档最多可以存储 16 MB 的数据。