更新Cassandra中的大型非规范化数据

问题描述 投票:1回答:2

假设我有这样的数据模型:

CREATE TABLE users (
   id UUID primary key,
   username text,
   ..10 more columns..
)

CREATE TABLE posts(...)

CREATE TABLE comments (
   id UUID primary key,
   post_id,
   user_id UUID,
   username text,
   comment text,
   ..etc..
)

comments表包含用户发布的所有注释,它还包含用户ID和名称,因此我们可以检索我们需要使用一个查询显示的所有数据。

现在,假设数据库包含100.000条评论,用户决定更改其用户名。

我是否真的应该更新100.000更新以更改所有评论中的用户名?

cassandra denormalization
2个回答
1
投票

是的,你必须更新所有评论。这是经典的规范化与非规范化(一致性与性能)的困境。

因此,您必须决定是否要在注释中存储用户名:大量额外的读取(可以缓存)或一些繁琐的批量更新(可能username更改不常见?)。

或者你可以保持原样并说它是一个数据保留政策:)


1
投票

看看KillrVideo参考应用程序here

在包含评论系统的实际运行的应用程序中有许多数据模型示例。

© www.soinside.com 2019 - 2024. All rights reserved.