mongodb的固定集合(优化效率)

mongodb固定集合(Capped Collection)和大文件管理(GridFS)

Capped Collection

固定集合(Capped Collection)是性能出色的有着固定大小的集合,以LRU(Least Recently Used最近最少使用)规则和插入顺序进行age-out(老化移出)处理,自动维护集合中对象的插入顺序,在创建时要预先制定大小,如果空间用完,新添 加的对象将会取代集合中最旧的对象,永远保持最新的数据。

查看集合的状态信息

db.cot1.stats(); //查看集合cot1的状态信息

删掉指定集合

db.collection1.drop(); //删除collection1集合

mongoDB中集合创建默认是隐式创建的,可以使用createCollection显示创建集合

db.createCollection("collect");

删掉指定数据库

db.dropDatabase(); //删除当前数据库

查询所有数据库

show dbs //查询所有数据库

显示当前库中所有集合

show tables; 或者 show collections;

固定集合的功能特点

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

固定集合属性及用法:

属性1:对固定集合进行插入速度极快

属性2:按照插入顺序的查询输出速度极快

属性3:能够在插入最新数据时,淘汰最早的数据

用法1:储存日志信息

用法2:缓存一些少量的文档

创建固定集合

不像普通集合,固定集合需要显示的创建使用createCollection命令

eg. db.createCollection("collect",{capped:true, size:10000});

创建一个集合为collect的固定集合,大小为10000字节,还可以指定文档个数,加上Max:100属性.

注意:指定文档上限,必须指定大小,文档限制是在容量没满时进行淘汰,要是满了,就根据容量限制来进行淘汰.

可以再创建capped
collection时指定collection中能够存放的最大文档数目,但这是要指定size,因为总是先检查size后检查
maxRowNumber.可以使用validate()查看一个collection已经使用了多少空间,从而决定size设为多大.

> db.createCollection("mycappedcoll",{capped:true,size:10000,max:100})

{ "ok" : 1 }

> db.mycappedcoll.validate();

创建collection时还有一个参数”autoIndexID”,值可以为”true”和”false”,决定是否需要在”_id”上创建索引,例如

> db.createCollection("mycappedcoll",{capped:true,size:10000,max:100,autoIndexId:false})

默认情况下对一般的collection是创建索引的,但不会对capped collection创建.capped collection不能被Shard,这也是有道理的,一个经常被刷新且大小固定的表,做Sharding(分片)也没太大意义.

www.2cto.com

转换集合

把普通的集合转换成固定集合需要使用convertTocapped命令

db.runCommand( { convertTocapped:"test",size:10000 } );

把test普遍集合转换为固定集合,大小为10000字节.

自然排序

固定集合文档按照插入顺序储存的,默认情况下查询就是按照插入顺序返回的,也可以使用$natural调整返回顺序.

db.mycappedcolt.find().sort( {"$natural":1} );

参数1表示默认顺序,-1则相反.

判断集合是否为固定集合

db.colt.isCapped();

查看集合状态信息

db.colt.stats();

GridFS

GridFS是一种在MongoDB中存储大二进制文件的机制,使用GridFS原因有以下几种:

储存巨大的文件,比如视频、高清图片等.利用GridFS可以简化需求.

GridFS会直接利用已经建立的复制或分片机制,故障恢复和扩展都很容易.

GridFS可以避免用户上传内容的文件系统出现问题.

GridFS不产生磁盘碎片

www.2cto.com

GridFS存储数据

GrdiFS使用两个表来存储数据:

files 包含元数据对象

chunks 包含其他一些相关信息的二进制块.

为了使多个GridFS命名为一个单一的数据库,文件和块都有一个前缀,默认情况下,前缀是fs,所以任何默认的GridFS存储将包括命名空间fs.files和fs.chunks。

各种第三方语言可以更改其前缀

使用GridFS mongofiles

mongofiles是从命令行操作GridFS的一种工具

四个命令:put(存储)、get(取得/下载)、list(列表)、delete(删除)

eg. ./mongofiles put testfile.zip

./mongofiles list

./mongofiles get testfile.zip

./mongofiles delete testfile.zip

验证md5

mg5sum testfiles.zip

此时登录mongo,show tables可以看到新增2个文件fs.files和fs.chunks.

查看fs.files中的内容  www.2cto.com

db.fs.files.find();

fs.files 中存储的是一些基础的元数据信息.

db.fs.chunks.find();

fs.chunks 中存储的是一些实际的内容数据信息.

时间: 2024-10-06 21:07:02

mongodb的固定集合(优化效率)的相关文章

MongoDB的固定集合

