mongodb - 文档数据库是否适合存储大量股票报价数据?

我正在考虑使用 mongodb 或 ravendb 之类的数据库来存储大量股票报价数据,并想知道与 Sql Server 之类的标准关系相比,这是否可行。

数据不会是真正的关系数据,而是几个巨大的表。我还想我可以按分钟/小时/天/周/月等对数据行求和/最小/最大行数,以便更快地计算。

示例数据: 500 个符号 * 60 分钟 * 60 秒 * 300 天...(我们存储的每条记录:日期、开盘价、最高价、最低价、收盘价、交易量、开盘整数 - 所有小数/ float )

你们觉得呢?

最佳答案

自从 2010 年提出这个问题以来,已经发布了多个数据库引擎或开发了专门处理时间序列(例如股票价格数据)的功能:

  • InfluxDB - see my other answer
  • Cassandra

对于 MongoDB 或其他面向文档的数据库,如果您以性能为目标,建议是 contort your schema组织以秒为键的对象中的刻度(或以分钟为单位的对象,每分钟是另一个 60 秒的对象)。使用专门的时间序列数据库,您可以简单地查询数据

SELECT open, close FROM market_data
WHERE symbol = 'AAPL' AND time > '2016-09-14' AND time < '2016-09-21'

I was also thinking that I could sum/min/max rows of data by minute/hour/day/week/month etc for even faster calculations.

使用 InfluxDB,这非常简单。以下是获取每日最小值和最大值的方法:

SELECT MIN("close"), MAX("close") FROM "market_data" WHERE WHERE symbol = 'AAPL'
GROUP BY time(1d)

您可以按时间间隔分组,可以是微秒 (u)、秒 (s)、分钟 (m)、小时(h)、天 (d) 或周 (w)。

TL;DR

在存储和查询大量股票报价数据方面,时间序列数据库比面向文档的数据库更好。

https://stackoverflow.com/questions/3207563/

相关文章:

python - 如何将数据读入 TensorFlow?

javascript - Mongodb v4.0 事务,MongoError : Transact

mongodb - CouchDB 或 MongoDB 中的多对多关系

mongodb - 通过 REST API 公开 mongodb 查询是否安全?

mongodb-csharp 驱动程序 - 如何将属性保存为引用而不是嵌入?

mongodb - mongo 聚合结果超出最大文档大小

node.js - 在 Mongoose 中更新具有不同值的多个元素

mongodb - 使用 ReadPreference=NEAREST 的 Mongos 路由

javascript - node.js mongodb - collection.find().t

mongodb - 我应该使用哪个 Node 的 mongo 驱动程序?