前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MongoDB设计模式

MongoDB设计模式

作者头像
用户1263954
发布2018-01-30 15:48:56
1K0
发布2018-01-30 15:48:56
举报
文章被收录于专栏:IT技术精选文摘IT技术精选文摘

MongoDB是一个NoSQL文档数据库。 它是大多数用例的理想选择,然而当它不适用你的用例时,您仍然可以通过使用以下设计模式来克服它的一些限制。

1.查询命令隔离模式

对副本集合中的不同节点隔离不同的责任。 主节点可能具有优先级1,并且只能保留插入和更新所需的索引。 查询可以在次节点中执行。 此模式将增加“优先级1”服务器上的写入吞吐量,因为在写入集合时需要更新和插入较少的索引,而次节点将会有更少的索引更新并拥有一组针对其工作负载进行优化的内存工作集

2.应用级事务模式

MongoDB内部不支持事务和文档锁。 但是我们可以通过应用逻辑来维护一个队列。

3.桶模式

当文档具有在一段时间内增长的数组时,请使用压缩模式。 例如:订单。 订单行可能增长以超过文档所需的大小。 该模式以编程方式处理,并使用容忍度计数来触发。

4.关系模式

有时嵌入整个文档是不可行的 - 例如,当我们建模人物时。 使用此模式建立关系。

1.确定数据是否属于文档 - 是否有关系?

2.在可能的时候进行嵌入,特别是当数据是有用的和排他的(“属于”)。

3.始终将引用_id值最小化。

4.对关系的有用部分进行反范式。 良好的候选者不会经常或永远改变有用的值。

5.记得对反范式的数据进行更新和关系修复。

5.物化路径模式

如果您有一个数据模型的树型图,其中相同的对象类型是一个对象的子对象,则可以使用物化路径模式来进行更有效的搜索/查询。 下面给出了一个示例。

查询检索整个树,按字段路径排序:

db.collection.find().sort({path:1})

在路径字段上使用正则表达式来查找Programming的后代:

db.collection.find({path:/,Programming,/})

检索Books作为Parent的后代:

db.collection.find({path:/ ^,Books,/})

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-09-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT技术精选文摘 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档