Folks, 我想用Cassandra中的一張表解決以下問題。所述服務追蹤用戶何時打開資產。在隨後對同一資產發生的事件中,我們只需覆蓋accessDate。Cassandra Schema用於檢索日期定購的記錄
例如記錄:
{用戶名: 「串」,由assetid: 「串」,accessDate:unixTimestamp}
與此說,我們需要滿足下列訪問要求(每要求有自己的可讀性要點):
- 能夠返回用戶已打開以及在什麼時間的所有資產。
這是很容易實現的,表可能看起來像:
CREATE TABLE user_assets_tracker (
userId uuid,
accessDate timestamp,
assetId uuid,
PRIMARY KEY (userid, accessDate, assetId)
);
這使我們能夠查詢所有資產,並在每個最後一次訪問。
SELECT *
FROM user_assets_tracker
WHERE userId = 522b1fe2-2e36-4cef-a667-cd4237d08b89
ORDER BY accessDate DESC;
>
丹迪。現在,我不確定的難點在於希望你們鄉親能夠加入:
- 讓我看看過去30天內添加的所有資產。
當然,LIMIT這裏並不是我們所需要的。另外,我們可能需要2個表來實現這一點。
SELECT *
FROM user_assets_tracker
WHERE userid = 522b1fe2-2e36-4cef-a667-cd4237d08b89
ORDER BY accessDate DESC;
LIMIT 10; ?????
- 告訴我該用戶的最後訪問項目。我認爲這個更容易,LIMIT 1解決了這個問題。
這可能是直線前進,用這個模式:
CREATE TABLE user_assets_tracker (
userId uuid,
accessDate timestamp,
assetId uuid,
PRIMARY KEY (userid, accessDate, assetId)
);
SELECT *
FROM user_assets_tracker
WHERE userid = 522b1fe2-2e36-4cef-a667-cd4237d08b89
ORDER BY accessDate DESC;
LIMIT 1;
- 檢索完整記錄特定的用戶id +由assetid
由於accessDate在我們的模式來由assetid之前,我不知道如何做到這一點。另一張桌子?
謝謝!
PS似乎SASI Index可能是解決
非常感謝你!快速的問題,我看到在第一個例子中(userid,accessdate,assetid),但在第二個例子中(userid,assetid,accessdate); 單個查詢如何工作? – Cmag