在一些特殊情况下,需要将mongodb的集合设定为一个固定大小,这样数据文件就不会无限制的增大,有利于维护。
本人碰到的问题就是ceilometer使用的mongodb,由于不断的采集数据,导致数据文件不断增大,有时候就会将磁盘占满,导致出现其他问题。采用这种设定一个固定大小的方法,有效解决了这个问题。
1.Capped Collection介绍
Capped Collection 是一种特殊的集合,它大小固定,当集合的大小达到指定大小时,新数据覆盖老数据。Capped collections可以按照文档的插入顺序保存到集合中,而且这些文档在磁盘上存放位置也是按照插入顺序来保存的,所以当我们更新Capped collections中文档的时候,更新后的文档不可以超过之前文档的大小,这样话就可以确保所有文档在磁盘上的位置一直保持不变。
由于Capped collection是按照文档的插入顺序而不是使用索引确定插入位置,这样的话可以提高增添数据的效率。MongoDB的操作日志文件oplog.rs就是利用Capped Collection来实现的。
除此之外,Capped Collection还有以下的一些特点,首先是不允许删除,但是可以调用drop()删除集合中的所有行,不许删除的原因也是为了保持每个文档在磁盘上的位置不变。在32位机器上一个capped collection的最大值约482.5M,64位上没有限制系统文件大小限制。不可以对 Capped Collection 进行分片,在 2.2 版本以后,创建的Capped Collection 默认在 _id 字段上创建索引,而在 2.2 版本或以前没有。
Capped Collection主要用于存储日志信息和缓存一些少用的文档。
2.具体使用
2.1创建Capped Collection
db.createCollection("meter",{capped:true,size:1073741824,max:50})
说明:通过 db.createCollection 命令创建 Capped Collection 集合,创建时必须指定
集合最大值,用于预先分配空间。上面的例子是每个文件最大为1G,保留最多50个对象。一般可以不用限定对象的数量。
2.2查看集合是否是Capped collection
> db.meter.isCapped() > db.meter.stats()
下面是本人的测试结果:
> db.meter.drop() > db.createCollection("meter",{capped:true,size:1073741824,max:50}) > db.meter.isCapped() true > db.meter.stats() { "ns" : "ceilometer.meter", "count" : 5, "size" : 7452, "avgObjSize" : 1490.4, "storageSize" : 1073741824, "numExtents" : 1, "nindexes" : 1, "lastExtentSize" : 1073741824, "paddingFactor" : 1, "systemFlags" : 1, "userFlags" : 0, "totalIndexSize" : 8176, "indexSizes" : { "_id_" : 8176 }, "capped" : true, "max" : 50, "ok" : 1 }
相关推荐
MongoDB中有一种特殊类型的集合,值得我们特别留意,那就是固定集合(capped collection)。 固定集合可以声明collection的容量大小,其行为类似于循环队列。数据插入时,新文档会被插入到队列的末尾,如果队列已经...
MongoDB固定集合.pdf 学习资料 复习资料 教学资源
MongoDB 的 Capped Collection是一个天生的日志系统,MongoDB自己的oplog就是用它来存储的,Capped Collection的特点是可以指定Collection的大小,当记录总大小超过设定大小后,老的数据会被自动抹掉用于存储新的...
MongoDB固定集合与管理工具.pdf 学习资料 复习资料 教学资源
05★MongoDB学习★操作集合(Collection)
MongoDB Java获取集合.pdf 学习资料 复习资料 教学资源
主要介绍了Thinkphp使用mongodb数据库实现多条件查询方法,修改了mongodb驱动文件来实现复合查询、多条件查询,需要的朋友可以参考下
因为MongoDB属于NoSQL,所以集合collection相当于关系型数据库中的表table,这里我们就来详解MongoDB中创建集合与删除集合的操作方法:
-cron MongoDB集合为crontab 该软件包提供了一个简单的API,用于计划任务和在集合上运行重复性作业。 任何集合都可以转换为作业队列或crontab列表。 它使用官方支持的。 它速度很快,最大程度地减少了处理开销,并且...
MongoDB数据库文件-名言警句集合,导入即可使用 MongoDB数据库文件-名言警句集合,导入即可使用 MongoDB数据库文件-名言警句集合,导入即可使用 MongoDB数据库文件-名言警句集合,导入即可使用 MongoDB数据库文件-...
java连接mongodb ,创建集合,添加、修改、查询、删除文档
一、MongoDB简介 3 二、MongoDB结构 3 二、MongoDB 数据库关系型...3、通过Schema来创建Model相当于mongoDB数据库中的集合collection 14 1、Mongoose查询 14 2、Mongoose增加 15 3、Mongoose修改 16 4、Mongoose删除 16
Spark-Mongodb是一个库允许用户利用Spark SQL读写数据至MongoDB集合
这个名为mongodb集合旨在提供允许与MongoDB进行交互的所有Ansible模块。 此集合中包含Ansible 2.9中提供的模块,这些模块将受益于此集合的发展和质量要求。 由于这是一个独立集合,因此可以按自己的发布节奏发布。...
显示数据库中所有的集合(collection) 4、db.serverStatus() 查看数据库服务器的状态。 5、查询指定数据库统计信息 use fragment db.stats() 6、查询指定数据库包含的集合名称列表 db.getCollectionNames()
很全面的mongodb 官网资料
MongoDB使用说明手册,安装,使用,语法。
MongoDB Java创建集合.pdf 学习资料 复习资料 教学资源