MongDB Capped集合和GridFS存储文件

Capped集合
简介
Capped集合的大小固定,性能好,如果空间用完了,新的对象会覆盖旧的对象。
find时默认就是插入的顺序,Capped集合会自动维护。
创建的语法:db.createCollection(集合名称,{“capped”:true,”size”:1000});
说明:size用来指定集合大小,单位为KB
限制集合中对象的个数:可以在创建时设置max参数
说明:指定max数量的时候必须同时指定size容量。淘汰机制只有在容量还没有满时才会依据文档数量来工作。要是容量满了,淘汰机制会依据容量来工作。
可以把已有的集合转化成为固定集合,反之不行。例如:
db.runCommand({“convertToCapped”:”users”,”size”:1000});
使用和约束
1:32位机器上,一个Capped集合的最大值约为482.5M,64位只受系统文件大小的限制,创建的时候,可以预指定大小
2:可以向Capped集合中加入数据,但不能删除数据,也不能改变集合大小。
3:可以使用drop方法删除集合,删除后,需显示的重新创建这个集合

4:Capped集合在创建的时候,默认不会对任何键创建索引,如果要在”_id”上创建索引的话,在创建集合的时候,要使用autoIndexId的参数,设置为true

GridFS存储文件
简介
GridFS是MongoDB用来存储大型二进制文件的一种存储机制。
特别适合用在存储一些不常改变,但是经常需要连续访问的大文件的情况。
GridFS的优点
1:能够简化技术栈,如果已经使用了MongoDB,那么使用GridFS,就不需要其它独立的存储工具了
2:GridFS会自动平衡已有的复制,或者为MongoDB设置的自动分片,所以对文件存储做故障转移或者是横向扩展会更容易
3:GridFS的功能不错,能自动解决一些其他文件系统遇到的问题,如在同一个目录下存储大量的文件
GridFS的缺点
1:性能较低,不如直接访问文件系统快

2:无法修改文档,如果要修改GridFS里面的文档,只能是先删除再添加

基本操作
最简单的就是使用自带的mongofiles工具。
1:查看文件列表:mogofiles list
2:上传文件: mogofiles put 文件路径和文件名
3:下载文件: mogofiles get 文件名
4:查找文件: mogofiles search XXX,查找所有文件名中包含XXX的文件
mogofiles list XXX ,查找所有文件名以XXX开头的文件
3:删除文件: mogofiles delete 文件名
基本原理
GridFS会将大文件分割为多个比较大的块,将每个快作为独立的文档进行存储,另外用一个文档来将这些块组织到一起,并存储该文件的元信息。
GridFS中的块被存储到专用的集合中,默认是fs.chunks,可以通过db.fs.chunks.find();查看这个集合,里面的结构非常简单,说明如下:
1:files_id:块所属文件的元信息
2:n:块在文件中的相对位置

3:data:块所包含的二进制数据

GridFS中每个文件的元信息被存储到单独的集合中,默认是fs.files,里面的结构
非常简单,说明如下:
1:_id:文件唯一的id,就是前面的 files_id
2:length:文件包含的字节数
3:chunkSize:组成文件的每个快的大小,单位是字节,这个值默认是256k
4:uploadDate:文件被上传到GridFS的日期
5:md5:文件内容的md5校验值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值