我現在有一個持續的事件驅動的實時流數據的列家族建模爲這樣的應用:實時數據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