[英]managing video watch history of users in cassandra
我使用的是 MYSQL 數據庫,但我的歷史表之一增長非常快,已經超過 3 億行,這使得數據庫變得緩慢且難以創建備份。 所以我決定只移動卡桑德拉的那張桌子。 這是我第一次使用 Cassandra。 在 mysql 中,我存儲了 user_id、video_id、watch_secs、watch_counter、timestamp、user_id、video_id 是唯一的復合鍵,如果已經存在,則增加 watch_secs 和 watcher_counter。 我試圖跟隨 Cassandra
CREATE TABLE IF NOT EXISTS history
(
user_id int,
video_id int,
watch_secs int,
watch_counter int,
last_updated timestamp,
history_timestamp timestamp,
PRIMARY KEY ((user_id, video_id))
);
CREATE TABLE IF NOT EXISTS history_counter
(
user_id int,
video_id int,
watch_secs counter,
watch_counter counter,
PRIMARY KEY ((user_id, video_id))
);
由於計數器的限制,我創建了兩個表用於遞增秒數和計數器以及其他帶有時間戳的表相同數據。
現在這對於存儲數據很有用,但是在這里我有兩個刪除和獲取數據的問題。
因此,如果僅使用一個不起作用的分區鍵獲取或刪除數據並且我找不到任何解決方案,則主要問題是。
我將非常感謝您的幫助,我可以使用任何其他更適合此數據庫或此數據庫中任何解決方案的數據庫。
SELECT ...
FROM history
WHERE user_id = ?
ORDER BY history_timestamp DESC
LIMIT 10
並將其添加到表history
中:
INDEX(user_id, history_timestamp)
這可能需要使用JOIN
video_id
到其他表來獲取 10 個視頻的名稱。
( history_counter
是干什么用的?觀看視頻的人的當前狀態?還有別的嗎?)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.