首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反正规化与父引用与MapReduce

反正规化与父引用与MapReduce
EN

Stack Overflow用户
提问于 2015-07-15 08:00:29
回答 1查看 191关注 0票数 1

我有一个高度标准化的数据模型。目前,我正在使用手动引用,存储_id并运行顺序查询,从最深的集合中获取详细信息。

引用是单向的,流程大约有5-6个集合.对于一个特定的用例,我不得不通过从更高级别的集合中查询后续的"_id“来查询最深的集合。所以从技术上讲,每次我运行一个

代码语言:javascript
复制
db.collection_name.find(_id: ****). 

我的主要目标是在不影响其他集合原子性的情况下优化读取。我读过关于非规范化的文章,这对我来说没有任何意义,因为我希望保留一个选项来改变基数,从而完全保持一个单独的集合。

我最初考虑使用MapReduce从后面进行聚合,并主要针对特定的用例拥有一个集合。但即便是这样听起来也没那么好。

在关系数据库中,我将在子查询中拆分查询,并执行连接以获得与初始结果相交的数据集。由于mongodb不支持联接,所以我很难搞清楚任何事情。

如果您之前遇到过类似的问题,或者知道如何解决它,请提供帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-15 08:43:35

去造假你的数据。

MongoDB不做联接的句点.

数据库上没有从多个集合获取数据的操作。不是find(),不是aggregate(),也不是MapReduce。当您需要将数据从多个集合中拼凑在一起时,除了在应用程序层上这样做之外,没有别的方法了。由于这个原因,您应该组织数据的方式,任何公共和性能相关的查询可以通过查询一个集合。

为了做到这一点,您可能需要创建冗余和传递依赖。这在MongoDB中是正常的。

当你觉得这很“脏”的时候,你应该接受这样一个事实:你的性能会是次优的,或者使用另一种数据库,比如一个经典的关系数据库或一个图形数据库。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31424690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档