zoukankan      html  css  js  c++  java
  • MongoDB 的 GridFS 详细分析


    GridFS简介

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

    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 指定数据库 ,默认是fsMongofiles list –d testGridfs

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

    -h  指定主机

    -port 指定主机端口

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

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


    使用MongoVUE来查看,管理GridFS

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

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

    [HKEY_CURRENT_USERSoftwareClassesCLSID{B1159E65-821C3-21C5-CE21-34A484D54444}4FF78130]

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


    nginx-gridfs模块的安装使用

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

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

    1. 安装

    安装各种依赖包:zlibpcreopenssl

    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

    目前只支持通过idfilename来访问文件。

    启动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中出现垃圾数据。这些垃圾数据可以定期清理掉。


    》》我是IDO老徐,从业十年的IT老鸟,测试职业分享者;文章如未注明转载,均属原创 。 欢迎各同行交流探讨,我的个人博客isTester.com
  • 相关阅读:
    史上最详细 Linux 用户与用户组知识
    MySQL -2- 体系结构--随笔小记
    MySQL -2- 体系结构
    MySQL -1- 简介及安装
    MySQL -0- 课程大纲及课程链接
    探索Windows命令行系列(4):通过命令操作文件和文件夹
    探索Windows命令行系列(3):命令行脚本基础
    探索Windows命令行系列(2):命令行工具入门
    探索Windows命令行系列(1):导航目录
    Oracle 分页方法研究
  • 原文地址:https://www.cnblogs.com/idotest/p/5203874.html
Copyright © 2011-2022 走看看