这是一个非常“noobish”的问题,但我正在开发一个带有文档数据库的项目,我认为他们错误地使用了它。因此,我有点想确认这一点,因为我觉得它玷污了我的经历。
简而言之,它们似乎为文档范式带来了关系思维。例如,他们不是在另一个中嵌入特定的 JSON 对象,而是通过 id 在业务层将它们拉到一起(我闻起来很像外键)。
现在,确实在这里避免了数据的重复(嘿,作为一个 SQL 人,我完全是关于第 3 范式),但我认为将数据作为更大文档的一部分放在其中比避免重复更重要数据的。
我知道可能存在权衡,拥有包含所有东西的巨大对象可能不明智,但我希望得到一些指导,了解在这个空间中做事的最佳方式是什么以及这个地方是否(可能)它错了。(如果盲人在领导盲人,NoSQL 是具有挑战性的)。
谢谢
NoSQL 通常被设计为存储非规范化的数据对象,作为一种持久化数据对象的方式,并消除对
JOIN
s 的需求,作为优化读取性能的一种方式。但这并不意味着
JOIN
在 NoSQL 上下文中不允许使用 s,就像在传统的关系数据库上下文中允许持久化非规范化和重复数据一样。它们通常不是每种类型数据库的主要设计重点。我的猜测是您可能是正确的,因为您的合作伙伴在设计项目时存在更多的错误心态,因为他们
JOIN
在应用程序层中,但这实际上取决于您的用例。数据操作的形状通常应该主动完成并尽可能在 NoSQL 数据库中持久化,就像您的想法一样,但它并不总是必须提前持久化,并且
JOIN
RDBMS 中传统的操作(例如 s)不是在 NoSQL 数据库中也总是不好。