在大型服务器上存储大量图像

时间:2012-03-25 02:01:01

标签: database image cassandra store large-data

我想知道在google,facebook等多个服务器上存储大量图像的最佳解决方案。

似乎存储在文件系统中比在数据库中更好但是如何使用像cassandra这样的noSQL DB。

Google / Facebooke是否在多个服务器中存储相同的图像以实现负载平衡。 它是如何工作的?什么是最好的解决方案?

很多

3 个答案:

答案 0 :(得分:4)

你正在采取的方法没有错。如上所述,有一些警告,然而,确实存在可能性,许多人和公司成功地在Apache Cassandra中存储文件。

  • zjffdu/cassandra-fs是我要研究的第一个解决方案。现在,这是2年前的最后一次开发,所以我第一次开箱即用时会有点谨慎。 Apache Cassandra现在版本为1.0.x,途中有1.1.x. 2年前,那版本是0.6.x吗?很多事都发生了变化。在24个月内有所改善。
  • semantico/cassandra-fs一个叉子...最后一次触及7个月前
  • favoritas37/cassandra-fs另一个分叉...最后一次触及3个月前,表明与Cassandra 1.0.5分支的兼容性

这背后的原理是获取一个文件,将其分成一组块并将这些块作为列连续存储。检索时,拉出每一列,重新组合文件并瞧。

Cassandra FAQ: large file and blog storage

  

...大约64Mb或更小的文件可以很容易地存储在数据库中,而不会将它们分成更小的块......

Lucene indexes in Cassandra

  

...其文件被分解为块(其大小有上限),其中每个块(请参阅FileBlock)存储为相应行中列的值...

您将在Cassandra邮件列表和IRC频道上获得更多积极反馈。

最后,这是从2009年开始,由Facebook的人们撰写,这应该可以帮助回答更多基本问题:Cassandra - A Decentralized Structured Storage System

答案 1 :(得分:1)

注意,我知道这是一个老问题,我只是想平衡一些关于成本的误解,因为我现在正在做这个测试。

与DavidB认为的不同,它不需要花费数百万美元 - 即使你要运行专用的托管硬件,你也很容易在几千/月(BTDT,我的一个客户正在运行一个8节点集群) $ 800 /月)。也就是说,这是你想要避免的维护问题,而EC2上的Cassandra更容易处理。

您可以轻松地在EC2上以低于1000美元/月的速度运行大量生产云,并且您可以以低于100美元/月的价格购买R& D云(我上个月花费大约52美元购买10台机器测试群集)。我强烈建议使用TurnKey Linux来管理&配置您的R& D服务器场,因为他们的工具将允许您在几分钟内将实例从您的桌面迁移到几乎任何虚拟主机平台(反之亦然)。此外,他们与EC2完全融为一体。

对于非常严重的流量,Pintrest曾表示他们花费15至50美元/小时,具体取决于服务器负载,自动扩展以满足流量需求,详见http://www.theregister.co.uk/2012/04/30/inside_pinterest_virtual_data_center/

实际成本是在分布式Cassandra实例的设置和管理中。幸运的是,NetFlix刚刚发布了大量的管理工具。您可以在这里找到它们:https://github.com/netflix - 还有大量关于NetFlix使用AWS的有趣视频,特别是从Cassandra到S3的移动内容 - 请在此处查看他们的博客http://techblog.netflix.com/2012/12/videos-of-netflix-talks-at-aws-reinvent.html

答案 2 :(得分:-1)

如果您想要存储在“云”环境中,最好使用具有Google App Engine或Amazon Web Services等资源的云解决方案。如果这是问题,你将不能自己设置。管理它们将花费数百万美元和资源。是的,谷歌和Facebook使用数千台服务器在“云”中分发他们的数据。