我对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)吗?