【问题标题】:Update large denormalized data in Cassandra更新 Cassandra 中的大型非规范化数据
【发布时间】:2018-05-31 16:57:28
【问题描述】:

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

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 表包含用户发布的所有 cmets,它还包含用户 ID 和名称,因此我们可以通过一次查询检索我们需要显示的所有数据。

现在,假设数据库包含 100.000 个 cmets,并且用户决定更改他的用户名。

我真的应该执行 100.000 次更新来更改所有 cmets 中的用户名吗?

【问题讨论】:

    标签: cassandra denormalization


    【解决方案1】:

    是的,您必须更新所有 cmets。这是经典的归一化与非归一化(一致性与性能)的两难境地。

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

    或者您可以保持原样并说这是一项数据保留政策:)

    【讨论】:

      【解决方案2】:

      查看 KillrVideo 参考应用程序here

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

      【讨论】:

        猜你喜欢
        • 2016-10-22
        • 2017-10-23
        • 2015-02-01
        • 2016-05-27
        • 2016-05-13
        • 2017-06-17
        • 2023-03-13
        • 2011-09-24
        • 2017-03-01
        相关资源
        最近更新 更多