在mongodb中有一个非常好用的collection : Capped Collections。
capped collection具有固定的大小,并且在auto-FIFO和age-out方面有很高的性能(具体怎么个高法得有数据支持,这里只讨论怎么做),age-out是基于插入顺序的。
capped collection自动维护插入顺序,在某些特殊的使用场景中非常有效,例如系统运行日志、监控数据(历史数据),在RDBMS中就需要做分区表,定期清理,而mongodb中只要设置好size或者max值则不需要考虑。
创建:
和标准collection不同,capped collection需要你显示地创建,定义collection的大小size,这里size的单位是byte,实际size是256byte的倍数。
> db.createCollection("mycoll", {capped:true, size:4000})
这时已经创建完毕,我们可以使用下面的命令查看mycoll的状态
>db.mycoll.stats();
{
“ns” : “mydb.mycoll″,
“count” : 0,
“size” : 0,
“avgObjSize” : NaN,
“storageSize” : 4096,
“numExtents” : 1,
“nindexes” : 0,
“lastExtentSize” : 4096,
“paddingFactor” : 1,
“flags” : 0,
“totalIndexSize” : 0,
“indexSizes” : {
},
“capped” : 1,
“max” : 2147483647,
“ok” : 1
}
avgObjSize这个状态字,从字面意思可以看出是平均对象大小。
官网提示要注意:
capped collection里的数据是不允许被删除的,所以只有collection的drop()函数被允许。
capped collection没有默认的_id索引,这点可以使用db.mycoll.getIndexes();来查看,显示结果为空[]。
当定义的大小空间使用完毕后,新添加的数据会替代collection中的旧数据(等下测试可以看到)。
当对capped collection使用find()方法的时候,它默认返回的数据是插入顺序,如果要反转顺序,则必须在find()方法后加上sort({$natural:-1})。
>db.mycoll.find().sort({$natural:-1});
下面就来测试数据替换:
>for(i=1;i<=150;i++) {db.mycoll.insert({x:i})}
上面的语句我们循环向mycoll集合中插入了150条数据,以i来标识我们的数据,下面就使用find方法来查看我们已经插入的数据
>db.mycoll.find();
//我就不复制了,命令行复制比较麻烦
这里的数据是从78开始的
然后使用
>db.mycoll.stats();
可以看到只插入了73个数据,而平均对象大小是36,size是2628,但是我们的storageSize是4096,这个原因官网的一句话可以解释。
Note that the size specified includes database headers
从上面数据从78开始就可以看出确实数据是被替换了
如果我们使用db.mycoll.find().sort({$natural:-1})这条语句,则可以发现第一条记录是150。
选项
size
这是capped collection必须被定义的部分。
max
还可以定义collection中允许存储的最大对象数目,可以用validate()方法查看使用了的空间,从而估算所需的大小。。
db.createCollection("mycoll", {capped:true, size:100000, max:100});
db.mycoll.validate();
查看集合是否是capped collection
db.mycoll.isCapped();
将一个集合转换为capped collection
> db.runCommand({"convertToCapped": "mycoll", size: 100000});
一个小知识:当我们在函数后不加()时,例如db.mycoll.isCapped,这样是用于查看isCapped函数的定义
分享到:
相关推荐
MongoDB学习MongoDB学习MongoDB学习
mongodb学习笔记资料,从安装到操作库collection 对document的crud 索引 replicaSet sharding 备份与恢复
MongoDB 学习PPT
MongoDB学习文档.zip
MongoDB 学习资料集锦,包含了mongodb权威指南,以及官方的详细手册
Mongodb 学习 PPT
MongoDB学习笔记思维导图.pdf
mongoDB学习 命令 安装 总结 mongoDB学习 命令 安装 总结mongoDB学习 命令 安装 总结mongoDB学习 命令 安装 总结mongoDB学习 命令 安装 总结mongoDB学习 命令 安装 总结mongoDB学习 命令 安装 总结
MongoDB;学习资料
MongoDB中有一种特殊类型的集合,值得我们特别留意,那就是固定集合(capped collection)。 固定集合可以声明collection的容量大小,其行为类似于循环队列。数据插入时,新文档会被插入到队列的末尾,如果队列已经...
mongodb 学习文档,网上收集来的,个人感觉非常不错
MongoDB学习视频.zip
初学Mongodb的好帮手,简要清晰,希望对大家有帮助
MongoDB,基础,学习,资料 MongoDB,基础,学习,资料
MongoDB 学习MongoDB 学习MongoDB 学习MongoDB 学习MongoDB 学习MongoDB 学习MongoDB 学习MongoDB 学习
自己在学习MongoDB的一些笔记,里面有各个查询选择器的使用截图,还有一些索引的介绍。
MongoDB学习视频,讲解了非关系型数据库的使用方法以及搭建方法,对mongomd进行了详细的解析!入门!
mongodb学习资料,包括mongodb_and_python学习笔记、mongodb权威指南、mongodb学习手册、mongodb总结。
MongoDB_学习笔记MongoDB_学习笔记MongoDB_学习笔记MongoDB_学习笔记MongoDB_学习笔记MongoDB_学习笔记MongoDB_学习笔记MongoDB_学习笔记MongoDB_学习笔记MongoDB_学习笔记MongoDB_学习笔记MongoDB_学习笔记MongoDB_...
个人收集的mongodb开发学习资料,有需要的可以下载。