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)是性能出色且有着固定大小的集合,对于大小固定,我们可以想象其就像一个环形队列,当集合空间用完后,再插入的元素就会覆盖最初始的头部的元素! ...
随机推荐
- EasyUI Tree checkbox node
tree插件允许你创建checkbox tree,如果你点击节点的checkbox,被点击的节点信息得到下和上的继承.例如,点击tomato节点的checkbox,你可以看到vegetables节点现 ...
- URL 重写
转载自:http://www.cnblogs.com/knowledgesea/archive/2012/10/08/2715350.html 一. 为了页面更有利于seo优化,url重写程序需要做出 ...
- 002Maven_第一个Maven演示
第一步. 首先建立Hello项目同时建立Maven约定的目录结构 Hello --src -----main ----------java ----------reso ...
- 一个RESTful服务,用来定位运行在AWS地区(Region)中的中间层服务
Eureka 一个RESTful服务,用来定位运行在AWS地区(Region)中的中间层服务.由两个组件组成:Eureka服务器和Eureka客户端.Eureka服务器用作服务注册服务器.Eureka ...
- UCASE() 函数
UCASE() 函数 UCASE 函数把字段的值转换为大写. SQL UCASE() 语法 SELECT UCASE(column_name) FROM table_name
- Sencha Touch快速入门(译)
翻译自:http://www.sencha.com/learn/sencha-touch-quick-start/ 1.下载Sencha Touch SDK——下载链接 2.安装Safari或Chro ...
- thinkphp中ajaxReturn的用法
1.例子: if ($codeid = $model->addCustomer($this->admin["id"])) { $data["code" ...
- 用 HTML5+ payment方法支付宝支付遇到的坑
用 HTML5+ payment方法碰到的第一个坑就是如果是支付宝的话签约那种支付方式. 因为 Dcloud的文档没有更新的原因你可以看到他们说的都是‘移动支付’,但是你去支付宝平台的时候看到的根本就 ...
- IOS7开发~新UI学起(四)
本文转载至 http://blog.csdn.net/lizhongfu2013/article/details/9166193 1.UITableView: UITableViewDelegate ...
- [SharePoint 2010]Sandboxed Solution (沙箱解決方案)
現有的SharePoint 2007系統中,我們如果要安裝客製化的程式碼到系統中,我們必須製作一個解決方案包裝檔(Solution Package),然後在系統的中央管理後台中,真對整個伺服器農場Fa ...