更新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中的大型非规范化数据的主要内容,如果未能解决你的问题,请参考以下文章

具有非规范化的 cassandra 数据建模

Cassandra 3.0 的新特性: 物化视图

Cassandra 非规范化数据模型

Cassandra:非规范化和分页

Cassandra 数据完整性

使用 Pig 对大型数据框进行非规范化