【MongoDB学习笔记29】MongoDB的GridFS存储深入

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:

GridFS的原理是将大文件分割为多个比较大的块,将每个块作为独立的文档进行存储。

(1)GridFS中的块会被存贮到专用的集合中,默认为fs.chunks;

(2)除了将文件的每一个块单独存储外,还需要将每个文件块的元信息放入一个文档存储,并将这些文档默认集中在fs.files集合中;

例如将foo.txt文档加入到数据库foo中:

1
2
3
4
5
[root@localhost ~] # echo "hello world" >foo.txt   
[root@localhost ~] # mongofiles -d foo put foo.txt    
connected to: 127.0.0.1    
added  file : { _id: ObjectId( '54b3d62983047a88669bc529' ), filename:  "foo.txt" , chunkSize: 261120, uploadDate: new Date(1421071914003), md5:  "6f5902ac237024bdd0c176cb93063dc4" , length: 12 }    
done !

查看相应的集合:

1
2
3
4
5
> show collections  
fs.chunks  
fs.files  
system.indexes  
>

查看这个文档:

1
2
3
4
5
6
7
8
9
10
11
[root@localhost ~] # mongo foo   
MongoDB shell version: 2.6.6    
connecting to: foo    
> db.fs.chunks.findOne()    
{    
     "_id"  : ObjectId( "54b51dc15caeb0e1a8722e8d" ),    
     "files_id"  : ObjectId( "54b51dc0c3ab6ae7c08f6028" ),    
     "n"  : 0,    
     "data"  : BinData(0, "aGVsbG8gd29ybGQK" )    
}    
>

files_id:块所属文件的元信息;

n: 块在文件中的相对位置;

data:块所包含的二进制数据;

1
2
3
4
5
6
7
8
9
10
> db.fs.files.findOne()   
{    
     "_id"  : ObjectId( "54b51dc0c3ab6ae7c08f6028" ),    
     "filename"  "foo.txt" ,    
     "chunkSize"  : 261120,    
     "uploadDate"  : ISODate( "2015-01-13T13:29:37.525Z" ),    
     "md5"  "6f5902ac237024bdd0c176cb93063dc4" ,    
     "length"  : 12    
}    
>

_id:文件的唯一ID,跟文件的每个块中的files_id的值是一致的;

length:文件所包含的字节数;

chunkSize:组成文件的每个块的大小,单位是字节;

updateDate:文件被上传到GridFS的时间;

MD5:文件的MD5值,由服务器计算所得;




本文转自 bannerpei 51CTO博客,原文链接:http://blog.51cto.com/281816327/1603698,如需转载请自行联系原作者

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
存储 NoSQL 分布式数据库
Hbase+ES和MongoDB存储大数据的选用
Hbase+ES和MongoDB存储大数据的选用
413 0
|
2月前
|
存储 缓存 NoSQL
MongoDB内部的存储原理
这篇文章详细介绍了MongoDB的内部存储原理,包括存储引擎WiredTiger的架构、btree与b+tree的比较、cache机制、page结构、写操作流程、checkpoint和WAL日志,以及分布式存储的架构。
83 1
MongoDB内部的存储原理
|
1月前
|
存储 NoSQL MongoDB
数据的存储--MongoDB文档存储(二)
数据的存储--MongoDB文档存储(二)
|
16天前
|
存储 NoSQL 关系型数据库
【赵渝强老师】MongoDB的存储结构
MongoDB 是一个可移植的 NoSQL 数据库,支持跨平台运行。其逻辑存储结构包括数据库、集合和文档,而物理存储结构则由命名空间文件、数据文件和日志文件组成。视频讲解和示意图进一步解释了这些概念。
|
24天前
|
存储 NoSQL MongoDB
MongoDB GridFS
10月更文挑战第24天
25 1
|
1月前
|
存储 NoSQL 关系型数据库
数据的存储--MongoDB文档存储(一)
数据的存储--MongoDB文档存储(一)
|
5月前
|
存储 JSON NoSQL
深入解析MongoDB的存储原理
深入解析MongoDB的存储原理
深入解析MongoDB的存储原理
|
6月前
|
存储 NoSQL MongoDB
【MongoDB 专栏】MongoDB 的 GridFS:存储与检索大文件
【5月更文挑战第10天】MongoDB's GridFS 是用于大规模数据和大文件存储的解决方案,它将文件分割成小块存储在不同文档中,以提升管理效率和避免性能问题。文件上传时记录元数据,通过唯一标识符实现快速检索。GridFS 提供高效存储、便捷检索和扩展性,适用于大文件管理。然而,应注意文件大小限制、数据一致性和性能优化。通过案例分析,展示了 GridFS 在实际应用中的优势和适用场景,为构建强大应用提供支持。
356 1
【MongoDB 专栏】MongoDB 的 GridFS:存储与检索大文件
|
6月前
|
存储 JSON NoSQL
MongoDB的文档存储格式BSON和JSON的区别
MongoDB的文档存储格式BSON和JSON的区别
|
6月前
|
存储 NoSQL 关系型数据库
基于MongoDB实现聊天记录的存储
基于MongoDB实现聊天记录的存储
基于MongoDB实现聊天记录的存储
下一篇
无影云桌面