`
hongtoushizi
  • 浏览: 374423 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

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(分片)也没太大意义.
复制代码

 

转换集合

把普通的集合转换成固定集合需要使用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不产生磁盘碎片

 

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中的内容

db.fs.files.find();

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

db.fs.chunks.find();

fs.chunks 中存储的是一些实际的内容数据信息.
复制代码
 
 
分享到:
评论

相关推荐

    深入云计算 MongoDB管理与开发实战详解pdf.part1

    《深入云计算(MongoDB管理与开发实战详解)》系统全面的介绍了MongoDB开发、管理、维护和性能优化等方方面面。详细而深入,对MongoDB的开发和管理方法进行了详细的讲解,也对MongoDB的工作机制进行了深入的探讨。注重...

    深入云计算 MongoDB管理与开发实战详解pdf.part2

    《深入云计算(MongoDB管理与开发实战详解)》系统全面的介绍了MongoDB开发、管理、维护和性能优化等方方面面。详细而深入,对MongoDB的开发和管理方法进行了详细的讲解,也对MongoDB的工作机制进行了深入的探讨。注重...

    MongoDb.doc

    GridFS 将大文件分割成多个小块存储,以便更有效地管理和检索。MongoDB 还支持在服务器端运行 JavaScript 脚本,这允许用户直接在数据库上执行函数或存储函数定义以备后用。此外,MongoDB 提供了广泛的语言支持,...

    MongoDB实战

    - **Capped Collection**:固定大小的集合,主要用于日志记录和消息队列等场景。 - **GridFS**:用于存储和检索大型文件,如图片、音频、视频等,利用BSON文档的嵌套特性实现。 ### MapReduce - **MapReduce**:...

    MongoDB权威指南.pdf

    3. **数据模型**: MongoDB以集合(Collection)为单位,集合包含文档(Document),文档是键值对的集合,类似JSON对象。 4. **增删查改**: `insertOne()`、`insertMany()`用于插入数据,`find()`查询,`updateOne()`...

    MongoDB管理与开发精要《红丸出品》

    - Capped Collection是一种特殊类型的集合,主要用于存储固定大小的数据流,如日志文件。 - 特点包括自动覆盖旧数据、固定大小和顺序写入等。 #### 七、GridFS - GridFS是一种用于存储大型文件的MongoDB规范。 - ...

    MongoDB中文教程

    - **简单介绍**: Capped Collection是一种特殊类型的集合,其大小和文档数量都是固定的。 - **功能特点**: - 自动过期机制。 - 高效的写操作。 - **常见用处**: - 日志存储。 - 缓存数据。 #### 七、GridFS - ...

    MongoDB入门学习

    - **GridFS支持**:能够存储和检索大文件,如图片、音频和视频等。 - **数据库结构**: - **Database**:数据库是MongoDB中最高级别的容器,每个数据库都有自己的命名空间。 - **Collection**:集合是文档的容器,...

Global site tag (gtag.js) - Google Analytics