【问题标题】:NoSQL ( Cassandara ) coming from MySQL, Duplicate data db designNoSQL ( Cassandra ) 来自 MySQL,重复数据数据库设计
【发布时间】:2014-04-26 04:30:08
【问题描述】:

据我了解,在 noSQL 中,数据应该是重复的。因此,例如,如果您有一个 users 表和一个 posts 表,您将像往常一样将用户的信息存储在 users 表中,但随后您会将相关的用户数据存储在 posts 表中。

问题1:我的理解正确吗?

问题 2:如果是这样,这意味着如果我更改用户详细信息,我将更新所有受影响的帖子条目?

【问题讨论】:

  • 对这两个问题都是的!!!

标签: database-design cassandra nosql


【解决方案1】:

从 Cassandra 的角度来看,它主要取决于您需要有效支持的查询。当您查询帖子时,您是否还需要用户数据?如果是这样,在存储帖子的位置包含所需的数据通常会更有效。

所以对于问题 1,是的,在许多情况下,您所描述的是常见做法,但这取决于应用程序的需求。

对于问题 2,这也是一个应用程序问题。如果您预见到用户数据会定期更改,那么您的应用程序可能应该在显示帖子时对用户表进行查找。但是,如果这引入了太多的读取来及时显示所需的帖子,那么在帖子数据中包含用户数据意味着对用户数据的更改将需要在两个地方进行更改。但重要的是要询问历史数据是否需要更改。例如,如果您在 Twitter 上更改您的用户名,它不会返回并将所有之前对您的引用更新为您的新用户名。这是一个应用程序选择。您预计哪些用户数据可能会发生变化?在用户名更改的情况下,您确实希望新值反映在所有以前的帖子中,这种更改需要多及时?是应该马上反映,还是等一个批处理来处理?

要理解的重要一点是,如何执行高效的查询并理解当我们进行非规范化以实现高性能应用程序时所做的参照完整性权衡。在设计数据模型时始终考虑应用程序查询模式。

【讨论】:

    猜你喜欢
    • 2015-03-09
    • 2012-12-08
    • 2020-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    • 1970-01-01
    相关资源
    最近更新 更多