第33章:MongoDB-索引--GridFS存储文件
GridFS是MongoDB用来存储大型二进制文件的一种存储机制。特别适合用在存储一些不常改变,但是经常需要连续访问的大文件的情况。
1:能够简化技术栈,如果已经使用了MongoDB,那么使用GridFS,就不需要其它独立的存储工具了
2:GridFS会自动平衡已有的复制,或者为MongoDB设置的自动分片,所以对文件存储做故障转移或者是横向扩展会更容易
3:GridFS的功能不错,能自动解决一些其他文件系统遇到的问题,如在同一个目录下存储大量的文件
1:性能较低,不如直接访问文件系统快
2:无法修改文档,如果要修改GridFS里面的文档,只能是先删除再添加
最简单的就是使用自带的mongofiles工具。
1:查看文件列表:mogofiles list
2:上传文件: mogofiles put 文件路径和文件名
3:下载文件: mogofiles get 文件名
4:查找文件: mogofiles search XXX,查找所有文件名中包含XXX的文件mogofiles list XXX ,查找所有文件名以XXX开头的文件
3:删除文件: mogofiles delete 文件名
GridFS会将大文件分割为多个比较大的块,将每个快作为独立的文档进行存储,另外用一个文档来将这些块组织到一起,并存储该文件的元信息。
GridFS中的块被存储到专用的集合中,默认是fs.chunks,可以通过db.fs.chunks.find();查看这个集合,里面的结构非常简单,说明如下:
1:files_id:块所属文件的元信息
2:n:块在文件中的相对位置
3:data:块所包含的二进制数据
GridFS中每个文件的元信息被存储到单独的集合中,默认是fs.files,,可以通过db.fs.files.find();查看这个集合里面的结构非常简单,说明如下:
1:_id:文件唯一的id,就是前面的files_id
2:length:文件包含的字节数
3:chunkSize:组成文件的每个快的大小,单位是字节,这个值默认是256k
4:uploadDate:文件被上传到GridFS的日期
5:md5:文件内容的md5校验值
第33章:MongoDB-索引--GridFS存储文件的更多相关文章
- MongoDB学习笔记(二)--Capped集合 && GridFS存储文件
Capped集合 Capped集合的大小是固定的,如果空间都被用完了,新添加的对象 ...
- MongoDB GridFS 存储文件
使用MongoDB的GridFS方式. CSDN: https://blog.csdn.net/qq_32657967/article/details/81534259官方文档: https://do ...
- 学习MongoDB 八: MongoDB索引(索引限制条件)(二)
一.简介 我们上一篇介绍了索引基本操作,通过db.collection.createIndex(keys, options)语法创建索引,我们继续介绍地理空间索引.索引的限制,使我们在MongoDB时 ...
- MongoDB的Spring-data-mongodb集成(Win10 x64) 第一章 - MongoDB安装与简单命令
这是MongoDB系列的第一章,作者将持续更新. 1.下载 https://www.mongodb.com/download-center#community 2.安装与配置 有关安装的任何困难请点击 ...
- [DataBase] MongoDB (7) MongoDB 索引
MongoDB 索引 1. 建立索引 唯一索引db.passport.ensureIndex( {"loginname": 1}, {"unique": tru ...
- MongoDB索引介绍
MongoDB中的索引其实类似于关系型数据库,都是为了提高查询和排序的效率的,并且实现原理也基本一致.由于集合中的键(字段)可以是普通数据类型,也可以是子文档.MongoDB可以在各种类型的键上创建索 ...
- MongoDB(索引及C#如何操作MongoDB)(转载)
MongoDB(索引及C如何操作MongoDB) 索引总概况 db.test.ensureIndex({"username":1})//创建索引 db.test.ensureInd ...
- MongoDB索引(一)
原文地址 一.介绍 我们已经很清楚索引会提高查询效率.如果没有索引,MongoDB必须对全部集合进行扫描,即,扫描集合中每条文档以选择那些符合查询条件的文档.对查询来说如果存在合适的索引,则Mongo ...
- MongoDB 索引篇
MongoDB 索引篇 索引的简介 索引可以加快查询的速度,但是过多的索引或者规范不好的索引也会影响到查询的速度.且添加索引之后的对文档的删除,修改会比以前速度慢.因为在进行修改的时候会对索引进行更新 ...
- 【RL-TCPnet网络教程】第33章 SMTP简单邮件传输协议基础知识
第33章 SMTP简单邮件传输协议基础知识 本章节为大家讲解SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)的基础知识,方便后面章节的实战操作. (本 ...
随机推荐
- ADB文件及文件夹操作
1.创建文件夹: adb shell mkdir /data/local/tmp/local多级的一次只能创建一级adb shell mkdir /data/local/tmp/local/tmp 2 ...
- Linux背背背(2)
目录: 1.简单命令 2.目录切换命令 3.扩展命令 简单命令 ls 语法1:#ls [路径] 表示列出指定路径下的文件夹和文件的名字,如果路径没有指定则列出当前路径下的 语法2 ...
- sqlserver数据库镜像运行模式
运行模式: 从大层面来说,SQL Server镜像只有两种模式:高安全模式和高性能模式.两种模式的主要区别在于在事务提交后的操作.可以从图1-1中查看运行模式. 在高性能模式下,主体服务器不需要等待镜 ...
- java中Arrays的用法
Arrays是针对数组的工具类,可以进行 排序,查找,复制填充等功能. 大大提高了开发人员的工作效率. 一 数组复制 与使用System.arraycopy进行数组复制类似的, Arrays提供了一个 ...
- redis集群相关
1.主从数据库配置 为master数据库添加slave数据库只需要在从数据库的配置中添加配置: slaveof 主数据库地址 主数据库端口 当然,也可以通过命令: redis-server --por ...
- 最适合入门的Laravel中级教程(四)前端开发
Laravel 使用 npm 安装前端依赖: npm 是一个类似 composer 的工具: 用于管理前端的各种依赖包: 在使用之前需要先安装 node : Windows 下可以在官网下载安装: h ...
- MySQL 8.0 新增SQL语法对窗口函数和CTE的支持
尝试了一下MySQL 8.0的部分新特性. 如果用过MSSQL或者是Oracle中的窗口函数(Oracle中叫分析函数), 然后再使用MySQL 8.0之前的时候,就知道需要在使用窗口函数处理逻辑的痛 ...
- ArcGIS自定义工具箱-字段分割
ArcGIS自定义工具箱-字段分割 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:用指定分割符分割字段, 用例:湖南省长沙市=>湖南/长沙 数据源: 使 ...
- html语义化练习易牛课堂代码
html <body> <header> <!-- 导航 --> <nav> <a href=" ...
- oracle数据库名称已被一现有约束条件占用
使用oracle数据库出现名称已被一现有约束条件占用的错误,我的原因是在同一个库中有一个表使用了外键FK_SNO,自己新建的一个表中也使用了外键FK_SNO,导致出现了错误. 这时改变一下外键FK_S ...