1. 一个Mongo文档最大4M.
  2. GridFS不依赖于MongoDB, 其他符合规范的驱动都可以访问它。
  3. GridFS包含两部分:一部分存储文件名和其他metadata; 另一部分存储实际的文件,通常分成一个个大小为256k的小块。

    这两个部分通常被命名为files和chunks,在fs命名空间下,当然,这些都可以通过配置来更改。当你想区分不同的文件类型时,比如区分图片和视频,使用不同的命名空间是有用的。

  4. Mongofiles工具:
    1. 列出mongofiles.

      mongofiles list

      如果要访问远程服务器,用-h 比如:

      mongofiles list –h remoteserver1

    

  1. 上传文件:

    monofiles put <文件路径>

    上传后如果用mongofiles list来查看,发现存储的名字就是原文件的完成路径,但是实际上是存在GridFS中。也就是说,如果把原文件删了,GridFS还是可以查到的。

  2. 获取文件 :

    mongofiles get <文件路径>

    注意:这一操作会覆盖实际的物理文件。比如:把一个文件传到GridFS后,然后做了一些更改,再执行get操作,那么这段时间的更改都会被覆盖掉。

  3. 删除文件。

    mongofiles delete <文件路径>

  4. 搜索文件

    mongofiles search <关键字>

 

  1. 当上传同一文件两次时,mongo会存两个同名的文件,只有_id属性不同。
  2. GridFS默认的chunk大小是 256k, 知道这个大小是必要的,因为你可以知道你的文件存储的时候被分成多少块。当然数据库驱动会为你处理所有的事情,你在存储的时候不需要担心这些chunk size相关的问题。
  3. Mongo依赖于MD5来实现security 和 integration, security是为了防止没有权限的用户访问了不该他访问的资源,integration确保文件不被更改。

    MD5现在已经不安全,理论上可以产生用同一个md5 checksum(或者md5 hash)产生两个不同的文件(这种情况被称为collision),但是由于做此事的工作量非常大,而且把文件的其他属性用做成一样的非常难,而且有的没有意义,所以实际上还是可以继续用MD5.

    如果你基于安全性考虑,最好用SHA家族的算法,最理想的是SHA-256或者SHA-512, 尽管理论上这些算法也有风险,但是目前还没有遇到实际这样做出的例子。但是,对于用户名密码等重要的数据,你可能要考虑用SHA家族的算法来进行加密.

  4. 查看GridFS 的命令。
    1. db.fs.files.find() 查看GridFS metadata的集合。

    2. db.fs.chunks.find() 查看实际的文件块,以256k为单位。

       

      这里需要注意的是,GridFS只是数据存储的地方,当files集合中的一条记录被删除时,GridFS不会自动删除chunks中对应的记录,需要数据库驱动程序(比如Mongo c++ driver)来做这种清理工作。所以,虽然你可以在程序中直接操作files集合,但是最好还是通过数据库驱动程序(比如比如Mongo c++ driver)来操作。

       

     

 

(The Definitive Guide to MongoDB)

 

Mongo读书笔记1 -- GridFS的更多相关文章

  1. Mongo读书笔记2 -- 数据类型

      Mongo有多种类型的collection, 默认的是随着document 数目的增多自动增大; 还有一些collection被称为capped collection, 只能包含固定数目的docu ...

  2. 读书笔记汇总 - SQL必知必会(第4版)

    本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...

  3. 读书笔记--SQL必知必会18--视图

    读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...

  4. 《C#本质论》读书笔记(18)多线程处理

    .NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...

  5. C#温故知新:《C#图解教程》读书笔记系列

    一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...

  6. C#刨根究底:《你必须知道的.NET》读书笔记系列

    一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...

  7. Web高级征程:《大型网站技术架构》读书笔记系列

    一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...

  8. LOMA280保险原理读书笔记

    LOMA是国际金融保险管理学院(Life Office Management Association)的英文简称.国际金融保险管理学院是一个保险和金融服务机构的国际组织,它的创建目的是为了促进信息交流 ...

  9. 《3D Math Primer for Graphics and Game Development》读书笔记2

    <3D Math Primer for Graphics and Game Development>读书笔记2 上一篇得到了"矩阵等价于变换后的基向量"这一结论. 本篇 ...

随机推荐

  1. BZOJ.2460.[BeiJing2011]元素(线性基 贪心)

    题目链接 线性基:https://blog.csdn.net/qq_36056315/article/details/79819714. \(Description\) 求一组矿石,满足其下标异或和不 ...

  2. web文件上传组件比较jQuery File Upload和Fine Uploader

    jQuery File Upload: https://blueimp.github.io/jQuery-File-Upload/ Fine Uploader: http://fineuploader ...

  3. JBOSS集群和安装

    JBOSS集群和安装 http://jijian91.com/blog20071010/jboss-cluster-part5.html http://wing123.iteye.com/blog/3 ...

  4. 由ORA-28001同一时候带出ORA-28000的解决的方法

    今天,在登录tomcat前台界面时发现不能登录,查看log后发现原来是ORA-28001: the password has expired的错误,这个错误是因为Oracle11G的新特性所致, Or ...

  5. MYSQL 源码- 淘宝数据库研发组

    http://mysql.taobao.org/index.php?title=%E8%B5%84%E6%96%99%E5%85%B1%E4%BA%AB

  6. java基础学习总结——面向对象2

    一.JAVA类的定义

  7. golang 字符串与整数, 布尔转换 strconv

    strconv 是golang对于字符串和基本数据类型之间的转换字符串转整数testStr := "1000" testInt, err := strconv.Atoi(testS ...

  8. C语言 const, static, static const 的区别

    基本定义: const  就是只读的意思,只在声明中使用;static 一般有2个作用,规定作用域和存储方式. 对于局部变量, static规定其为静态存储方式, 每次调用的初始值为上一次调用的值,调 ...

  9. Oracle 学习(scott方案)

      Oracle学习中,重点是sql语句的学习,而所有的sql语句都要在scott用户下完成. 熟悉这个用户下的四张表,是必要的. 查看所有表名: SELECT * FROM tab; 查看每张表的结 ...

  10. 算法:堆排序(Heap Sort)

    备注 考虑到 Heap 的特性,很容易想到将其用作排序的用处,为了提高效率需要适当的改进一下,如:in place remove 和 in place move down. 代码 using Syst ...