GridFS简介

GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。

http://www.mongodb.org/display/DOCS/GridFS

http://www.mongodb.org/display/DOCS/GridFS+Specification

GridFS使用

MongoDB提供了一个命令行工具mongofiles可以来处理GridFS,在bin目录下。

列出所有文件:

mongofiles list

上传一个文件:

mongofiles put xxx.txt

下载一个文件:

mongofiles get xxx.txt

查找文件:

mongofiles search xxx    //会查找所有文件名中包含“xxx”的文件

mongofiles list xxx //会查找所有文件名以“xxx”为前缀的文件

参数说明:

–d 指定数据库 ,默认是fs,Mongofiles list –d testGridfs

-u –p 指定用户名,密码

-h  指定主机

-port 指定主机端口

-c 指定集合名,默认是fs

-t 指定文件的MIME类型,默认会忽略

使用MongoVUE来查看,管理GridFS

MongoVUE地址:http://www.mongovue.com/

MongoVUE是个免费软件,但超过15天后功能受限。可以通过删除以下注册表项来解除限制:

[HKEY_CURRENT_USER\Software\Classes\CLSID\{B1159E65-821C3-21C5-CE21-34A484D54444}\4FF78130]

把这个项下的值全删掉就可以了。

nginx-gridfs模块的安装使用

项目主页:https://github.com/mdirolf/nginx-gridfs

通过nginx-gridfs,可以直接用http来访问GridFS中的文件。

1. 安装

安装各种依赖包:zlib,pcre,openssl

在ubuntu下可能是以下命令:

sudo apt-get install zlib1g-dev            //貌似sudo apt-get install zlib-dev 不能安装

sudo apt-get install libpcre3 libpcre3-dev

sudo apt-get install openssl libssl-dev

安装git(略)

用git下载nginx-gridfs的代码:

git clone git://github.com/mdirolf/nginx-gridfs.git

cd nginx-gridfs

git submodule init

git submodule update

下载nginx:

wget http://nginx.org/download/nginx-1.0.12.zip

tar zxvf nginx-1.0.12.zip

cd nginx-1.0.12

./configure --add-module=<nginx-gridfs的路径>

make

sudo make install

如果编译出错,则在configure时加上--with-cc-opt=-Wno-error 参数。

2. 配置nginx

在server的配置中加上以下

location /pics/ {

gridfs pics

field=filename

type=string;

mongo 127.0.0.1:27017;

}

上面的配置表示:

数据库是pics,通过文件名filename来访问文件,filename的类型是string

目前只支持通过id和filename来访问文件。

启动nginx:/usr/local/nginx/sbin/nginx

用MongoVUE把一个图片001.jpg上传到pics数据库中。

打开:http://localhost/pics/001.jpg

如果成功,则可以看到显示图片了。

注意事项

1. GridFS不自动处理md5相同的文件,对于md5相同的文件,如果想在GridFS中只有一个存储,要用户自已处理。Md5值的计算由客户端完成。

2. 因为GridFS在上传文件过程中是先把文件数据保存到fs.chunks,最后再把文件信息保存到fs.files中,所以如果在上传文件过程中失败,有可能在fs.chunks中出现垃圾数据。这些垃圾数据可以定期清理掉。

