我想开发一个多媒体系统,系统需要保存数百万的视频和图片,所以我想选择一个分布式存储子系统。谁能给我一些建议?谢谢!
5 回答
我想“数百万视频和图像”的最佳选择是内容分发/交付网络 (CDN):
CDN 是一种服务器设置,可以更快、更有效地交付媒体文件。它通过在全球网络的不同存在点 (POP) 上维护您的媒体副本来实现这一点,以确保快速的客户访问和尽可能快的交付
如果您将使用 CDN,您无需关心许多问题(分发、快速访问)。与 CDN 的集成也应该非常简单。
Yo 给了我们(几乎)零关于您的要求的信息。例如:
- 你想要原子交易吗?
- 系统读写重吗?
- 您需要快速查询还是想要批量处理数据集?
- 视频有多大?
- 您想在本地(在 LAN 上)分发数据还是跨越多个数据中心/大陆?
如果我们不知道它需要支持什么,我们应该如何选择正确的工具?
在不了解系统的情况下,我建议对视频和图像使用某种 FS 复制,然后将与项目关联的元数据存储在 MongoDB、MySQL Master-Master 或 MySQL Cluster 中。
@yi_H
您可以将写入配置为首先复制到多个节点,然后再返回客户端。现在是否需要这当然取决于用例。并且肯定会影响性能。因此,如果您正在实现一个写入繁重的分析数据库,它将对写入吞吐量产生重大影响。
您就缺乏要求等问题提出的所有其他观点,我赞同这一点。
在 nosql 数据库中复制带有元数据的文件系统是一种非常常见的做事方式。@你为什么考虑这种方法?
你看过Mongodb gridfs吗?我从未使用过它,但我会看看它是否能给你任何想法。
分布与什么有关?
如果您正在谈论要分发的复制:
MongoDb 只限于主从复制,所以只有一个节点能够读/写,这给真正的分布式系统留下了单点故障。CouchDB 能够进行点对点复制。
在这里找到一个很好的比较,这里也与 hbase 进行了比较。
使用 CouchDB,您还必须知道您将使用 http 与数据库通信并构建 web 服务。
问候,克里斯
另一种方法是使用 MongoDB 的 GridFS,作为(非常容易管理的)冗余和分布式文件系统。
有人会说它的读取速度很慢,(这主要是因为它的设计性质)但这并不一定意味着它对你的整个系统来说是一个破坏者,因为如果你以后需要性能,你可以始终将 Varnish 或 Squid 放在文件系统层的前面。
据我所知,Squid 还支持所有不太热的文件的磁盘缓存。
资料来源: