【问题标题】:Update denormalized duplicated data更新非规范化的重复数据
【发布时间】:2017-03-01 01:43:20
【问题描述】:

尝试从 RDBMS 迁移到 NOSQL(具体为 MongoDB)。 到目前为止,我已经完成了几件事:

1) nosql 可以进行非规范化

2) 数据复制没问题。

所以我对重复的数据更新感到困惑......

假设我们有汽车和船只。它们具有共同的颜色属性。然后我们决定重命名颜色。我们不想使用“红色”,而是要使用“亮红色”。

RDBMS 案例: 因此,例如在 RDBMS 中,我将拥有三个表:car、boat、color。 Car 和 Boat 具有链接到颜色表的外键。我将只用一个查询更新一个表并获得一致的数据。

NOSQL 案例: 我有两个系列……船和汽车。我们有每个文档的颜色字段。例如。 船 { 红色”, 快速打字” }

汽车{ 红色”, 类型:“慢” }

所以当我想更改颜色名称时,我应该运行两个查询(针对每个集合)并更新 color == "red" 的每个文档?但是,如果我有几十个重复的集合并且可以忘记其中一个怎么办?是否有任何通用方法/数据库设计来避免/缓解此类情况?或者这是 nosql 的一种权衡?

【问题讨论】:

    标签: mongodb nosql


    【解决方案1】:

    1) nosql 可以进行非规范化

    虽然对于 nosql 确实可以,但对于您的特定项目可能不合适。当您决定使用 sql 或 nosql 时,您应该权衡利弊。

    2) 数据复制没问题。

    这主要是非规范化的结果,所以在这里都适用。

    【讨论】:

    • 我需要创建非常大的对象。为了在我的 sql 查询中获取我使用的 4 到 7 个连接的数据,它们真的很难阅读和维护。所以我决定汇总数据。我相信 nosql 可能适用于我的应用程序。
    • 然后你必须接受你的决定并手动更新这些对象(它总是权衡取舍)。或者使用一些 ORM 工具来为您构建复杂的查询。
    猜你喜欢
    • 2017-06-17
    • 2023-03-13
    • 2011-09-24
    • 2016-10-22
    • 1970-01-01
    • 2017-10-23
    • 2018-05-31
    • 1970-01-01
    • 2012-10-18
    相关资源
    最近更新 更多