【发布时间】:2016-10-22 16:15:36
【问题描述】:
比方说,我们有可以评论视频的用户,我们希望通过带有用户名的视频显示所有 cmets。 用户也可以访问他的个人资料页面并更改他的名字。
基于此答案Cassandra denormalization datamodel 中涵盖的 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)
);
看起来棒极了,我们只需一个查询就可以获取视频显示 cmets 所需的数据。
现在,让我们考虑这样的用例。
用户创建了很多 cmets(例如 10 000 个),然后决定更改他的名称。 我们应该更新所有 cmets 以更改他的名字吗? 有没有办法让它变得高效?
【问题讨论】:
-
您对这个问题有更深入的了解吗?我像在这里一样对我的 cmets 进行了非规范化,我想知道如果用户更改它们会发生什么?
标签: cassandra data-modeling denormalization nosql