【问题标题】:Is Cassandra a good choice for this kind of time series data vs sql server?Cassandra 对于这种时间序列数据与 sql server 是一个不错的选择吗?
【发布时间】:2016-06-22 22:58:33
【问题描述】:

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

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

FundId  Date       Price1     Price2

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

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

但是,随着我们收集的数据越来越多,上述查询性能开始下降。我们尝试重新索引和刷新统计数据。问题在于,当我们检索大量数据(例如,获取 1000 支基金的 10 年历史)时,可能需要相当长的时间。

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

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

【问题讨论】:

    标签: cassandra


    【解决方案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 在可扩展性和性能方面没有这种局限性。 (或者更好:当你有一个好的架构时,真的很难达到极限。)

    【讨论】:

    • 谢谢,我正在做一些初步研究,所以按照你说的设置需要相当长的时间。对于您提到的三个查询,它会自动并发运行还是在我的代码中我需要创建多个线程来执行它?
    • 取决于您的语言,但通常您可以异步查询所有代码。我使用 scala、php 和 nodejs 驱动程序,所有驱动程序都是异步选项。
    猜你喜欢
    • 1970-01-01
    • 2020-05-02
    • 1970-01-01
    • 2015-07-29
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 2018-08-11
    • 2015-11-12
    相关资源
    最近更新 更多