可以直接从Cassandra读取来自Web应用程序的表面信息吗?

时间:2017-03-27 20:49:47

标签: web web-applications cassandra nosql

我正在使用Cassandra作为时间序列日志记录应用程序的主要数据存储。我收到大量的写入数据库,因此Cassandra是一个很自然的选择。

但是,当我尝试在Web应用程序上显示有关数据的统计信息时,我会对此数据库进行代价高昂的读取操作,并且事情开始变慢。

我最初的想法是运行定期的cron作业,每小时预先计算这些统计信息。这将确保没有慢读。我想知道是否有另一种方法可以从Cassandra数据库中读取什么是最佳解决方案?

1 个答案:

答案 0 :(得分:0)

你的初步思路是正确的。

如何在C *中存储数据,特别是如何选择主键字段对如何读取数据有直接影响。如果您在桌面上点击一个分区,那么从C *集群中读取数据非常有效,并且是在网站上显示数据的绝佳选择。

在您的情况下,如果您想要显示某种级别的聚合数据(例如按小时),我建议您创建分区密钥,以便使其成为所有要聚合的数据包含在相同的分区。这是我的意思的示例模式:

CREATE TABLE data_by_hour (
  day text,
  hour int,
  minute int,
  data float,
  PRIMARY KEY((day, hour), minute)
);

然后,您可以使用cron作业或其他一些机制来运行查询,并将数据聚合到另一个表中以显示在网站上。