当前位置:  开发笔记 > 数据库 > 正文

noSQL和规范化数据

如何解决《noSQL和规范化数据》经验,为你挑选了1个好方法。

我正在考虑启动我的第一个CouchDB项目并来自ORM背景我担心如何创建可能难以维护的文档.

例如,如果我有以下型号:

A*--->(1)B

这意味着每个A对象都有一个B对象,并且有许多A可以共享一个B对象.在这种情况下,在A到B中有指针/外键.

我可以创建一个包含所有A数据和B数据的文档.但是,我遇到的问题是,如果在稍后阶段(创建10000个文档之后),我可能需要更改一些数据,这意味着我必须更新所有文档.

在ORM /规范化数据库世界中,我会简单地更新B,所有我的引用现在都是数据库.

我如何在CouchDB中处理这个问题,或者NoSQL方法不适合这些类型的情况?

JD



1> mnemosyn..:

这个问题的一般答案是:这个问题没有一般性答案.

关键是在NoSQL中,数据结构不是由数据决定的,而是由数据结构必须支持的查询决定的.因此,NoSQL方法不是对1:N或M:N关联问题的每个实例使用相同的模式,而是根据您的特定需求使用不同的模式.例如,这些可能是:

写/读比率

特定的数据库功能,使嵌入更容易或更难

您需要支持的查询类型

有关如何对数据进行索引,分片,联合或以任何其他方式拆分或缓存的性能注意事项

一般来说,我的感觉是初学者倾向于"过度嵌入",但我只能代表MongoDB.嵌入是一个强大的功能,但嵌入的对象不是"一等公民",因此它不应该用作每个1:n关系的替代品.只为一些:)


同意.我认为有两个主要指标:a)您更改嵌入对象的次数b)每次显示父级时是否需要显示嵌入对象?如果是这样,你在做什么设备(例如,查询可能与否).因为如果它每100000个文档只更改一次,那么嵌入它可能更容易,并且每次将对象显示给用户时更改它与查询
推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有