MongoDB的简单学习3-固定集合和GridFS

一、固定集合

简介:   

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

特点: 

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

属性: 

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

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

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

用法:

用法1:    储存日志信息

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

创建固定集合:

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

显示的创建一个普通集合:> db.createCollection("c1");

104652_5Mea_220449.png

 

创建一个固定集合:>db.createCollection("c2",{capped:true,size:10000});

                               >db.createCollection("c2",{capped:true,size:10000,max:5});

说明:创建一个集合"c2"的固定集合,大小为10000字节。还可以限制文档个数。加上max:100属性。

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

 

查看一下集合的状态:>db.c2.stats();

112241_eLR9_220449.png

converToCapped命令

作用:转换集合,把普通的集合转换为固定集合。

>db.runCommand({convertToCapped:"c1",size:1000000,max:3});

 

二、GridFS

简介:

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

《1.》储存巨大的文件,比如视频、高清图片等。

《2.》利用GridFS可以简化需求。

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

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

《5.》GridFS不产生磁盘碎片

使用:

GridFS使用两个集合来存储数据:

files :包含元数据对象,如文件的名称,文件的上传时间。

chunks :包含其他一些相关信息的二进制块,比如图片的内容

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

常用的方法:

115244_xl41_220449.png

#查看是否有文件:
/usr/local/mongodb/bin/mongofiles list

#制作一个tar文件
cd /opt
tar -zcf pic.tar.gz pic

#上传一个文件到MongoDB
/usr/local/mongodb/bin/mongofiles put /opt/pic.tar.gz 

[root@localhost opt]# /usr/local/mongodb/bin/mongofiles list
2018-05-26T23:59:42.244-0400	connected to: localhost
/opt/pic.tar.gz	103268

MongoDB命令行查看> show collections;
fs.chunks
fs.files
> db.fs.files.find();

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

{ "_id" : ObjectId("5b0a30a3421aa9109f1898a5"), "chunkSize" : 261120, "uploadDate" : ISODate("2018-05-27T04:14:27.028Z"), "length" : 103268, "md5" : "87b3824d56ec390b6dd260eea4503e6e", "filename" : "/opt/pic.tar.gz" }

字段说明:
filename: 存储的文件名
chunkSize: chunks分块的大小
uploadDate: 入库时间
md5: 此文件的md5码 【主要是验证上传的文件是否被修改过,比如:md5sum pic.tar.gz 可以查看上传前的Md5值!】
length: 文件大小,单位“字节”

#查看源文件的MD5值
[root@localhost opt]# md5sum pic.tar.gz 
87b3824d56ec390b6dd260eea4503e6e  pic.tar.gz


db.fs.chunks.find(); 压缩包是存在这里的!

#下载文件(刚才我删除了/opt/下面的pic相关的文件)注意:路径名带上!!因为上传时有路径!
[root@localhost opt]# /usr/local/mongodb/bin/mongofiles get pic.tar.gz
2018-05-27T00:09:02.489-0400	connected to: localhost
2018-05-27T00:09:02.490-0400	Failed: error opening GridFS file 'pic.tar.gz': not found
[root@localhost opt]# /usr/local/mongodb/bin/mongofiles get /opt/pic.tar.gz
2018-05-27T00:09:22.686-0400	connected to: localhost
finished writing to /opt/pic.tar.gz
[root@localhost opt]#
#删除
[root@localhost pic]# /usr/local/mongodb/bin/mongofiles delete /opt/pic.tar.gz
2018-05-27T00:11:34.116-0400	connected to: localhost
successfully deleted all instances of '/opt/pic.tar.gz' from GridFS
[root@localhost pic]# /usr/local/mongodb/bin/mongofiles list
2018-05-27T00:11:49.259-0400	connected to: localhost

Mongo命令查询,结果也为空!!

> show collections;
fs.chunks
fs.files
> db.fs.files.find();
> db.fs.chunks.find();
 

转载于:https://my.oschina.net/hanchao/blog/1819367

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值