我开发了一个新网站,我想使用GridFS作为所有用户上传的存储,因为与普通的文件系统存储相比,它提供了很多优势.
由nginx提供服务的GridFS基准测试表明,它不如nginx提供的普通文件系统快.
有人在那里,谁已经在生产环境中使用GridFS,或者将它用于新项目?
我有一个视频作为网页的背景,我试图让它循环.这是代码:
<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的一个问题.我不知道.
无论如何,来源就在这里.您可以提供的任何见解表示赞赏.
我正在开发一个以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) 我目前正在寻找一个好的分布式文件系统.
这应该:
以下是我认为最有希望的四位候选人:
文件系统主要用于媒体文件(图像和音频).有非常小和中等大小的文件(1 KB - 10 MB).文件数量应该在几百万左右.
是否有关于性能,CPU负载,内存消耗和可扩展性的基准测试?您使用这些或其他分布式文件系统的经历是什么?
Meteor很棒,但它缺乏传统文件上传的原生支持.有几种方法可以处理文件上传:
从客户端,可以使用以下方式发送数据:
在服务器中,文件可以保存到:
这些方法的优缺点是什么以及如何最好地实现它们?我知道还有其他选项,例如保存到第三方网站并获取网址.
我正在尝试使用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上 …
我运行一个运行在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来代替图像本身.思考/建议吗?
最好的,谢谢你的任何回应,
萨米
我正在努力寻找为大文件创建可扩展存储的最佳解决方案.文件大小可以从1-2兆字节到500-600千兆字节不等.
我找到了一些关于Hadoop和它的HDFS的信息,但它看起来有点复杂,因为我不需要任何Map/Reduce作业和许多其他功能.现在我正在考虑使用MongoDB和它的GridFS作为文件存储解决方案.
现在的问题是:
谢谢.
我正在记录GridFS以及在不同机器之间对其进行分片的可能性.
在这里阅读文档,建议的分片键是chunks.files_id.此键将链接到文件集合的_id,因此此_id是增量的.我保存在网格中的每个新文件都将有一个新的增量_id.
在O'Reilly"Scaling MongoDB"一书中,不鼓励使用增量分片键来避免HotSpots(最后一个分片将接收所有的写入和读取).
您对分割GridFS集合的建议是什么?
有没有人遇到HotSpot问题?
谢谢.
我是Node.js的新手.任何人都可以提供一个如何使用GridFS来存储和检索使用Node.js和Mongoose的二进制数据(如图像)的示例吗?我需要直接访问GridFS吗?
gridfs ×10
mongodb ×8
node.js ×2
.net ×1
bigdata ×1
c# ×1
ceph ×1
django ×1
express ×1
file-upload ×1
filesystems ×1
glusterfs ×1
html5-video ×1
meteor ×1
mime-types ×1
mongoengine ×1
mongoose ×1
nginx ×1
rack ×1
sharding ×1
storage ×1