【发布时间】:2022-07-14 16:51:45
【问题描述】:
我使用的是 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))
);
由于计数器的限制,我创建了两个表用于递增秒数和计数器以及其他带有时间戳的表相同数据。
现在这对于存储数据很有用,但是在这里我有两个删除和获取数据的问题。
- 我想获取特定用户最近 10 个的历史记录。我试过了 查询,但它在 where 子句中需要 user_id 和 video_id。
- 我想通过 video_id 删除历史记录
因此,如果仅使用一个不起作用的分区键获取或删除数据并且我找不到任何解决方案,则主要问题是。
我将非常感谢您的帮助,我可以使用任何其他更适合此数据库或此数据库中任何解决方案的数据库。
【问题讨论】:
-
“为特定用户获取最近 10 的历史记录”是什么意思?
-
您希望通过将一些数据移至 Cassandra 获得什么?
-
有什么问题 - 备份速度?删除速度?获取语法?
-
嗨@RickJames 感谢 cmets。我想通过用户 ID 为用户获取最近 10 个观看的视频。
-
我正在移动数据以使 mysql 数据库变小并单独管理历史数据。这将使我很容易轻松地备份两者。
标签: mysql cassandra datastax cassandra-4.0