簡體   English   中英

在 cassandra 中管理用戶的視頻觀看歷史記錄

[英]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))
);

由於計數器的限制,我創建了兩個表用於遞增秒數和計數器以及其他帶有時間戳的表相同數據。

現在這對於存儲數據很有用,但是在這里我有兩個刪除和獲取數據的問題。

  1. 我想為特定用戶獲取最近 10 的歷史記錄。 我嘗試了查詢,但它在 where 子句中需要 user_id 和 video_id 。
  2. 我想通過 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM