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 中存储的是一些实际的内容数据信息.

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

  1. MongoDB的固定集合

    一.MongoDB固定集合概念 固定集合指的是事先创建,并且大小固定的集合.即假设一个集合设置了固定大小为100,再添加一条文档的时候,会把最前面的文档剔除,永远只保留100条数据. 固定集合特性:固 ...

  2. MongoDB使用固定集合

    MongoDB中的固定集合:大小是固定的,类似于循环队列,如果没有空间了,最老的文档会被删除以释放空间,新插入的会占据这块空间. 1.固定集合(oplog) oplog是一个典型的固定集合,因为其大小 ...

  3. MongoDB固定集合(capped collection)

    一 . 什么是固定集合 MongoDB中有一种特殊类型的集合,值得我们特别留意,那就是固定集合(capped collection). 固定集合可以声明collection的容量大小,其行为类似于循环 ...

  4. mongo 固定集合,大文件存储,简单优化 + 三招解决MongoDB的磁盘IO问题

    1.固定集合 > db.createCollection(, max:});//固定集合 必须 显式创建. 设置capped为true, 集合总大小xxx字节, [集合中json个数max] { ...

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

    介绍MongoDB支持的一些高级功能: 数据库命令 固定大小的集合 GridFS存储大文件 MongoDB对服务端JavaScript的支持 数据库命令 命令的原理 MongoDB中的命令其实是作为一 ...

  6. MongoDB的学习和使用(固定集合[Capped Collections])

    MongoDB 固定集合(Capped Collections) MongoDB 固定集合(Capped Collections)是性能出色且有着固定大小的集合,对于大小固定,我们可以想象其就像一个环 ...

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

    建立普通集合 db.createCollections aaa; 建立固定集合名称book capped true 固定集合 size大小 max:文档数量 db.createCollection(& ...

  8. MongoDB固定集合

    固定集合 MongoDB 固定集合(Capped Collections)是性能出色且有着固定大小的集合,对于大小固定,我们可以想象其就像一个环形队列,当集合空间用完后,再插入的元素就会覆盖最初始的头 ...

  9. MongoDB固定集合(Capped Collections)

    MongoDB 固定集合(Capped Collections)是性能出色且有着固定大小的集合,对于大小固定,我们可以想象其就像一个环形队列,当集合空间用完后,再插入的元素就会覆盖最初始的头部的元素! ...

随机推荐

  1. CSS 居中方法集锦(*******************************)

      记录收集纯CSS层面实现的水平.垂直居中方法可用于块级.行内快.内联元素以及文字图片等. 水平或垂直居中 1.1 text-align1.2 margin1.3 line-height1.4 pa ...

  2. 区域生长算法的一种C++实现

    区域生长算法是一种图像分割方法,能够将图像中具有相同特征的连通区域分割出来,同时保证较好的边缘信息. 区域生长算法的优点是简单,容易实现:但空间和时间复杂度较高,对分割图像要求较高,否则容易形成孔洞和 ...

  3. SHELL学习笔记----IF条件判断,判断条件

    SHELL学习笔记----IF条件判断,判断条件 前言: 无论什么编程语言都离不开条件判断.SHELL也不例外.  if list then           do something here   ...

  4. C#压缩、解压缩文件(夹)(rar、zip)

    主要是使用Rar.exe压缩解压文件(夹)(*.rar),另外还有使用SevenZipSharp.dll.zLib1.dll.7z.dll压缩解压文件(夹)(*.zip).需要注意的几点如下: 1.注 ...

  5. 【win8技巧】应用商店里面如何搜索应用app

    win8应用商店搜索app软件的技巧 1.组合键 WIN+C 打开屏幕最右边磁条 2.点击搜索,输入你想搜的软件名称,里面会列出你已经安装的app或者你点击下面的应用商店选项,就可以搜索互联网上应用商 ...

  6. *[topcoder]LittleElephantAndIntervalsDiv1

    http://community.topcoder.com/stat?c=problem_statement&pm=12822&rd=15707 第一次用C++提交,艰辛.首先想到可以 ...

  7. 延时过程中要加上app.processEvents(),进度条里也要加上这句

    如何让程序等待一段时间QTime t;t.start();while(t.elapsed()<1000);这种死循环也是一种常见错误用法.但改成正确的还是比较简单的: QTime t;t.sta ...

  8. 防止服务器宕机时MySQL数据丢失的几种方案

    这篇文章主要介绍了防止服务器宕机时MySQL数据丢失的几种方案,结合实践介绍了Replication和Monitor以及Failover这三个项目的应用,需要的朋友可以参考下. 对于多数应用来说,My ...

  9. 【HDOJ】1504 Disk Tree

    文件可以重名.先按字典序将路径排序,再过滤掉公共前缀.其中的问题是'\'的ASCII比[A-Z0-9]大,将它替换为空格.否则字典序有问题. /* 1504 */ #include <iostr ...

  10. MySQL事务之数据结构

    事务是关系型数据库的核心,贯穿整个源代码,先来瞅瞅相关的数据结构,揭开面纱: server层和innodb引擎层分别对应了不同的数据结构,但相互关联: server层需要引擎注册事务,以便server ...