我正在构建一个需要存储一些资源的网络应用,包括但不限于文章,图片和视频。我的问题是视频(mp4 / ogg)如何存储在Web服务器上?就像裸文件或关系或nosql db中的二进制文件一样?
答案 0 :(得分:3)
BLOB数据的问题几乎总是归结为“不要BLOB数据”。很少有时候为数据编写数据库连接器然后将其保存在磁盘上更有意义。
总体趋势是使用已建立的服务,该服务采用良好的设计模式,例如Paperclip for ruby,并根据您的需求进行定制。
使用外部存储服务也是一个好主意,例如Amazon S3将以每千兆字节为单位存储便士的所有数据,并且它们可以很好地完成它。
如果你决定自己编写一个内部处理数据的服务器,我可以推荐digital ocean吗?我对我在那里设置的SSD服务器非常满意(速度非常快)。
对于视频,您几乎肯定需要一个能够流式传输文件的网络服务器。我认为Nginx有这个功能。
答案 1 :(得分:2)
我认为您需要详细说明您希望为此应用实现的用例。只有这样你才能得到准确的答案。
为了帮助解决这个问题,以下是您需要思考的一些问题:
1-您说您想要存储视频,除存储外还有哪些要求?
2-您是否希望例如为这些视频提供第三方用户访问权限并使用关键字进行搜索?
3-如果是,有哪些关于视频的信息?这些文件的预期平均大小是多少?
许多数据库引擎提供存储大型二进制文件的可能性,但这会对性能产生影响。这就是为什么大多数存储系统处理大文件,将文件本身存储在磁盘上以及任何相关元数据(文件名,最后更新,关联关键字等)都存储在数据库中的原因。这使得可扩展的系统。
我会编辑这个答案,如果你发现它有用并且还有其他相关问题。
答案 2 :(得分:0)
如果没有AWS S3,很难设置无限制的文件存储。 S3是便宜且可扩展的解决方案,但在没有适当缓存的情况下使用起来很昂贵,因此我们使用Nginx S3代理,效果很好:https://stackoverflow.com/a/44749584/290338