我試圖找到一種方法來查詢cassandra數據庫,但我是新來的,我不知道如何。如何在卡桑德拉投票?
可以說我有一個表「用戶」像這樣
-> users
-> user_name
-> gender
-> state
,我想要做的輪詢不斷地讓我知道,如果一個新用戶加入到表中。我怎樣才能做到這一點?
我試圖找到一種方法來查詢cassandra數據庫,但我是新來的,我不知道如何。如何在卡桑德拉投票?
可以說我有一個表「用戶」像這樣
-> users
-> user_name
-> gender
-> state
,我想要做的輪詢不斷地讓我知道,如果一個新用戶加入到表中。我怎樣才能做到這一點?
關係數據庫中的標準方法涉及到做一個SELECT,按照一些與時間相關的ID降序排序,這樣最新的一行總是會首先返回,因此您可以看到是否與最後一個「最新行」並確定變化 - 在cassandra中,這是行不通的,因爲如果沒有WHERE子句,結果將按分區的標記進行排序,該標記(幾乎可以肯定)是隨機的。
然後,解決方案是創建一個具有分區的表,其中用戶在給定分區內進行排序。例如:
CREATE TABLE user_buckets (
bucket text,
user_timestamp timeuuid,
user_username text,
PRIMARY KEY(bucket, user_timestamp)
) WITH CLUSTERING ORDER BY (user_timestamp DESC);
在這種情況下,你會寫到用戶表和user_buckets表兩種,用「桶」被一些合理的(如日期(YYYY) - 其中每個分區包含所有用戶在當年或日期(YYYYMMDD)註冊 - 每個分區包含當天註冊的所有用戶),然後使用SELECT ... FROM user_buckets WHERE bucket =(current-bucket)AND user_timestamp>(last timestamp you'已經看到)。