假设我们有可以评论视频的用户,并且我们希望显示带有用户名的视频的所有评论。用户也可以转到他的个人资料页面并更改他的名字。
基于此答案 Cassandra非规范化数据模型中介绍的 Cassandra 数据建模实践,我创建了这样的表:
CREATE TABLE users (
user_id UUID,
first_name TEXT,
last_name TEXT,
PRIMARY KEY ((user_id))
);
CREATE TABLE comments_by_video (
video_id UUID,
added_at TIMESTAMP,
user_id UUID,
comment TEXT,
first_name TEXT,
last_name TEXT,
PRIMARY KEY ((video_id), added_at, user_id)
);
Run Code Online (Sandbox Code Playgroud)
看起来棒极了,我们只需一个查询就可以获得视频评论所需的数据。
现在,让我们考虑这样的用例。
用户创建了大量评论(例如 10 000 条),然后决定更改他的名字。我们应该更新所有评论以更改他的名字吗?有没有办法让它变得高效?