Cassandra对于这种时间序列数据vs sql server是一个不错的选择吗?

时间:2016-06-22 14:15:15

标签: cassandra

考虑这种情况,我们收集金融市场数据(例如基金价格)并将其存储在sql表中。

通常基金价格最多每天一次,所以表格可以是:

FundId  Date       Price1     Price2

当我们想要一些数据时,一个简单的查询就会:

select Date, Price1, Price2 from FundPriceTable where Date between  XX and XX

然而,随着我们收集越来越多的数据,上面的查询性能开始下降。我们尝试重新编制索引并刷新统计信息。问题是,当我们检索大量数据时(例如获得1000个基金的10年历史),可能需要相当长的时间。

我想知道这种情况(根本没有加入),像Cassandra这样的系统会显示出任何性能优势(假设相同的硬件)吗?

我试图在Cassandra和sql server之间找到时间序列的一些基准文章,遗憾的是没有找到任何东西。

1 个答案:

答案 0 :(得分:1)

取决于您的架构。性能提升取决于您的分区键。在你的例子中: 您可以按日或月分割数据。这个例子按月份吐出:

fundPricesByDay (month int, timestamp timestamp, productId text, Price1 float, Price2, PRIMARY KEY(month, timestamp, productId)) 

如果您需要第一个月和第三个月之间的所有数据,则可以执行3个查询:

select * from fundPricesByDay where month = 1 AND timestamp > 60000;
select * from fundPricesByDay where month = 2;
select * from fundPricesByDay where month = 3 AND timestamp < 99999;

通过这三个查询,您将获得时间戳60000和99999之间的所有数据。但您可以在不同的vNode上执行所有查询。这意味着每个节点必须处理的行数少于sql。它提升了性能。阅读更多关于Cassandra如何工作的内容,您将了解如何提升您的表格。

您明确要求使用相同的硬件。也许没有性能提升。简单地对它进但Cassandra肯定会在可扩展性和性能的组合中获胜。 SQL有其局限性(取决于硬件,集群可能但实现起来很复杂,并且还有其局限性),Cassandra在可伸缩性和性能方面没有这种限制。 (或更好:当你有一个好的架构时,很难达到极限。)