我正在使用Cassandra作为时间序列日志记录应用程序的主要数据存储。我收到大量的写入数据库,因此Cassandra是一个很自然的选择。
但是,当我尝试在Web应用程序上显示有关数据的统计信息时,我会对此数据库进行代价高昂的读取操作,并且事情开始变慢。
我最初的想法是运行定期的cron作业,每小时预先计算这些统计信息。这将确保没有慢读。我想知道是否有另一种方法可以从Cassandra数据库中读取什么是最佳解决方案?
答案 0 :(得分:0)
你的初步思路是正确的。
如何在C *中存储数据,特别是如何选择主键字段对如何读取数据有直接影响。如果您在桌面上点击一个分区,那么从C *集群中读取数据非常有效,并且是在网站上显示数据的绝佳选择。
在您的情况下,如果您想要显示某种级别的聚合数据(例如按小时),我建议您创建分区密钥,以便使其成为所有要聚合的数据包含在相同的分区。这是我的意思的示例模式:
CREATE TABLE data_by_hour (
day text,
hour int,
minute int,
data float,
PRIMARY KEY((day, hour), minute)
);
然后,您可以使用cron作业或其他一些机制来运行查询,并将数据聚合到另一个表中以显示在网站上。