金融时间序列数据使用NoSql(例如RavenDB)合适吗?

5
我开始研究NoSql,想知道其他人对这种解决方案在存储和查询金融时间序列数据方面的适用性怎么看?
例如,在简单的情况下,我会存储股票代码、开盘价、最高价、最低价、收盘价、成交量和时间戳。然后,我希望基于股票代码和时间戳范围查询该数据。
你认为什么样的文档结构适合这种情况?
谢谢,
汤姆
编辑: 我主要关注基于时间序列数据的读取查询在NoSQL解决方案和传统关系型数据库解决方案中的性能差异。
3个回答

4

Tom,你想实现什么?RavenDB肯定可以处理这种情况,但你必须意识到RavenDB的索引是在后台更新的。看起来你的情况适合关系型数据库,所以我必须问一下为什么你要寻找NoSQL解决方案。


后台索引更新对于这个使用案例并不是一个问题。我的问题主要是关于读取性能的。在“时间序列”(时间范围)查询方面,NoSql解决方案是否比传统的RMDBS解决方案更好? - TJF
很可能,使用RavenDB,您可以直接在构建的索引之上完成大部分工作,这将非常快速。 - Ayende Rahien

3

看看ESENT

针对您的情况,我建议使用两列主索引:symbol + timestamp(如果您要在某个时间间隔内查找单个符号)或timestamp + symbol(如果您要在某个时间间隔内获取所有符号)。


3
Tom,财务数据往往具有严格的一致性和持久性要求。乍一看,如果没有进一步了解您的应用程序,我会认为您需要 RDBMS 的 ACID 属性,而不是通常定义 NoSQL 解决方案的 BASE 属性。也许如果您描述您的使用模式以及为什么您认为需要非关系型模型,我将能够为您找到更合适的解决方案。
就目前而言,您的数据似乎可以通过关系模型轻松结构化,并且具有相当严格的架构,因此我不认为需要无模式数据库(MongoDB、CouchDB、Riak...)。 通常股票报价需要具有强大的一致性(始终保持最新),因此我不认为需要 Dynamo 克隆(Cassandra、Voldemort...)。 除非您已经拥有大量数据并且在处理速度和资源使用方面遇到瓶颈,否则我不会选择基于列的数据库(HBase、Hypertable)。

ACID属性在这里对我来说并不是必需的。存储的数据仅在批处理作业中每晚更新一次,并将在整个白天接收只读查询。 我感兴趣的是,如果与传统的关系型数据库解决方案相比,NoSQL解决方案是否在“时间序列”查询(选择时间范围内的数据)方面表现更好。 - TJF
这里似乎没有可用性要求,您只是希望在只读数据库上进行快速查询。 这听起来几乎任何体面的数据库都可以提供,您真正需要的只是时间戳索引。 我认为NoSQL解决方案不会更好,但这取决于规模。老实说,我会使用搜索引擎,如Solr(或Lucene),并调整缓存,因为您的数据是只读的,它们可以非常快。 - Asaf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接