我正在考虑使用像mongodb或ravendb这样的数据库来存储大量的股票数据,并想知道与标准关系(如Sql Server)相比这是否可行.
数据实际上不是关系数据,而是几个巨大的表格.我也在想我可以按分钟/小时/天/周/月等来加/最小/最大行数据,以便进行更快的计算.
示例数据:500个符号*60分钟*60秒*300天......(每个记录我们存储:日期,开放,高,低,关闭,交易量,开放 - 所有小数/浮点数)
那你觉得怎么样?
自2010年提出此问题以来,已经发布了多个数据库引擎或开发了专门处理时间序列的功能,例如股票报价数据:
InfluxDB-看到我的其他答案
卡桑德拉
对于MongoDB或其他面向文档的数据库,如果您以性能为目标,则建议是扭曲您的模式,以组织以秒为单位的对象中的滴答声(或以分钟为单位的对象,每分钟是另一个具有60秒的对象)。使用专门的时间序列数据库,您可以轻松查询数据
SELECT open, close FROM market_data WHERE symbol = 'AAPL' AND time > '2016-09-14' AND time < '2016-09-21'
我还以为我可以按分钟/小时/天/周/月/月等方式汇总/最小/最大行数,以便更快地进行计算。
使用InfluxDB,这非常简单。以下是获取每日最小值和最大值的方法:
SELECT MIN("close"), MAX("close") FROM "market_data" WHERE WHERE symbol = 'AAPL' GROUP BY time(1d)
您可以按时间间隔进行分组,时间间隔可以是微秒(u
),秒(s
),分钟(m
),小时(h
),天(d
)或星期(w
)。
与用于存储和查询大量股票报价数据的面向文档的数据库相比,时间序列数据库是更好的选择。