您的位置:首页 > 移动开发

mongo capped collection功能介绍及使用注意事项

2013-05-17 10:41 369 查看
简单介绍:

在mongodb中,除了普通的collections,还有一种特殊的collections,叫做capped collections,他有点类似于myql 的ib_logfile,

预先分配大小,插入时以先进先出的方式处理,自动维护集群的大小和顺序,写入时如果不建索引和mysql的日志写入性能差不多,都是顺序写入;



创建方式:

db.createCollection;

function (name, opt) {

var options = opt || {};

var cmd = {create:name, capped:options.capped, size:options.size, max:options.max};

if (options.autoIndexId != undefined) {

cmd.autoIndexId = options.autoIndexId;

}

var res = this._dbCommand(cmd);

return res;

}

5个参数

name:集合名字

capped:创建capped 集合必选

size:文件大小字节

max最大记录数

autoIndexId如果指定为true,会在_id上创建索引,默认情况下collection是创建索引的,但是capped collection不创建

在32为机器上最大大小为482M,在64为机器上受文件系统限制;

查看已经使用了多少空间的函数

validate()

查看是否是固定集合

isCapped()

将普通集合转换为capped collection

db.runCommand({"convertToCapped":"mysqlcoll",size:1000})

使用约束

只能插入和更新,删除需要使用drop()删除所有行,删除行数之后必须显示重新创建;

如果试图插入一个比size还大的集合会失败

检查大小是优先顺序是先size后maxRowNumber

不能sharding

常见用处

1.logging

MongoDB 中日志机制的首选,MongoDB 没有使用日志文件,而是把日志事件存储在数 据库中。在一个没有索引的capped collection中插入对象的速度与在文件系统中记录日 志的速度相当。

2. cache

缓存一些对象在数据库中,比如计算出来的统计信息。这样的需要在 collection 上建立 一个索引,因为使用缓存往往是读比写多。

3. auto archiving

可以利用capped collection的age-out特性,省去了写cron脚本进行人工归档的工作。

推荐用法

1.为了发挥capped collection的最大性能,如果写比读多,最好不要在上面建索引,否则插入速度从"log speed"降为"database speed"。

2.使用"nature ordering"可以有效地检索最近插入的元素,因为capped collection能够保证自然排序就是插入时的顺序,类似于log文件上的tail操作

参考文献
http://www.cnblogs.com/zhy4606/archive/2011/09/14/2175424.html http://xiayuanfeng.iteye.com/blog/989024
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: