【问题标题】:Demoralization in NoSQLNoSQL 中的士气低落
【发布时间】:2012-11-25 16:05:38
【问题描述】:

Nosql 数据库中的士气低落到底是什么? 我读过它意味着将不同的对象类型建模为不同的文档。我的第一个猜测是它意味着聚合而不存储相关数据,即将实体的所有行存储在单个文档中,相关数据由每行的不同文档引用。 但我不确定这是否正确? 一个例子会很有帮助。 提前致谢

我的意思是士气低落,而不是非规范化。我在以下链接中遇到了这个术语: 1.Couchbase documentation 2.Blog on Nosql

【问题讨论】:

标签: nosql data-modeling aggregation couchbase denormalization


【解决方案1】:

在 NoSQL(以及一般的数据库)的上下文中,士气低落是非规范化的同义词。您可以在许多文档中找到道德化和非规范化的混合用法,或者提到道德化与规范化相反(同样,与非规范化相同):

甚至有那个参考,其中提到一些/许多拼写检查器建议“道德化”而不是“非规范化”。这可以解释为什么有些人使用士气低落:The effect of denormalization

【讨论】:

    【解决方案2】:

    NoSQL 是一个非常非常广泛的领域。它涵盖了许多完全不同的数据库系统,具有完全不同的数据结构概念。

    数据库规范化的教条主要适用于经典的关系数据库。 NoSQL 数据库离关系哲学越远,你就越需要质疑这个教条。

    规范化的哲学假设数据库 JOIN 很便宜。因此,任何可以拆分为多个表以消除冗余的数据都应该拆分。但这并不适用于所有 NoSQL 数据库。其中一些不支持 JOIN 操作,因此获取存储在许多不同数据库条目中的数据可能是一项非常昂贵的操作,需要对数据库进行多次连续查询或昂贵的数据库端代码执行。当您使用其中一个数据库时,您应该以一种可以通过查找尽可能少的条目来满足每个性能关键用例的方式来存储数据,即使这意味着您将拥有冗余数据。

    那些不支持 JOIN 的非关系型 NoSQL 数据库通常支持数据库条目中的数组。这些通常是建模 1:n 关系的首选方法。因此,当 1 个人有 n 个电话号码时,您不会将电话号码存储在单独的表格/文档/集合/whateveryoucallit 中,而是将它们存储在人员条目中的数组中。通常没有理由将电话号码作为自我维持的实体来处理,因为 SQL 无法在单个字段中正确处理多个值。

    【讨论】:

      【解决方案3】:

      NoSQL 世界中的非规范化与 RDBMS 世界中的含义相同。数据重复以提高读取性能。

      【讨论】:

        猜你喜欢
        • 2013-08-19
        • 1970-01-01
        • 2013-10-04
        • 2020-05-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多