MongoDB 的 GridFS 详细分析的更多相关文章

  1. ZIP压缩算法详细分析及解压实例解释

    最近自己实现了一个ZIP压缩数据的解压程序,觉得有必要把ZIP压缩格式进行一下详细总结,数据压缩是一门通信原理和计算机科学都会涉及到的学科,在通信原理中,一般称为信源编码,在计算机科学里,一般称为数据 ...

  2. 1125MySQL Sending data导致查询很慢的问题详细分析

    -- 问题1 tablename使用主键索引反而比idx_ref_id慢的原因EXPLAIN SELECT SQL_NO_CACHE COUNT(id) FROM dbname.tbname FORC ...

  3. LinkedList详细分析

    一.源码解析1. LinkedList类定义2.LinkedList数据结构原理3.私有属性4.构造方法5.元素添加add()及原理6.删除数据remove()7.数据获取get()8.数据复制clo ...

  4. android ListView 九大重要属性详细分析、

    android ListView 九大重要属性详细分析. 1.android ListView 一些重要属性详解,兄弟朋友可以参考一下. 首先是stackFromBottom属性,这只该属性之后你做好 ...

  5. C语言中的static 详细分析

    转自:http://blog.csdn.net/keyeagle/article/details/6708077/ google了近三页的关于C语言中static的内容,发现可用的信息很少,要么长篇大 ...

  6. Linux内核OOM机制的详细分析(转)

    Linux 内核 有个机制叫OOM killer(Out-Of-Memory killer),该机制会监控那些占用内存过大,尤其是瞬间很快消耗大量内存的进程,为了 防止内存耗尽而内核会把该进程杀掉.典 ...

  7. Android-Native-Server 启动和注册详细分析

    Android-Native-Server 启动和注册详细分析     以mediaService为实例来讲解: mediaService的启动入口 是一个 传统的  main()函数 源码位置E:\ ...

  8. px,dp,dip,sp,in,mm,pt详细分析

    px,dp,dip,sp,in,mm,pt详细分析 px   :(pixels),屏幕的像素点,不同的设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多. dip  :(devi ...

  9. Http Pipeline详细分析(下)

    Http Pipeline详细分析(下) 文章内容 接上面的章节,我们这篇要讲解的是Pipeline是执行的各种事件,我们知道,在自定义的HttpModule的Init方法里,我们可以添加自己的事件, ...

随机推荐

  1. 任督二脉之Shell中的正则表达式

    VBird说学习Linux,掌握了Shell和正则就相当于打通了任督二脉,此后能力的成长才会突飞猛进. Shell的基础学习之前已经总结了一篇博客:http://www.cnblogs.com/jyz ...

  2. Odyssey.js – 创建互动的,有吸引力的故事

    Odyssey.js 是一个开源工具,它可以让你的地图,叙述和其他多媒体结合成一个美丽的故事.创建新的故事很简单,要求无非是一个现代的 Web 浏览器和一个好的想法.你可以使用现成的模板来控制和设计精 ...

  3. Java 中文字符判断 中文标点符号判断

    Java Character 实现Unicode字符集介绍  CJK中文字符和中文标点判断 主要内容: 1. Java Character类介绍: 2. Unicode 简介及 UnicodeBloc ...

  4. NuGet 让你都美好的PM

    题外话 从前有座山,山上有座庙,庙里有个老和尚.阿阿阿,好多鱼好多余. 什么是Nuget NuGet(发音:New-Get)是一个Visual Studio的扩展.在使用Visual Studio开发 ...

  5. Ioc原理及常用框架

    1 IoC理论的背景    我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑.  图1:软件系统中耦合的对象 如果我们 ...

  6. Python3操作MySQL,查询数据并保存到文件中

    我们在测试过程中,可能需要到数据库中拉去一些数据,为从测试准备.比如最近在做接口性能测试的时候,就需要很多数据来支撑,所以就需要的数据库去查询数据,下面就是python3 查询 mysql 并且保存到 ...

  7. [ORM] Entity Framework(1) CodeFirst快速入门

    Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案 对象关系映射(英语:Object Relational Mapping ...

  8. WampServer 给电脑搭建apache服务器和php环境

    WampServer 给电脑搭建apache服务器和php环境 前端不仅要做页面展示层,还负责着数据交互的部分,不要等到后端人员做好工作了前端才开始对接,那样太被动了. 前端在完成静态页面的编码后,就 ...

  9. 计算几何 : 凸包学习笔记 --- Graham 扫描法

    凸包 (只针对二维平面内的凸包) 一.定义 简单的说,在一个二维平面内有n个点的集合S,现在要你选择一个点集C,C中的点构成一个凸多边形G,使得S集合的所有点要么在G内,要么在G上,并且保证这个凸多边 ...

  10. 【iOS】线程安全的文件读写

    前段时间看了一遍GCD(Grand Central Dispatch)多线程,GCD是苹果为多核开发提供的解决方案 多线程最常见的问题就是读写,比如数据库读写,文件读写,读取是共享的,写是互斥,允许多 ...