mongo girdfss最小存储空间可设置为多少

&nbsp>&nbsp
&nbsp>&nbsp
&nbsp>&nbsp
Java上传文件到MongoDB GirdFS
摘要:上传有两种方式,一种是使用UploadFromStream,另外一种是OpenUploadStream方式,这里使用的是第二种方式:publicObjectIdsave(){GridFSBucketgfsbk=GridFSBuckets.create(db,&user_photo&);byte[]data=&DatatouploadintoGridFS&.getBytes(StandardCharsets.UTF_8);GridFSUp
上传有两种方式,一种是使用UploadFromStream,另外一种是OpenUploadStream方式,这里使用的是第二种方式:
public ObjectId save(){
GridFSBucket gfsbk = GridFSBuckets.create(db, &user_photo&);
byte[] data = &Data to upload into GridFS&.getBytes(StandardCharsets.UTF_8);
GridFSUploadStream uploadStream = gfsbk .openUploadStream(&user_09734&);
uploadStream.write(data);
ObjectId id = uploadStream.getFileId();
uploadStream.close();
解析: 1. GridFSBucket gfsbk = GridFSBuckets.create(db, “user_photo”);
创建一个容器,传入一个`MongoDatabase`类实例db,和容器名称&user_photo&作为参数
2. GridFSUploadStream uploadStream = gfsbk .openUploadStream(“user_09734”);
打开上传流,传入一个String参数作为GirdFS文件的文件名
3. ObjectId id = uploadStream.getFileId();
得到刚刚上传的文件的id
Mongo Java驱动GirdFS上传参考资料 下面是我编写的上传帮助类:
package com.huanle.utils.import java.io.ByteArrayOutputSimport java.io.IOEimport org.bson.types.ObjectId;import org.springframework.beans.factory.annotation.Aimport org.springframework.stereotype.Cimport com.huanle.utils.model.FileEimport com.mongodb.Bimport com.mongodb.client.MongoDimport com.mongodb.client.gridfs.GridFSBimport com.mongodb.client.gridfs.GridFSBimport com.mongodb.client.gridfs.GridFSUploadSimport com.mongodb.client.gridfs.model.GridFSFimport com.mongodb.gridfs.GridFS;@Componentpublic class GirdFSHelper {
private GridFSB
private MongoD
@Autowired
public GirdFSHelper(MongoDBHelper mongoManager){
this.db = mongoManager.getDB(&huanle&);
/**保存文件到GirdFS,通过openUploadStream方式
* @param bucket 容器名称
* @param file 文件实体
* @return 返回FileEntity
public FileEntity save(String bucket,FileEntity file){
gfsbk = GridFSBuckets.create(db, bucket);
GridFSUploadStream uploadStream = gfsbk.openUploadStream(file.getFileName());
uploadStream.write(file.getContent());
ObjectId id = uploadStream.getFileId();
uploadStream.flush();
uploadStream.close();
FileEntity filter = new FileEntity();
filter.setId(id);
filter = find(bucket,filter);
public FileEntity download(String bucket,FileEntity filter) throws IOException{
filter = find(bucket,filter);
if(filter==null){
ByteArrayOutputStream out = new ByteArrayOutputStream();
gfsbk = GridFSBuckets.create(db, bucket);
gfsbk.downloadToStream(filter.getId(), out);
filter.setContent(out.toByteArray());
out.close();
public FileEntity find(String bucket,FileEntity filter){
gfsbk = GridFSBuckets.create(db, bucket);
System.out.println(filter.toBson());
GridFSFile result = gfsbk.find(filter.toBson()).first();
if(result==null){
filter.setId(result.getObjectId());
filter.setSize(result.getLength());
filter.setFileName(result.getFilename());
filter.setUploadTime(result.getUploadDate());
}}package com.huanle.utils.import java.util.Dimport javax.validation.constraints.Pimport org.bson.Dimport org.bson.types.ObjectId;import org.hibernate.validator.constraints.Rimport com.huanle.utils.annotation.FileCimport com.huanle.utils.annotation.FileNimport com.huanle.utils.annotation.PlainS/**文件辅助实体类 * @author luchu * */public class FileEntity {
public static String ID=&_id&,FILE_NAME=&fileName&,SIZE=&size&,UPLOAD_TIME=&uploadTime&,CONTENT=&content&;
private ObjectI
@PlainString
private String fileN
@Range(max=)
private Date uploadT
@FileContent
private byte[]
public Document toBson(){
Document doc = new Document();
if(this.id!=null){
doc.append(ID, this.id);
if(this.fileName!=null){
doc.append(FILE_NAME, this.fileName);
if(this.size!=0){
doc.append(SIZE, this.size);
if(this.uploadTime!=null){
doc.append(UPLOAD_TIME, this.uploadTime);
以上是的内容,更多
的内容,请您使用右上方搜索功能获取相关信息。
若你要投稿、删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内给你回复。
云服务器 ECS
可弹性伸缩、安全稳定、简单易用
&40.8元/月起
预测未发生的攻击
&24元/月起
为您提供0门槛上云实践机会
你可能还喜欢
你可能感兴趣
阿里云教程中心为您免费提供
Java上传文件到MongoDB GirdFS相关信息,包括
的信息,所有Java上传文件到MongoDB GirdFS相关内容均不代表阿里云的意见!投稿删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内答复
售前咨询热线
支持与服务
资源和社区
关注阿里云
International2722人阅读
MongoDB(4)
上传有两种方式,一种是使用UploadFromStream,另外一种是OpenUploadStream方式,这里使用的是第二种方式:
public ObjectId save(){
GridFSBucket gfsbk = GridFSBuckets.create(db, "user_photo");
byte[] data = "Data to upload into GridFS".getBytes(StandardCharsets.UTF_8);
GridFSUploadStream uploadStream = gfsbk .openUploadStream("user_09734");
uploadStream.write(data);
ObjectId id = uploadStream.getFileId();
uploadStream.close();
GridFSBucket gfsbk = GridFSBuckets.create(db, “user_photo”);
创建一个容器,传入一个`MongoDatabase`类实例db,和容器名称"user_photo"作为参数
GridFSUploadStream uploadStream = gfsbk .openUploadStream(“user_09734”);
打开上传流,传入一个String参数作为GirdFS文件的文件名
ObjectId id = uploadStream.getFileId();
得到刚刚上传的文件的id
下面是我编写的上传帮助类:
package com.huanle.utils.db
import java.io.ByteArrayOutputStream
import java.io.IOException
import org.bson.types.ObjectId
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Component
import com.huanle.utils.model.FileEntity
import com.mongodb.Block
import com.mongodb.client.MongoDatabase
import com.mongodb.client.gridfs.GridFSBucket
import com.mongodb.client.gridfs.GridFSBuckets
import com.mongodb.client.gridfs.GridFSUploadStream
import com.mongodb.client.gridfs.model.GridFSFile
import com.mongodb.gridfs.GridFS
@Component
public class GirdFSHelper {
private GridFSBucket gfsbk
private MongoDatabase db
@Autowired
public GirdFSHelper(MongoDBHelper mongoManager){
this.db = mongoManager.getDB("huanle")
public FileEntity save(String bucket,FileEntity file){
gfsbk = GridFSBuckets.create(db, bucket)
GridFSUploadStream uploadStream = gfsbk.openUploadStream(file.getFileName())
uploadStream.write(file.getContent())
ObjectId id = uploadStream.getFileId()
uploadStream.flush()
uploadStream.close()
FileEntity filter = new FileEntity()
filter.setId(id)
filter = find(bucket,filter)
return filter
public FileEntity download(String bucket,FileEntity filter) throws IOException{
filter = find(bucket,filter)
if(filter==null){
return null
ByteArrayOutputStream out = new ByteArrayOutputStream()
gfsbk = GridFSBuckets.create(db, bucket)
gfsbk.downloadToStream(filter.getId(), out)
filter.setContent(out.toByteArray())
out.close()
return filter
public FileEntity find(String bucket,FileEntity filter){
gfsbk = GridFSBuckets.create(db, bucket)
System.out.println(filter.toBson())
GridFSFile result = gfsbk.find(filter.toBson()).first()
if(result==null){
return null
filter.setId(result.getObjectId())
filter.setSize(result.getLength())
filter.setFileName(result.getFilename())
filter.setUploadTime(result.getUploadDate())
return filter
package com.huanle.utils.model
import java.util.Date
import javax.validation.constraints.Past
import org.bson.Document
import org.bson.types.ObjectId
import org.hibernate.validator.constraints.Range
import com.huanle.utils.annotation.FileContent
import com.huanle.utils.annotation.FileName
import com.huanle.utils.annotation.PlainString
public class FileEntity {
public static String ID="_id",FILE_NAME="fileName",SIZE="size",UPLOAD_TIME="uploadTime",CONTENT="content"
private ObjectId id
@PlainString
private String fileName
@Range(max=)
private long size
private Date uploadTime
@FileContent
private byte[] content
public Document toBson(){
Document doc = new Document()
if(this.id!=null){
doc.append(ID, this.id)
if(this.fileName!=null){
doc.append(FILE_NAME, this.fileName)
if(this.size!=0){
doc.append(SIZE, this.size)
if(this.uploadTime!=null){
doc.append(UPLOAD_TIME, this.uploadTime)
return doc
文章:20篇
阅读:56390请问girdfs做小文件的分布存储系统的效率怎么样?在girdfs之上有没有在做一些业务层面上的封装?可不可以分享一下具体的方案?万分感谢! - 知乎2被浏览939分享邀请回答liut.cc/blog/2010/12/about-imsto_my-first-open-source-project.html)我是在rails里做图片存储,使用了carrierwave这个插件,里面封装了GridFS。另外,需要一个Nginx模块(我用的是Nginx)去解析url然后定位到GridFS里的文件,如果是通过在Rails里添加一个中间件的话,速度则很不理想,慢100倍左右。大概就是这样,我们可以继续讨论。 0添加评论分享收藏感谢收起博客分类:
常见的分布式文件系统有,GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS、FastDFS等。各自适用于不同的领域。它们都不是系统级的分布式文件系统,而是应用级的分布式文件存储服务。
Google学术论文,这是众多分布式文件系统的起源
==================================
Google File System(大规模分散文件系统)
MapReduce (大规模分散FrameWork)
BigTable(大规模分散数据库)
Chubby(分散锁服务)
一般你搜索Google_三大论文中文版(Bigtable、 GFS、 Google MapReduce)就有了。
做个中文版下载源:http://dl.iteye.com/topics/download/38db9a29-3e17-3dce-bc93-df
做个原版地址链接:
http://labs.google.com/papers/gfs.html
http://labs.google.com/papers/bigtable.html
http://labs.google.com/papers/mapreduce.html
GFS(Google File System)
--------------------------------------
Google公司为了满足本公司需求而开发的基于Linux的专有分布式文件系统。。尽管Google公布了该系统的一些技术细节,但Google并没有将该系统的软件部分作为开源软件发布。
下面分布式文件系统都是类 GFS的产品。
-------------------------------------- Hadoop 实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。 Hadoop是Apache Lucene创始人Doug Cutting开发的使用广泛的文本搜索库。它起源于Apache Nutch,后者是一个开源的网络搜索引擎,本身也是Luene项目的一部分。Aapche Hadoop架构是MapReduce算法的一种开源应用,是Google开创其帝国的重要基石。
---------------------------------------
是加州大学圣克鲁兹分校的Sage weil攻读博士时开发的分布式文件系统。并使用Ceph完成了他的论文。
说 ceph 性能最高,C++编写的代码,支持Fuse,并且没有单点故障依赖, 于是下载安装, 由于 ceph 使用 btrfs 文件系统, 而btrfs 文件系统需要 Linux 2.6.34 以上的内核才支持。
可是ceph太不成熟了,它基于的btrfs本身就不成熟,它的官方网站上也明确指出不要把ceph用在生产环境中。
---------------------------------------
Lustre是一个大规模的、安全可靠的,具备高可用性的集群文件系统,它是由SUN公司开发和维护的。
该项目主要的目的就是开发下一代的集群文件系统,可以支持超过10000个节点,数以PB的数据量存储系统。
目前Lustre已经运用在一些领域,例如HP SFS产品等。
适合存储小文件、图片的分布文件系统研究
====================================
(我写的)
(我写的)
---------------------------------------
由memcahed的开发公司danga一款perl开发的产品,目前国内使用mogielFS的有图片托管网站yupoo等。
MogileFS是一套高效的文件自动备份组件,由Six Apart开发,广泛应用在包括LiveJournal等web2.0站点上。
MogileFS由3个部分组成:
  第1个部分是server端,包括mogilefsd和mogstored两个程序。前者即是 mogilefsd的tracker,它将一些全局信息保存在数据库里,例如站点domain,class,host等。后者即是存储节点(store node),它其实是个HTTP Daemon,默认侦听在7500端口,接受客户端的文件备份请求。在安装完后,要运行mogadm工具将所有的store node注册到mogilefsd的数据库里,mogilefsd会对这些节点进行管理和监控。
  第2个部分是utils(工具集),主要是MogileFS的一些管理工具,例如mogadm等。
  第3个部分是客户端API,目前只有Perl API(MogileFS.pm)、PHP,用这个模块可以编写客户端程序,实现文件的备份管理功能。
---------------------------------------
持FUSE,相对比较轻量级,对master服务器有单点依赖,用perl编写,性能相对较差,国内用的人比较多
---------------------------------------
是一款类似Google FS的开源分布式文件系统,是纯C语言开发的。
FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
FastDfs google Code
http://code.google.com/p/fastdfs/
分布式文件系统FastDFS架构剖析
http://www.programmer.com.cn/4380/
-------------------------------------
TFS(Taobao !FileSystem)是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,主要针对海量的非结构化数据,它构筑在普通的Linux机器 集群上,可为外部提供高可靠和高并发的存储访问。TFS为淘宝提供海量小文件存储,通常文件大小不超过1M,满足了淘宝对小文件存储的需求,被广泛地应用 在淘宝各项应用中。它采用了HA架构和平滑扩容,保证了整个文件系统的可用性和扩展性。同时扁平化的数据组织结构,可将文件名映射到文件的物理地址,简化 了文件的访问流程,一定程度上为TFS提供了良好的读写性能。
GridFS文件系统
------------------------------------- MongoDB是一种知名的NoSql数据库,GridFS是MongoDB的一个内置功能,它提供一组文件操作的API以利用MongoDB存储文件,GridFS的基本原理是将文件保存在两个Collection中,一个保存文件索引,一个保存文件内容,文件内容按一定大小分成若干块,每一块存在一个Document中,这种方法不仅提供了文件存储,还提供了对文件相关的一些附加属性(比如MD5值,文件名等等)的存储。文件在GridFS中会按4MB为单位进行分块存储。 MongoDB GridFS 数据读取效率 benchmark http://blog.nosqlfan.com/html/730.html
nginx + gridfs 实现图片的分布式存储
安装(一年后出问题了)
http://www.cnblogs.com/zhangmiao-chp/archive//2038285.html
基于MongoDB GridFS的图片存储
http://liut.cc/blog/2010/12/about-imsto_my-first-open-source-project.html
nginx+mongodb-gridfs+squid
http://1008305.blog.51cto.com/340
下载次数: 1406
浏览 97328
[/img][/url]
浏览: 5872983 次
来自: 北京
谢谢,学到很多
非常感谢非常感谢
推荐用StratoIO打印控件,功能如下:1、Html友好的打 ...
heipacker 写道这篇是抄的?不知道
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'

我要回帖

更多关于 dfs存储 的文章

 

随机推荐