所以我在Cassandra中存储用户事件,并且正在为表格寻找正确的密钥。
CREATE TABLE user_events (
user text,
timestamp timestamp,
ip text,
event text,
content text,
service text,
PRIMARY KEY (user, timestamp)
) WITH CLUSTERING ORDER BY (timestamp DESC)
AND compaction = { 'class' : 'DateTieredCompactionStrategy' };
我知道单个分区有限制(我认为~1B)。我不计划删除数据,因为它变老了。我还需要按月或其他方式键入这个吗?例如:
PRIMARY KEY((user, month) timestamp)
或者,如果有更优化的方式或存储时间序列数据的事件。
答案 0 :(得分:1)
不要使用DateTiered,请使用TimeWindow。其次你应该按照你期望的内容进行编写(例如:列出你想要的所有SELECT查询,然后在那之后建模)。但是要避免大分区。
如果您想根据时间查找用户事件,有几种方法可以避免大分区。
第二种方式具有隔离数据的优势,允许您随意移动/存储/更改设置,而不是在将来如果您需要更改某些内容,则必须处理大量数据集。此外,如果您计划在将来删除(比方说,GDPR),则可以在删除完整表格时避免使用逻辑删除。