MongoC++ GridFS 操作
发布网友
发布时间:2022-04-07 22:48
我来回答
共2个回答
懂视网
时间:2022-04-08 03:09
搜索了N多文档,基本上都一样,期间遇到很多问题;
下面是整理的一份搭建文档:
摘要 nginx-gridfs是一个nginx的扩展模块,用于支持直接访问MongoDB的GridFS文件系统上的文件并提供 HTTP 访问。
一、安装mongodb
MongoDB在linux下是无需安装的,从官网上下载下安装包后解压,直接执行mongod,就可以启动MongoDB服务器,当然mongod还有很多的启动选择项,运行mongod --help就可以查看所有的选择项。
注:很多人搭建完后,发现访问不了图片和文件,跟Mongodb的配置有很多关系;附上我成功配置的mongodb,直接解压可用;点击下载mongodb
例如:(下载我上面的包,解压,下面命令直接启动服务,亲测可用)
./mongod -port 10001 --dbpath ../data/ --logpath ../log/mongodb.log --fork
停止MongoDB
千万要强调的是千万不要使用kill -9去关闭mongod!这样数据库会不理一切直接杀死该进程,会使得数据文件损坏。
稳妥的方法是使用kill -2 pid去关闭mongod,也就是当mongod进程接受到关闭指令后会等待当前运行操作或文件分配等操作完毕后,关闭所有打开的连接,并将缓存的数据刷新到磁盘后才正式关闭。
最稳妥的方式是使用shutdown命令来结束
> use admin
switched to db admin
> db.shutdownServer();
二、安装nginx及nginx-gridfs
依赖库、工具
1
2
|
# yum -y install pcre-devel openssl-devel zlib-devel
# yum -y install gcc gcc-c++
|
如上几个依赖库,如果自动安装不成功,可手动安装;
Pcre下载https://sourceforge.net/projects/pcre/files/pcre/
下载nginx-gridfs源码
1
2
3
4
5
|
# git clone https://github.com/mdirolf/nginx-gridfs.git
# cd nginx-gridfs
# git checkout v0.8
# git submodule init
# git submodule update
|
如上操作方法,可本地GIT下来再上传到服务器,也可直接在服务器GIT
下载nginx源码,编译安装。
1
2
3
4
5
|
# wget http://nginx.org/download/nginx-1.4.7.tar.gz
# tar zxvf nginx-1.4.7.tar.gz
# cd nginx-1.4.7
# ./configure --prefix=/usr/local/nginx --with-openssl=/usr/include/openssl --add-module=../nginx-gridfs/
# make -j8 && make install -j8
|
修改/usr/local/nginx/conf/nginx.conf配置文件。
注:这里说明下,nginx有两个nginx.conf的配置文件,勿配错;
1
2
3
4
5
6
7
|
location /girdfstest/ {
gridfs pics
field=_id
type=objectid;
mongo 127.0.0.1:10001;
}
|
关于这里的配置,简单说明下:
gridfstest:访问地址
pics:数据库
mongo 127.0.0.1:10001 #mongo的服务器地址及端口
--------------------------------------
启动nginx服务
1
|
# /usr/local/nginx/sbin/nginx
|
重新加载 /usr/local/nginx/sbin/nginx -s reload
3. 测试
上传一个文件
root@d1:~#./mongofiles put 1.jpg -db pics -t jpg
列出库中文件:
root@d1:~# mongofiles list -db pics
具体mongofiles使用可百度搜索下
或者直接./mongofiles --help查看帮助
浏览器访问:http://192.168.4.156/girdfstest/1.jpg
如果可以访问图片,则配置成功;
注意事项:
安装过程中可能会遇到各种各样的错误,具体看环境不同,应对处理;
主要注意点
1. Nginx启动参数,需关联nginx-gridfs目录
2. Mongodb尽量不用默认端口27017,改用其他端口(安装过程遇到默认端口访问不了,不知道什么原因)
3. Nginx.conf配置,参数上面文档说明
4. 如果配置不成功,访问不了图片;多看看nginx的错误日志,会有很多收获
安装过程中,如果还有其他问题,可以看看我前面写的几篇文档;
用nginx-gridFS读取MongoDB的图片及文件(为什么你老是配不成功?)
标签:mongodb nginx+gridfs nginx读取mongodb图片
热心网友
时间:2022-04-08 00:17
GridFS是一种在MongoDB中存储大二进制文件的机制。使用GridFS存文件有如下几个原因:
利用Grid可以简化需求。要是已经用了MongoDB,GridFS就可以不需要使用独立文件存储架构。
GridFS会直接利用业已建立的复制或分片机制,所以对于文件存储来说故障恢复和扩展都很容易。
GridFS可以避免用于存储用户上传内容的文件系统出现的某些问题。例如,GridFS在同一个目录下放置大量的文件是没有任何问题的。
GridFS不产生磁盘碎片,因为MongoDB分配数据文件空间时以2GB为一块。
使用场景:如果你的系统有如下情景:
1) 有大量的上传图片(用户上传或者系统本身的文件发布等)
2) 文件的量级处于飞速增长,有可能打到单机操作系统自己的文件系统的查询性能瓶颈,甚至超过单机硬盘的扩容范围.
3) 文件的备份(不适用gridfs这种三方也可以做,但是不尽方便),文件系统访问的故障转移和修复..
4) 文件的索引,存储除文件本身以外还需要关联更多的元数据信息(比如,不仅仅存储文件,还要保存一些文件的发布式作者/发布时间/文件tag属性等等自定义信息)并且需要索引的...
5) 基于4),对文件的分类模糊,如果采用操作系统的文件系统,文件夹分类关系混乱或者无法分类时..
6) 当前系统是基于web的,对图片的访问根据url了规则路由的..(普通文件系统也可以)
7) 文件尺寸较小,而且众多,且文件有可能被迁移/删除等..
在Mongodb中以GridFSB方式存放文件有两种方式:
1、命令行方式mongofiles 2、客户端驱动编程
1、命令行方式mongofiles
mongofiles命令行下向Mongodb数据库中插入文件数据。
mongofiles -host 127.0.0.1:27017 -d mydb put 文件名
如何理解大文件存储规范gridfs
由于文件被分割存储,读取整个文件可能需要更多的数据库操作,这可能会影响性能;其次,对于非常小的文件,使用GridFS可能不是最优选择,因为每个文件都需要额外的元数据存储;最后,在设计和实施GridFS存储方案时,需要考虑文件的安全性、备份和恢复策略以及文件访问权限等问题。
Load Port、SMIF
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层...
mongodb gridfs性能
1) 普通插入性能 (插入的数据每条大约在1KB左右)2) 批量插入性能 (使用的是官方C#客户端的InsertBatch),这个测的是批量插入性能能有多少提高 。3) 安全插入功能 (确保插入成功,使用的是SafeMode.True开关),这个测的是安全插入性能会差多少。4) 查询一个索引后的数字列,返回10条记录(也...
gridfsdbfile转为file 怎么获得byte
Mongodb使用GridFS存储文件 先来看一个简单的例子:public class Mongofs { private static final String USER = "rechard";private static final String PASS = "root";public static void main(String[] args) throws Exception { Mongo m = new Mongo("localhost");DB db = m.getDB("newdb"...
MongoDB管理与开发精要目录
第12章 分片与扩展 12.1 Sharding基础与构建 12.3 Sharding维护与管理 12.4 Replica Sets + Sharding案例 12.6 章节小结 开发篇 第14章 C#开发接口 14.1 快速入门与基础操作 14.4 高级查询与GridFS操作 14.6 章节小结 第15章 Java开发接口 15.1 快速入门与基础操...
10个顶级Mongodb GUI工具,以图形方式管理数据库
支持iOS和Android平台。使用Node.js,Express和Bootstrap3编写的基于Web的MongoDB管理界面。它允许连接多个数据库;查看/添加/删除数据库,集合和文档;预览音频/视频/图像资产;GridFS支持 - 添加/获取/删除难以置信的大文件;在文档中使用BSON数据类型,Mobile / Responsive - Bootstrap以及更多功能。
bugumongo主要功能
对于文件管理,bugumongo拥有功能强大的GridFS文件系统,支持文件夹功能,能够方便地进行文件的重命名、移动和排序。上传、读取文件的操作也相当简单,方便开发者管理大量的文件资源。更值得一提的是,bugumongo还支持图片处理功能,包括图片加水印和图片压缩,这在处理用户上传的图片时尤为实用。同时,它允许通过...
Mongodb在存储文件的时候,会不会造成一个本来300M的视频只存进去了100...
gridfs是由驱动完成的,不是mongodb自己完成的,要看你用的驱动的具体情况。我没有看过mongodb所有的驱动,但是正常来讲,驱动的gridfs应该是让你一部分一部分往gridfs的文件里写数据的,所以对gridfs来说,它应该不知道你这个视频有300,不管什么原因,你要是存到100就不继续往里存了,对gridfs来...
分片技术
分片策略分为垂直和水平两种方式,其中MongoDB作为一款杰出的文档数据库,凭借其易操作性和功能多样性(如索引支持、复杂查询、MapReduce和GridFS等),在云计算环境中如鱼得水,允许在服务器端执行脚本,并兼容多种编程语言。MongoDB的安装便捷,适应快速变化的云环境,它的应用范围广泛,旨在解决存储瓶颈...
什么叫嵌入式软件工程师需要哪些专业知识认证
5Gb空数据库大约占192Mb采用GridFS存储大数据或元数据(不是真正的文件系统)最佳应用场景:适用于需要动态查询支持;需要使用索引而不是map/rece功能;需要对大数据库有性能要求;需要使用CouchDB但因为数据改变太频繁而占满内存的应用程序 例如:你本打算采用MySQL或PostgreSQL,但因为它们本身自带的预定义栏...
非关系型数据库都有哪些
人们真的很享受分片、高级文本搜索、gridFS和map-reduce功能。惊人的性能和新特性使这个NoSQL数据库在我们的列表中名列第一。特点:提供高性能;自动分片;运行在多个服务器上;支持主从复制;数据以JSON样式文档的形式存储;索引文档中的任何字段;由于数据被放置在碎片中,所以它具有自动负载平衡配置;支持...