我现在有一个持续的事件驱动的实时流数据的列家族建模为这样的应用:实时数据Cassandra的数据建模
CREATE TABLE current_data (
account_id text,
value text,
PRIMARY KEY (account_id)
)
数据正在每隔X秒发送每个帐户ID,所以我们每次收到事件时都会覆盖现有的行。这些数据包含当前的实时信息,我们只关心最近的事件(对于较旧的数据不适用,这就是我们插入已有密钥的原因)。 从应用程序用户端 - 我们通过account_id语句查询select。
我想知道是否有更好的方法来模拟这种行为,并看着卡桑德拉的最佳实践和类似的问题(How to model Cassandra DB for Time Series, server metrics)。
思考这样的事情:
CREATE TABLE current_data_2 (
account_id text,
time timeuuid,
value text,
PRIMARY KEY (account_id, time) WITH CLUSTERING ORDER BY (time DESC)
)
没有覆写会发生,并且每个插入也将有TTL完成(可以是几分钟TTL)。
现在的问题是如何在之上更好地成为第一个数据模型。据我了解,主要的优势将在READS - 因为数据是按时间所有我需要做的开的是一个简单的
SELECT * FROM metrics WHERE account_id = <id> LIMIT 1
而在第一个数据模型Cassandra的实际读取所有行时,其中覆盖相同的键,然后通过其写入时间戳选择最后一个(请纠正我,如果我错了)。
谢谢。
如果您只需要最近的活动,那么第一个是最好的 –
请问您可以更具体吗?是不是第二个更好的读取? – fncontroloptioncommand