标签: gridfs

GridFS是否足够快速可靠地进行生产?

我开发了一个新网站,我想使用GridFS作为所有用户上传的存储,因为与普通的文件系统存储相比,它提供了很多优势.

由nginx提供服务的GridFS基准测试表明,它不如nginx提供的普通文件系统快.

使用nginx进行基准测试

有人在那里,谁已经在生产环境中使用GridFS,或者将它用于新项目?

nginx mongodb gridfs

85
推荐指数
4
解决办法
4万
查看次数

HTML5视频不会循环播放

我有一个视频作为网页的背景,我试图让它循环.这是代码:

<video autoplay='true' loop='true' muted='true'>
  <source src='/admin/wallpapers/linked/4ebc66e899727777b400003c' type='video/mp4'></source>
</video>
Run Code Online (Sandbox Code Playgroud)

即使我已经告诉视频循环,但事实并非如此.我也试图让它循环使用该onended属性(根据这个Mozilla支持线程,我也尝试了一点jQuery).到目前为止,没有任何工作.这是Chrome或我的代码的问题吗?

编辑:

我检查了网络事件和HEAD的工作副本(http://fhsclock-labs.heroku.com/no-violence)与我正在努力工作的应用程序.不同之处在于工作副本是从Heroku上的静态资产(通过Varnish,显然)提供视频,而我的服务来自GridFS(MongoDB).

Chrome的Inspector的"网络"标签显示,在我的应用程序中,视频会被请求三次.一次状态为"待定",第二次"取消",最后一次为200 OK.工作副本仅显示两个请求,一个是状态待定,另一个是206部分内容.但是,在视频播放一次后,该请求将更改为"已取消",并再次请求该视频.在我的应用程序中,这不会发生.

至于Type,在我的应用程序中,两个是"未定义"而另一个是"video/mp4"(应该是它).在工作应用程序中,所有请求都是"video/mp4".

另外,我Resource interpreted as Other but transferred with MIME type undefined.在控制台收到警告.

我不太确定从哪里开始.我相信这个问题是服务器端的,因为服务文件就像静态资产一样正常.可能是服务器没有发送正确的内容类型.这可能是GridFS的一个问题.我不知道.

无论如何,来源就在这里.您可以提供的任何见解表示赞赏.

rack google-chrome gridfs html5-video mime-types

66
推荐指数
4
解决办法
7万
查看次数

使用C#的MongoDB GridFs,如何存储图像等文件?

我正在开发一个以mongodb作为我的后端的网络应用程序.我想让用户将图片上传到他们的个人资料,如链接个人资料照片.我正在使用带有MVC2的aspx页面,我读到GridFs库用于存储大型文件类型作为二进制文件.我到处寻找线索是如何完成的,但是mongodb没有任何关于C#api或GridFs C#的文档.我感到困惑和困惑,真的可以使用另一组大脑.

任何人都知道如何实际实现一个文件上传控制器,用于存储用户上传到mongodb集合中的图像?太感谢了!

我尝试过这种变化无济于事.

Database db = mongo.getDB("Blog");
GridFile file = new GridFile(db);
file.Create("image.jpg");

var images = db.GetCollection("images");
images.Insert(file.ToDocument());
Run Code Online (Sandbox Code Playgroud)

.net c# mongodb gridfs mongodb-.net-driver

62
推荐指数
3
解决办法
5万
查看次数

分布式文件系统:GridFS与GlusterFS对比Ceph与HekaFS基准

我目前正在寻找一个好的分布式文件系统.

这应该:

  • 是开源的
  • 可水平扩展(复制和分片)
  • 没有单一的失败点
  • 占地面积相对较小

以下是我认为最有希望的四位候选人:

文件系统主要用于媒体文件(图像和音频).有非常小和中等大小的文件(1 KB - 10 MB).文件数量应该在几百万左右.

是否有关于性能,CPU负载,内存消耗可扩展性的基准测试?您使用这些或其他分布式文件系统的经历是什么?

filesystems gridfs ceph glusterfs

41
推荐指数
2
解决办法
4万
查看次数

Meteor:将文件从客户端上传到Mongo集合vs文件系统与GridFS

Meteor很棒,但它缺乏传统文件上传的原生支持.有几种方法可以处理文件上传:

从客户端,可以使用以下方式发送数据:

  • Meteor.call('saveFile',data)或collection.insert({file:data})
  • 'POST'表单或HTTP.call('POST')

在服务器中,文件可以保存到:

  • collection.insert({file:data})的mongodb文件集合
  • 文件系统在/ path/to/dir中
  • mongodb GridFS

这些方法的优缺点是什么以及如何最好地实现它们?我知道还有其他选项,例如保存到第三方网站并获取网址.

file-upload mongodb gridfs meteor

38
推荐指数
1
解决办法
1万
查看次数

具有可插入MongoDB存储问题的Django

我正在尝试使用django和mongoengine来提供只有GridFS的存储后端.我还有一个MySQL数据库.

当我从django管理员中删除时,我遇到了一个奇怪的(对我而言)错误,我想知道我是否做错了什么.

我的代码看起来像这样:

# settings.py
from mongoengine import connect
connect("mongo_storage")

# models.py
from mongoengine.django.storage import GridFSStorage
class MyFile(models.Model):
    name = models.CharField(max_length=50)
    content = models.FileField(upload_to="appsfiles", storage=GridFSStorage())
    creation_time = models.DateTimeField(auto_now_add=True)
    last_update_time = models.DateTimeField(auto_now=True)
Run Code Online (Sandbox Code Playgroud)

我能够很好地上传文件,但是当我删除它们时,似乎有些东西会破坏,mongo数据库似乎处于不可行状态,直到我手动删除所有FileDocument.objects.发生这种情况时,我无法上传文件或从django界面删除它们.

从堆栈跟踪我有:

/home/projects/vector/src/mongoengine/django/storage.py in _get_doc_with_name
        doc = [d for d in docs if getattr(d, self.field).name == name] ...
? Local vars
Variable    Value
_[1]    
[]
d   

docs    
Error in formatting: cannot set options after executing query
name    
u'testfile.pdf'
self    

/home/projects/vector/src/mongoengine/fields.py in __getattr__
        raise AttributeError 
Run Code Online (Sandbox Code Playgroud)

我是否错误地使用此功能?

更新:

感谢@ zeekay的回答,我能够得到一个工作的gridfs存储插件.我最终根本没有使用mongoengine.我把我的改编解决方案放在github上 …

django mongodb gridfs mongoengine

28
推荐指数
1
解决办法
2085
查看次数

使用MongoDB在NodeJS中使用GridFS存储一些小的(1MB以下)文件

我运行一个运行在nodeJS + mongoDB后端的网站.现在,我正在实现一个系统来存储需要在数据库中的一些图标(小图像文件).

根据我的理解,不使用GridFS更有意义,因为它似乎是针对大文件或大量文件而定制的.由于我需要保存的每个文件都在BSON最大文件大小之下,我应该能够将它们直接保存到常规文档中.

我有两个问题:

1)我的推理是否正确?将图像文件保存在常规mongo集合中是否可以,而不是使用GridFS?在这里我有什么不考虑的吗?

