我使用Cassandra作为时间序列日志应用程序的主数据存储。我收到大量写入此数据库的数据,因此Cassandra是一个自然而然的选择。
但是,当我尝试显示有关web应用程序上的数据的统计数据时,我对此数据库进行了代价高昂的读取,结果速度开始变慢。
我最初的想法是运行定期的cron作业,每小时预先计算这些统计数据。这将确保不会有缓慢的读取。我想知道是否有其他方法可以从Cassandra数据库中读取数据,最好的解决方案是什么?
发布于 2017-03-28 09:22:27
按照你最初的想法,你是在正确的轨道上。
在C*中存储数据的方式,特别是选择主键字段的方式,直接影响到读出数据的方式。如果您正在命中一个表上的单个分区,那么从C*集群中读取数据是非常高效的,并且是在网站上显示数据的最佳选择。
在您的例子中,如果您想要显示某个级别的聚合数据(例如,按小时),我建议您创建分区键,以便将所有要聚合的数据包含在相同的分区中。下面是我的意思的一个示例模式:
CREATE TABLE data_by_hour (
day text,
hour int,
minute int,
data float,
PRIMARY KEY((day, hour), minute)
);然后,您可以使用cron作业或其他机制来运行查询,并将数据聚合到另一个表中以在网站上显示。
https://stackoverflow.com/questions/43056257
复制相似问题