与卡桑德拉的数据建模混淆

时间:2016-08-18 20:23:31

标签: cassandra cql nosql

我对Cassandra有点新鲜,并且陷入了数据建模的困境。让我们说,我们有客户和客户,它们之间的关系受到许多规则的约束(这些规则可能存在不同的时间段,规则数量可能会随时间变化,可能会添加新规则,旧规则可能会被删除等等;基本上,我对它们没有任何控制权)和一些与每条规则相关的指标。

我需要支持以下内容:

  • 在给定时间间隔内查询客户,客户和规则的特定组合的表格
  • 能够轻松截断足够老的数据

目前,我想出了两种可能的解决方案,但不幸的是,他们不能同时满足这两个条件。

1。)此选项适用于数据选择,但删除具有此类结构的旧数据是不可能的。

CREATE TABLE IF NOT EXISTS my_cluster.data_per_rule (
        client text,
        customer text,
        rule text,
        time timestamp,
        count counter,
        PRIMARY KEY((client, customer), rule, time)
    )

相关的SELECT条款:

SELECT time, count FROM data_per_rule WHERE
      client = 'client-1' AND
      customer = 'customer-1' AND
      rule = 'rule-1' AND
      time >= 1471464960000 time < 1471551360000

2。)这种情况适合删除过时的数据,但例如,查询此表以获取最后一小时的数据太复杂了。

CREATE TABLE IF NOT EXISTS my_cluster.data_per_rule (
        day date
        client text,
        customer text,
        rule text,
        moment time,
        count counter,
        PRIMARY KEY((day), client, customer, rule, moment)
    )

非常简单的删除:

DELETE FROM data_per_rule WHERE day = '2016-08-18'

我的问题是我可以对表格进行建模以支持这两个要求而不存储一些额外的信息(例如规则ID)吗?

0 个答案:

没有答案