我是Rails的新手,我想创建一个上传文件的网站:音乐,视频,图片,文字。什么是存储文件的更好方法?我读过不同的方法:数据库,作为文件,亚马逊S3?
每个大约1 kb到20Mb的文件会很多。
谢谢!
答案 0 :(得分:3)
我认为没有正确的答案。我使用heroku,所以我唯一的选择是Amazon S3(第一年有免费配额),我对此非常满意。我使用carrierwave gem来上传文件,它非常易于使用。我真的更喜欢Paperclip。
如果您的主机提供了大量空间和带宽,那么您可以尝试一下。
但对于数据库,我真的不喜欢将文件存储在其中的想法。
<强>更新强>
从表中读取文件名应该比读取文件本身更快。数据库越大,备份所需的时间就越长。例如,如果以heroku为例,共享数据库只能获得20gb。如果您要在那里存储10-20mb文件,那就不多了。如果将文件存储在数据库中,则可能更容易将项目移动到另一个主机。但是如果您使用外部服务(例如S3),那么对您来说没有任何区别。
答案 1 :(得分:3)
将数据存储在数据库中本身并不错。这取决于数据库的种类。
由于贝斯内克解释的原因,将文件存储在关系数据库中并不是一种好的做法。
但是还有其他类型的数据库专门用于以非关系方式存储任何类型的数据,例如任何类型的文件。 Dhruva的答案强调,MongoDB相当不错,它支持使用GridFS存储文件非常棒。
GridFS非常好,例如它只能传输文件的一部分,对视频非常有用。
在您的特定情况下 - 许多类型的许多小文件 - GridFS是一个真正的选择。我使用Heroku&amp; mongohq.com和他们的工作就像一个魅力。
答案 2 :(得分:2)
Heroku上的Amazon S3集成相对容易设置并且可以使用回形针gem。 Heroku有一些关于如何启动和运行的文档。
查看他们的文档,看看这是否是您要找的东西。
答案 3 :(得分:2)
我建议你也查看&amp;考虑MongoDB GridFS - http://www.mongodb.org/display/DOCS/GridFS+Specification。我对GridFS的经验很好。我不能给你一个与其他选项的比较分析,但我想知道相同的。
答案 4 :(得分:0)
我建议您使用amazon s3来存储您的文件。这是最好的。