更新Cassandra中的大型非规范化数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了更新Cassandra中的大型非规范化数据相关的知识,希望对你有一定的参考价值。
假设我有这样的数据模型:
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更新以更改所有评论中的用户名?
答案
是的,你必须更新所有评论。这是经典的规范化与非规范化(一致性与性能)的困境。
因此,您必须决定是否要在注释中存储用户名:大量额外的读取(可以缓存)或一些繁琐的批量更新(可能username
更改不常见?)。
或者你可以保持原样并说它是一个数据保留政策:)
另一答案
看看KillrVideo参考应用程序here。
在包含评论系统的实际运行的应用程序中有许多数据模型示例。
以上是关于更新Cassandra中的大型非规范化数据的主要内容,如果未能解决你的问题,请参考以下文章