夜说mongodb

标签: MongoDB wordnik 经验 | 发表时间:2011-02-17 18:08 | 作者:nosqlfan Lianhui Wang
出处:http://blog.nosqlfan.com

前两天本站刚刚分享了wordnik使用MongoDB经验的文章:《Wordnik 的 MongoDB 使用经历》,今天又看到一位朋友对这方面做的总结,分享在这里,供大家参考。

赋闲以后很长没有更新博客了,说忙完全是借口,多半因为没有兴致所致。今天凌晨比赛多多,趁着比赛的前奏和间隙,遂浏览些技术文章。发现了 highscalability.com整理出了wordnik使用mongodb和scala的使用经验:http://goo.gl/N3wlU。这个wordnik也算是mongodb的先驱应用者之一,并贡献了一些管理工具给社区,去年的mongoSF大会也有它的参与:http://goo.gl/GhiuY

说起mongodb,从初识到现在已经有些时间,却也没有大场面使用和深入研究。nosql风吹了两年多势头愈发趋于冷静,能真正被大家认可使用的也就那 么几个,但又都离如mysql般成熟有些距离。而说起wordnik,它最初使用的就是mysql,后来主要因为性能问题转投mongodb,效果似乎还不 错。不过,单看wordnik的数据规模和访问情况,精心的使用mysql完全可以胜任,只是mongodb可能能更简单的胜任他们的应用场景。 wordnik给出的一些mongodb使用经验值得分享一下。

mongodb is so fast!!!就像“flash”一样!!!这是很多mongodb使用者对它的响应速度的赞叹。在一些场景下,它确实可能如此。mongodb不像其他 db自己管理内存,而是使用操作系统的内存映射文件(memory-mapped file),这使得mongodb省去了复杂的内存管理,也能取得良好的文件cache效果。当内存够大(比如wordnik为mongodb配备了 72GB的内存,是不是可以根据请求数据的分布来度量出多大内存能满足cache的命中率呢?),读请求的数据相对集中,那么mongodb的读速度要卓越的多。如果mongodb恰好能满足你对速度的要求,那么你可以放弃那一层 cache胶水代码了。

wordnik在更新数据时使用了一个trick,它不是直接更新,而是先把要更新的数据读出来(到了内存),然后再更新。就单条数据来说,这种并没有提 高更新速度。不过,因为mongodb的更新使用的是全局锁,这种方式可以减少实际更新时的锁时间。而且,wordnik的更新是异步的,它会控制更新频 率以避免阻塞读请求,而mongodb在读写锁的效率上应该还可以提高。另一方面,如果更新的文档数据超过原来的大小,mongodb会标记删除旧数据追 加新数据,而在无效碎片利用上,mongodb做得似乎不是很好。之前我在使用时,发现经过几次全数据的批量更新后,文件大小会翻番,而大量的碎片又会影响到 cache效果使得读写速度都有下降。因为mongodb的每个colleciton文件都有一些空间留作padding,如果colleciton很 多,相应的总文件大小也会变大。

mongodb的文档模型很给力,编程接口很简洁。所以从关系数据库迁移到文档数据库,相比什么列型数据库,要容易得多。而从编程的对象模型到存储模型的 映射来说,文档模型也要比关系模型更友好。在我使用mongodb过程中,非常喜欢它的文档嵌套性和value的数组类型,一些一对多关系就省去了关系数 据库中新建一个表存储的需要,简化schema的设计。

原文链接:http://www.kafka0102.com/2011/02/430.html

分享家:Addthis中国

Related posts

相关 [mongodb] 推荐:

[mongodb] java操作mongodb

- - 数据库 - ITeye博客
           //实例化Mongo对象,连接27017端口.                               //连接名为yourdb的数据库,假如数据库不存在的话,mongodb会自动建立. //从Mongodb中获得名为yourColleection的数据集合,如果该数据集合不存在,Mongodb会为其新建立.

【MongoDB】MongoDB之优化器Profiler

- - CSDN博客数据库推荐文章
在mysql数据库中,慢查询日志经常作为优化数据库的依据, mongodb中依然有类似的功能. Mongodb自带的profiler,可以方便地记录所有耗时的操作,以便于调优;. 一、开始profiler功能. 开启profier功能有两种:. 第一种就是直接在启动参数里面进行设置,就在茄冬mongodb时候添加-profile=级别.

夜说mongodb

- Lianhui Wang - NoSQLFan
前两天本站刚刚分享了wordnik使用MongoDB经验的文章:《Wordnik 的 MongoDB 使用经历》,今天又看到一位朋友对这方面做的总结,分享在这里,供大家参考. 赋闲以后很长没有更新博客了,说忙完全是借口,多半因为没有兴致所致. 今天凌晨比赛多多,趁着比赛的前奏和间隙,遂浏览些技术文章.

MongoDB与内存

- 高春辉 - 火丁笔记
但凡初次接触MongoDB的人,无不惊讶于它对内存的贪得无厌,至于个中缘由,我先讲讲Linux是如何管理内存的,再说说MongoDB是如何使用内存的,答案自然就清楚了. 据说带着问题学习更有效,那就先看一个MongoDB服务器的top命令结果:. 这台MongoDB服务器有没有性能问题. 先讲讲Linux是如何管理内存的.

白话MongoDB(一)

- Ease - 江边潮未尽,枫红一季秋
按照官方的说法,MongoDB是一种可扩展的高性能的开源的面向文档(document-oriented )的数据库,采用C++开发. 注意mongo不是mango(芒果),这个词是从humongous中截取出来的,其野心不言而明,直指海量数据存储. 和其他很多NoSQL不太一样,MongoDB背后有一个专门的商业公司在提供支持和推广,有点类似MySQL AB的模式.

MongoDB 索引

- - 博客园_首页
索引是用来加快查询的,数据库索引与数据的索引类似,有了索引就不需要翻遍整本书,数据库可以直接在索引中查找,. 使得查询速度很快,在索引中找到条目后,就可以直接跳转到目标文档的位置.. 要掌握如何为查询配置最佳索引会有些难度.. MongoDB索引几乎和关系型数据库的索引一样.绝大数优化关系型数据库索引的技巧同样适用于MongoDB..

MongoDB sql操作

- - 数据库 - ITeye博客
1.  基本查询:. 下面的示例等同于SQL语句的where name = "stephen" and age = 35.      --返回指定的文档键值对. 下面的示例将只是返回name和age键值对.      --指定不返回的文档键值对. 下面的示例将返回除name之外的所有键值对.

MongoDB Shareding部署

- - 开源小站
几年前写过 MongoDB的Sharding和replication. 其实现在看起来Replication还是可以,Sharding的部分有点过于简单了. 于是现在重新补充一下,至少也更新下,毕竟现在的MongoDB已经到了2.6,于当时的2.2还是有所差异的. 正常的情况下,应该是有6台主机实现一个比较像样的MongoDB Sharding集群,它们分别是mongos /router1台,config 3台,shard 2台.

MongoDB REST Api介绍

- peigen - NoSQLFan
MongoDB默认会开启一个HTTP协议的端口提供REST的服务,这个端口是你Server端口加上1000,比如你的Server端口为27017,那么这个HTTP端口就是28017,默认的HTTP端口功能是有限的,你可以通过添加–rest参数启动更多功能. 下面是在这个端口通过其RESTFul 的API操作MongoDB数据的几个例子,来源是MongoDB官方文档.