MongoDB的固定集合
一、MongoDB固定集合概念
固定集合指的是事先创建,并且大小固定的集合。即假设一个集合设置了固定大小为100,再添加一条文档的时候,会把最前面的文档剔除,永远只保留100条数据。
固定集合特性:固定集合很像环形队列,如果空间不足,最早的文档就会被删除,为新的文档腾出空间。一般来说,固定集合适用于任何想要自动淘汰过期属性的场景。
二、固定集合应用场景
比如日志文件,聊天记录,通话信息记录等只需保留最近某段时间内的应用场景,都会使用到MongoDB的固定集合。
三、如何使用固定集合
创建固定集合使用命令:db.createCollection("集合名词",{capped:true,size:1000,max:100});
capped:true表示该集合为固定集合,size指定集合大小,单位为KB,max指定文档的数量
当指定文档数量上限时,必须同时指定大小。这是为什么呢?
答案是:淘汰机制只有在容量还没有满时才会依据文档数量来工作。要是容量满了,淘汰机制会依据容量来工作。
结合场景来理解:
(1)现创建一个c5的固定集合,大小设置为1000kb,文档数量设置为100,编写命令:db.createCollection("c5",{capped:true,size:1000,max:100});
(2)并向集合中插入10条数据:
for(var i=0,i<=99;i++){
db.c5.insert({name:"fuck",age:i})
}
(3)查找c5集合的大小:db.c5.count(),却发现实际显示的数量只有56条。
结论:当存储的数据达到集合大小的上限时,淘汰机制依据容量来工作,通过不断的淘汰前面插入的数据,来满足后面所有数据的插入,所以根据下图可得,c5检索出来的结果,是从age:43开始的。

再来看一个场景
(1)现创建一个c8的固定集合,大小设置为10000kb,文档数量设置为100,编写命令:db.createCollection("c8",{capped:true,size:10000,max:100});,条件与上个场景差不多,只是大小调整为10000kb
(2)并向集合中插入100条数据:
for(var i=0,i<100;i++){
db.c8.insert({name:"fuck",age:i})
}
(3)再查找c8集合的大小:db.c8.count(),这回的数量达到了预期的100条
(4)这时再插入一条数据,也能插入成功,但是再find一把,会发现第一条数据被干掉了
结论:淘汰机制在容量未满的情况下,会对前面的文档进行淘汰,后面插入多少条数据,则最前面相应的淘汰多少条。

MongoDB的固定集合的更多相关文章
- mongodb的固定集合(优化效率)
mongodb固定集合(Capped Collection)和大文件管理(GridFS) Capped Collection 固定集合(Capped Collection)是性能出色的有着固定 ...
- MongoDB使用固定集合
MongoDB中的固定集合:大小是固定的,类似于循环队列,如果没有空间了,最老的文档会被删除以释放空间,新插入的会占据这块空间. 1.固定集合(oplog) oplog是一个典型的固定集合,因为其大小 ...
- MongoDB固定集合(capped collection)
一 . 什么是固定集合 MongoDB中有一种特殊类型的集合,值得我们特别留意,那就是固定集合(capped collection). 固定集合可以声明collection的容量大小,其行为类似于循环 ...
- MongoDB学习笔记-06 数据库命令、固定集合、GridFS、javascript脚本
介绍MongoDB支持的一些高级功能: 数据库命令 固定大小的集合 GridFS存储大文件 MongoDB对服务端JavaScript的支持 数据库命令 命令的原理 MongoDB中的命令其实是作为一 ...
- MongoDB的学习和使用(固定集合[Capped Collections])
MongoDB 固定集合(Capped Collections) MongoDB 固定集合(Capped Collections)是性能出色且有着固定大小的集合,对于大小固定,我们可以想象其就像一个环 ...
- mongodb固定集合,建立管理员安全验证
建立普通集合 db.createCollections aaa; 建立固定集合名称book capped true 固定集合 size大小 max:文档数量 db.createCollection(& ...
- MongoDB固定集合
固定集合 MongoDB 固定集合(Capped Collections)是性能出色且有着固定大小的集合,对于大小固定,我们可以想象其就像一个环形队列,当集合空间用完后,再插入的元素就会覆盖最初始的头 ...
- MongoDB固定集合(Capped Collections)
MongoDB 固定集合(Capped Collections)是性能出色且有着固定大小的集合,对于大小固定,我们可以想象其就像一个环形队列,当集合空间用完后,再插入的元素就会覆盖最初始的头部的元素! ...
- MongoDB 固定集合
MongoDB 固定集合(Capped Collections)是性能出色且有着固定大小的集合,对于大小固定,我们可以想象其就像一个环形队列,当集合空间用完后,再插入的元素就会覆盖最初始的头部的元素! ...
随机推荐
- 条件随机场(Conditional random field,CRF)
- boost 互斥体和锁
1.共享资源是一个自动锁住的房间,互斥体是钥匙,进入房间必须取钥匙,离开房间应该还钥匙.这就对应着互斥体的lock(取钥匙)和unlock(还钥匙). 2.考虑下面的场景:还钥匙的时候出现异常,会发生 ...
- Spring Cloud对于中小型互联网公司来说是一种福音
Spring Cloud对于中小型互联网公司来说是一种福音,因为这类公司往往没有实力或者没有足够的资金投入去开发自己的分布式系统基础设施,使用Spring Cloud一站式解决方案能在从容应对业务发展 ...
- 【BZOJ】1681: [Usaco2005 Mar]Checking an Alibi 不在场的证明(spfa)
http://www.lydsy.com/JudgeOnline/problem.php?id=1681 太裸了.. #include <cstdio> #include <cstr ...
- Virtual Box下安装Oracle Linux 6.3
Oracle Linux 6.3已经公布快2年了,其功能有非常大的提升,增强了KVM,文件卷的在线resizing,LVM支持 raid4, 5, 6.支持很多其它的虚拟CPU数以及更大内存,详细能够 ...
- yii2.0操作数据库
首先不得不说yii2.0面向对象的比较彻底,建议没学过或者没学好面向对象的同学再看看面向对象. 其次切入正题. 先创建数据库,这步自己写. DROP TABLE IF EXISTS `country` ...
- Sublime 插件补充
开启vim模式+autosave+Livereload插件 安装参考:emmmet http://www.cnblogs.com/wuheng1991/p/6144955.html
- HMCharacteristicType 承接homekit 外包开发 微信 ELink9988
承接homekit 开发 微信 ELink9988 让HMCharacteristicTypePowerState:String配件的电源状态.该值是一个布尔值.让HMCharacteristicTy ...
- elasticsearch性能因素总结
一:硬件方面 在预算充足的情况下.特别是一些高并发业务的搜索.硬件层面占用整个elasticsearch性能空间很大比例. 1)内存: 单实例的情况下,尽量分配32G,排序和统计都是以及内存计算的 ...
- pybot/robot命令参数说明【dos下执行命令pybot.bat --help查看】
Robot Framework -- A generic test automation framework Version: 3.0 (Python 3.4.0 on win32) Usage: r ...