教程集 www.jiaochengji.com
教程集 >  数据库  >  mogodb  >  正文 MongoDB教程之Capped Collection

MongoDB教程之Capped Collection

发布时间:2014-07-20   编辑:jiaochengji.com
本文介绍下,MongoDB数据库中有关Capped Collection的知识,有需要的朋友可以作个参考,希望对大家有所帮助。

在MongoDB数据库中,capped collections 是性能出色的有着固定大小的集合,以LRU(Least Recently Used 最近最少 使用)规则和插入顺序进行 age-out(老化移出)处理,自动维护集合中对象的插入顺序,在创建时要预先指定大小。

如果空间用完,新添加的对象将会取代集合中最旧的对象。

1,功能特点
可以插入及更新,但更新不能超出 collection 的大小,否则更新失败。
不允许删除,但是可以调用 drop() 删除集合中的所有行,注意,drop 后需要显式地重建集合。
在 32 位机上,一个capped collection 的最大值约为 482.5M,64 位上只受系统文件大小的限制。

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

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

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

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

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

4,注意事项
1)、可以在创建 capped collection 时指定 collection 中能够存放的最大文档数。
此时也要指定 size, 因为总是先检查 size 后检查 maxRowNumber。
可以使用 validate()查看一个 collection 已经使用了多少空间,从而决定 size 设为多大。

例如:
 

复制代码 代码示例:
db.createCollection("mycoll", {capped:true, size:100000, max:100});
db.mycoll.validate();

max=1 时会往 collection 中存放尽量多的 documents。

2),上述的createCollection 函数用来创建一般的collection也是可行的。
另外,还有一个参数"autoIndexID",值可以为"true"和"false"来决定是否需要在"_id"字段上自动创建索引。

例如:
 

复制代码 代码示例:
db.createCollection("mycoll", {size:10000000, autoIndexId:false})。

默认情况,会对一般的 collection创建索引,但capped collection则不会创建索引。

您可能感兴趣的文章:
MongoDB教程之Capped Collection
NoSQL数据库之MongoDB入门详解
windows x86下安装mongodb且配置自动运行
Mongodb安装手记
php操作mongo数据库的小例子
Ubuntu安装指定版本mongodb使用及卸载
PHP操作MongoDB数据库的示例
MongoDB 磁盘空间不足问题的解决方法
在MongoDB上如何进行数据的导入与导出
详解:Mongodb慢查询(Mongodb slow query log)

[关闭]
~ ~