2)如果我的思维过程合理,我该怎么做呢?我可以做以下事情:

//assume 'things' is a mongoDB collection created properly using node-mongodb-driver

fs.readFile(pathToIconImage, function(err,image){
  things.insert({'image':image}, function(err,doc){
    if(err) console.log('you have an error! ' + err);
  });
});
Run Code Online (Sandbox Code Playgroud)

我猜这可能有更好的方法,因为mongoDB使用BSON,在这里我试图在将数据发送到数据库之前用JSON保存文件.我也不知道这段代码是否有效(没试过).

更新 - 新问题

如果我在集合中有一个文件,其中保存了三条信息:1)名称,2)日期,3)图像文件(上面的图标),我想按顺序将此文档发送给客户显示所有三个,这可能吗?如果没有,我想我需要使用GridFS并保存fileID来代替图像本身.思考/建议吗?

最好的,谢谢你的任何回应,
萨米

mongodb node.js gridfs

22
推荐指数
2
解决办法
2万
查看次数

MongoDB作为文件存储

我正在努力寻找为大文件创建可扩展存储的最佳解决方案.文件大小可以从1-2兆字节到500-600千兆字节不等.

我找到了一些关于Hadoop和它的HDFS的信息,但它看起来有点复杂,因为我不需要任何Map/Reduce作业和许多其他功能.现在我正在考虑使用MongoDB和它的GridFS作为文件存储解决方案.

现在的问题是:

  1. 当我尝试同时写几个文件时,gridfs会发生什么.读/写操作会有锁定吗?(我将仅将其用作文件存储)
  2. 来自gridfs的文件是否会在ram中缓存,以及它将如何影响读写性能?
  3. 也许有一些其他解决方案可以更有效地解决我的问题?

谢谢.

storage bigdata mongodb gridfs

22
推荐指数
2
解决办法
4万
查看次数

在MongoDB上对GridFS进行分片

我正在记录GridFS以及在不同机器之间对其进行分片的可能性.

这里阅读文档,建议的分片键是chunks.files_id.此键将链接到文件集合的_id,因此此_id是增量的.我保存在网格中的每个新文件都将有一个新的增量_id.

在O'Reilly"Scaling MongoDB"一书中,不鼓励使用增量分片键来避免HotSpots(最后一个分片将接收所有的写入和读取).

您对分割GridFS集合的建议是什么?
有没有人遇到HotSpot问题?

谢谢.

sharding mongodb gridfs

20
推荐指数
2
解决办法
5992
查看次数

如何使用GridFS使用Node.js和Mongoose存储图像

我是Node.js的新手.任何人都可以提供一个如何使用GridFS来存储和检索使用Node.js和Mongoose的二进制数据(如图像)的示例吗?我需要直接访问GridFS吗?

mongoose mongodb node.js gridfs express

19
推荐指数
3
解决办法
2万
查看次数