原始数据的数据建模,以便在cassandra中进一步转换

时间:2015-07-09 08:55:15

标签: cassandra time-series nosql

我正在开发一个系统,用于存储和处理来自几家工厂的时间序列数据。每个工厂都有不同数量的原始测量值,每个测量值都表示为一个键值对。

需要对原始数据进行预处理以获取语义。我还需要保存原始数据,因为转换过程应该是可配置的。虽然我是No-Sql数据库和Cassandra的新手,但我在网上搜索资源并找到了weather station example(类似于其他资源也有描述)。

我的要求与此示例类似,但作为扩展,我需要一种方法来存储每个工厂的可变数量的测量值(密钥对)。我也知道,我的表模型高度依赖于我想对它运行的查询。最常见的查询是:

  • 获取特定时间(范围)和工厂的每个键的所有值。
  • 获取特定时间(范围)和工厂的每个多个键的所有值。

我现在的问题是,表格结构如何最符合这些要求?

我想到了类似的东西,但不知道它是否包含一些缺点:

CREATE TABLE values_per_day (
  plant_id text,
  date text,
  event_time timestamp,
  key text,
  value text,
  PRIMARY KEY ((plant_id, date), event_time, address)
);

1 个答案:

答案 0 :(得分:0)

对Cassandra的建议是从您要执行的查询开始。对于每个查询,请考虑查询的输入,这些输入指示您希望它返回的数据。对于每个查询,您应该有一个表,该表将查询的输入作为其主键。如果要查询范围值,则该值应为主键的群集键(而不是分区键),其他输入为分区键。如果要查询非常长的值范围,请考虑将该值切换为存储桶。