一.MongoDB固定集合概念 固定集合指的是事先创建,并且大小固定的集合.即假设一个集合设置了固定大小为100,再添加一条文档的时候,会把最前面的文档剔除,永远只保留100条数据. 固定集合特性:固定集合很像环形队列,如果空间不足,最早的文档就会被删除,为新的文档腾出空间.一般来说,固定集合适用于任何想要自动淘汰过期属性的场景. 二.固定集合应用场景 比如日志文件,聊天记录,通话信息记录等只需保留最近某段时间内的应用场景,都会使用到MongoDB的固定集合. 三.如何使用固定集合 创建固定集合

【MongoDB学习笔记26】MongoDB的固定集合

MongoDB中的普通集合是动态的,可以自动增长容纳更多的数据:相对而言,有另一种集合称之为固定集合. (1)固定集合需要实现显式创建,集合大小固定: (2)一旦固定集合中空间用完,插入的新文档将覆盖最老的那个文档的空间,类似循环队列: (3)固定集合不能被分片: (4)固定集合不能修改,只能删除重建 一.创建固定集合 使用CreateCollection创建固定集合myCollection,字节大小限制在10000,文档数量限制在100: > db.createCollection("m

MongoDB 进阶(命令\固定集合)

命令参考 查看MongoDB命令方法 ● 在shell中运行db.listCommands()命令 ● 在浏览器管理接口http://localhost:28017/_commands 下面是MongoDB最常使用的命令: ●  buildinfo 管理专用命令,返回MongoDB服务器的版本号和主机操作系统信息 >db.runCommand({"buildinfo":1}) { "version" :"2.4.14", "git

3、MongoDB学习之固定集合

一.MongoDB固定集合概念 固定集合指的事先创建,并且大小固定的集合.即假设一个集合设置了固定为100,再添加一条文档的时候,会把最前面的文档剔除,永远只保留100条数据. 固定集合特性:固定集合很像环形队列,如果空间不足,醉枣的文档就会被删除,为新的文档腾出空间.一般来说,固定集合适用于任何想要自动淘汰过期属性的场景. 二.固定集合应用场景 比如日志文件,聊天记录,通话信息记录等需要保留最近某段时间内的应用场景,都会适用到MongoDB的固定集合. 当知道文档数量上限时,必须同时指定大小,

MongoDB固定集合(Capped Collections)

MongoDB 固定集合(Capped Collections)是性能出色且有着固定大小的集合,对于大小固定,我们可以想象其就像一个环形队列,当集合空间用完后,再插入的元素就会覆盖最初始的头部的元素! 1. 创建固定集合: db.createCollection("cappedLogCollection",{capped:true,size:10000}) 指定文档个数: db.createCollection("cappedLogCollection",{capp

mongodb固定集合,建立管理员安全验证

建立普通集合 db.createCollections aaa; 建立固定集合名称book capped true 固定集合 size大小 max:文档数量 db.createCollection("book",{capped:true,size:10000,max:5}) "capped" : false, 表示普通集合 普通集合可以转换为固定集合      db.user.convertToCapped(maxBytes) - calls {convertToC

MongoDB固定集合

固定集合 MongoDB 固定集合(Capped Collections)是性能出色且有着固定大小的集合,对于大小固定,我们可以想象其就像一个环形队列,当集合空间用完后,再插入的元素就会覆盖最初始的头部的元素! 特点:可以插入及更新,但更新不能超出collection的大小,否则更新失败,不允许删除,但是可以调用drop()删除集合中的所有行,但是drop后需要显式地重建集合. 回到顶部 示例 > db.createCollection(, {capped:, size:, max: : >&

MongoDB学习笔记-06 数据库命令、固定集合、GridFS、javascript脚本

介绍MongoDB支持的一些高级功能: 数据库命令 固定大小的集合 GridFS存储大文件 MongoDB对服务端JavaScript的支持 数据库命令 命令的原理 MongoDB中的命令其实是作为一种特殊类型的查询来实现的,这些查询针对$cmd集合来执行.runCommand仅仅是接受命令文档,执行等价查询. >db.runCommand({"drop":"test"}) 上面的命令等价于下面的查询: >db.$cmd.findOne({"d

MongoDB 固定集合(Capped Collections)

MongoDB 固定集合(Capped Collections)是性能出色且有着固定大小的集合,对于大小固定,我们可以想象其就像一个环形队列,当集合空间用完后,再插入的元素就会覆盖最初始的头部的元素! 创建固定集合 我们通过createCollection来创建一个固定集合,且capped选项设置为true: >db.createCollection("cappedLogCollection",{capped:true,size:10000}) 还可以指定文档个数,加上max:1