mongodb设计模式策略之读书笔记

mongodb的设计模式策略

读书笔记

1.查询命令分类模式

在副本集中职责被分离到不同的节点。最基本的第一类节点可能也同时占据着首要地位,它只需要储存那些写入和更新所需的数据。而查询工作则交由第二类节点来执行。这一模式将提升首要节点服务器的写吞吐量,因为当写入一组对象时,需要更新及插入的数据量也随之减少,除此之外,二类节点也得益于较少的待更新数据和其自身所具有的为其工作量而优化的内存工作集。

也就是读写分离,主节点写,备节点做查询。

2.应用程序式事务模式

使用queue

样例

db.queue.insert( { _id : 123,

message : { },

locked : false,

tlocked : ISODate(),

try : 0 });

var timerange = date.Now() - TIMECONSTANT?

var doc = db.queue.findAndModify( { $or : [ { locked : false }, { locked : true, tlocked : {

$lt : timerange } } ], { $set : { locked : true, tlocked : date.Now(), $inc : { try : 1 } } }

)?

//do some processing

db.queue.update( { _id : 123, try : doc.try }, { } )?

这里没有理解

3.Bucketing模式

当文本含有一个不断增长的数组时,则使用Bucketing模式,例如指令。而指令线可能会扩展到超过文档大小的合理值。该模式经由编程方式处理,并通过公差计算触发。

var TOLERANCE = 100?

for( recipient in msg.to) {

db.inbox.update( {

owner: msg.to[recipient], count: { $lt : TOLERANCE }, time : { $lt : Date.now() } },

{ $setOnInsert : { owner: msg.to[recipient], time : Date.now() },

{ $push: { "messages": msg }, $inc : { count : 1 } },

{ upsert: true } )?

这里依然没有理解

4.关系模式

有时,会有不能插入整个文档的情况,例如人体建模时,我们就可以使用该模式来建立关系。

确定数据是否属于该文档,即二者间是否有关系。

如果可能的话,特别是面对有用的独有(专属)数据时,插入文档。

尽可能不参考id值。

对关系中的有用部分进行反规范化处理。好的候选不会经常甚至从不更改值,并且颇为有用。

关注反规范数据的更新和关系修复。

{

_id : 1,

name : ‘Sam Smith’,

bio : ‘Sam Smith is a nice guy’,

best_friend : { id : 2, name : ‘Mary Reynolds’ },

hobbies : [ { id : 100, n :’Computers’ }, { id : 101, n : ‘Music’ } ]

}

{

_id : 2,

name : ‘Mary Reynolds’

bio : ‘Mary has composed documents in MongoDB’,

best_friend : { id : 1, name : ‘Sam Smith’ },

hobbies : [ { id : 101, n : ‘Music’ } ]

}

5.物化路径模式

在一个数据模型的树模式中,同一对象类型是该对象的子对象,这种情况下可以使用物化路径模型来以获取更高效的检索、查询。示例如下:

{ _id: "Books", path: null }

{ _id: "Programming", path: ",Books," }

{ _id: "Databases", path: ",Books,Programming," }

{ _id: "Languages", path: ",Books,Programming," }

{ _id: "MongoDB", path: ",Books,Programming,Databases," }

{ _id: "dbm", path: ",Books,Programming,Databases," }

按字段路径查询树模式:

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

使用路径字段的常规表达来找出Programming的后代集:

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

在Books是top parent的情况下查询Books的后代集:

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

这里使用模糊匹配,没有理解为什么可以算更高效的检索查询。

该文读来自

www.iteye.com/news/31667

时间: 2024-11-03 09:22:57

mongodb设计模式策略之读书笔记的相关文章

《Javascript 设计模式》-读书笔记

第七章   设计模式类别 一.设计模式有三种类别 1.创建型模式:专注于处理对象机制.包括:构造器.工厂.抽象.原型.单例.生成器 2.结构型模式:用于找出在不同对象之间建立关系密切的简单方法. 包括:装饰者.外观.享元.适配器.代理 3.行为模式:用于改善或简化系统中不同对象之间的通信.包括:迭代器.中介者.观察者.访问者 第八章   设计模式分类 <Javascript 设计模式>-读书笔记,布布扣,bubuko.com

《Android源码设计模式解析》读书笔记——Android中你应该知道的设计模式

断断续续的,<Android源码设计模式解析>也看了一遍,书中提到了很多的设计模式,但是有部分在开发中见到的几率很小,所以掌握不了也没有太大影响. 我觉得这本书的最大价值有两点,一个是从设计模式的角度去理解Android源码,结合着日常开发中的常用类,对设计模式的理解会更加的深刻:另外一个好处就是了解常用模式,再看其他人写的代码的时候,更容易理解代码思路.下面是我的读书笔记和一些思考,设计模式只整理我认为重要的部分. 建造者模式 建造者模式最明显的标志就是Build类,而在Android中最常

Mongodb聚合操作之读书笔记

Mongodb聚合操作 读书笔记 mongodb,两种计算聚合pipeline和mapreduce pipeline查询速度快于mapreduce,但MapReduce能够在多台Server上并行执行复杂的聚合逻辑. mongodb不允许Pipeline的单个聚合操作占用过多的系统内存,如果一个聚合操作消耗20%以上的内存,那么mongodb直接停止操作,并向客户端输出错误消息. Pipeline方式使用db.collection.aggregate()函数进行聚合运算,运算速度较快,操作简单.

《设计模式解析》读书笔记-第二章

表示关系的UML记号有4种

大话设计模式读书笔记2——策略模式

策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类直接的耦合. UML 图: 根据<大话设计模式>——第二章 商场促销这个案例代码来简单的记录一下策略模式的使用方式: /// <summary> /// 现金收费抽象类 /// </summary> public abstract class CashSuper { /// <summary> ///

Head First Design Pattern 读书笔记(1) 策略模式

Head First Design Pattern 读书笔记(1) Strategy Pattern 策略模式 这几天为了锻炼看英语文档的能力,开着有道硬着头皮看 <Head First Desgin Pattern>的原版书,顺便做下笔记,把里面提到的每个模式通过回忆的方式画出来复习并记下来总结下学习成果=.= 关于设计模式 使用设计模式是为了增强程序的复用性,拓展性,易维护性. 设计模式会增加程序代码的复杂度,并不是所有情况都必须使用设计模式,需要根据需求以及经验评估使用场景. 学习并掌握

【读书笔记】大话设计模式 1【2014-7-28】

大 大话设计模式这本书给我最大的感觉就是这本书不是为了说明设计模式而写的,它是为了让你能够更好地看懂,更好地理解而存在.到现在读了也有一半了,稍微总结一下. 0.uml类图. 软件工程的基础就是uml类图.依赖:元素A的变化会影响元素B,但反之不成立,那么B和A的关系是依赖关系,B依赖A:用带箭头的虚线表示,箭头指向被依赖元素.泛化:通常所说的继承(特殊个体 is kind of 一般个体)关系,不必多解释了.uml中用带空心箭头的实线线表示,箭头指向一般个体.实现:这个关系最常用于接口.uml

【读书笔记】设计模式第五章:行为型模式

本文主要分析了模板方法模式.命令模式.责任链模式.策略模式.迭代器模式,介绍它们的定义.优缺点.使用场景,以及实例代码.为了深刻地理解设计模式,最重要的还是动手编写代码. 我参照书中的例程重新构想了一些更加生动.易于理解的例子,希望大家喜欢. 代码可以通过以下链接进行浏览: http://git.oschina.net/caipeichao/java-design-pattern 这些代码都经过编译运行,保证没有错误. 模板方法 定义 定义一个操作中的算法框架,而将一些步骤延迟到子类中 角色:抽

【游戏设计模式】之四 《游戏编程模式》读书笔记:全书内容梗概总结

本系列文章由@浅墨_毛星云 出品,转载请注明出处.   文章链接:http://blog.csdn.net/poem_qianmo/article/details/53240330 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 本文的Github版本:QianMo/Reading-Notes/<游戏编程模式>读书笔记 这是一篇超过万字读书笔记,总结了<游戏编程模式>一书中所有章节与内容的知识梗概. 我们知道,游戏行业其实一直很缺一本系