博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mongo读书笔记1 -- GridFS
阅读量:6248 次
发布时间:2019-06-22

本文共 1362 字,大约阅读时间需要 4 分钟。

 

  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)

 

转载地址:http://goria.baihongyu.com/

你可能感兴趣的文章
计算机网络与Internet应用
查看>>
linux性能剖析工具
查看>>
Mars说光场(3)— 光场采集
查看>>
Django 文件下载功能
查看>>
Tomcat配置多个域名绑定到不同项目
查看>>
C# MemoryCache GCHandle
查看>>
电子书下载:Building Web Applications with SVG
查看>>
Top 10 Universities for Artificial Intelligence
查看>>
ArcGIS案例学习笔记-聚类点的空间统计特征
查看>>
xBIM 插入复制功能
查看>>
css 温故而知新 select-option 文字方向居右
查看>>
js中的with语句
查看>>
Android 手机卫士--签名文件说明&包名说明
查看>>
Angular2入门:TypeScript的类型 - 对象解构
查看>>
javarebel热部署 (转)
查看>>
今天折腾这么一个正则
查看>>
墨西哥旅游趣闻
查看>>
深入理解JavaScript系列(41):设计模式之模板方法
查看>>
[Flexbox] Using flex-direction to layout content horizontally and vertically
查看>>
web.xml文件的 xsd引用(或dtd引用)学习
查看>>