我想开发一个多媒体系统,系统需要保存数百万个视频和图像,所以我想选择一个分布式存储子系统。谁能给我一些建议?谢谢!
答案 0 :(得分:4)
我认为'百万视频和图片'的最佳选择是内容分发/投放网络(CDN):
CDN是允许的服务器设置 更快,更有效的交付 你的媒体文件。它通过这样做 保持媒体的副本 不同的存在点(POPs) 沿着全球网络确保快速 客户端访问和最快的交付 可能的
如果您将使用CDN,则无需关心许多问题(分发,快速访问)。与CDN的整合也应该非常简单。
答案 1 :(得分:2)
@yi_H
您可以将写入配置为在返回到客户端之前首先复制到多个节点。现在是否需要它当然是用例。并且肯定会影响性能。因此,如果您正在实施一个写入繁重的分析数据库,它将对写入吞吐量产生重大影响。
关于缺乏要求等问题,你提出的所有其他观点,我的第二点。
在nosql数据库中复制带有元数据的文件系统是一种非常常见的做事方式。 @why你有没有考虑过这种方法?
你看过Mongodb gridfs吗?我从来没有使用它,但我会看看它是否能给你任何想法。
答案 2 :(得分:1)
哟给了我们(接近)关于你的要求是什么的零信息。例如:
如果我们不知道需要支持什么,我们应该如何选择合适的工具?
在不了解系统的情况下,我建议对视频和图像使用某种FS复制,然后在MongoDB,MySQL Master-Master或MySQL Cluster中存储与项目相关的元数据。
答案 3 :(得分:0)
分布式涉及什么?
如果您正在谈论要分发的复制:
MongoDb仅限于主从复制,因此只有一个节点能够读/写,这使得真正分布式系统只有一个故障点。 CouchDB能够进行点对点复制。
找到一个非常好的比较here和here also compared with hbase。
使用CouchDB,您还必须意识到您要将http与数据库进行对话并构建Web服务。
此致 克里斯
答案 4 :(得分:0)
另一种方法是使用MongoDB的GridFS,作为( 非常 易于管理的)冗余和分布式文件系统。
有些人会说它读取速度很慢,(and it is,主要是因为它的设计性质),但这并不意味着它对整个系统来说是一个破坏者,因为如果你需要性能稍后,您可以随时将Varnish或Squid放在文件系统层之前。
据我所知,Squid还支持所有不太热门的文件的磁盘缓存。
来源: