Image 在NoSQL存储中存储图像

Image 在NoSQL存储中存储图像,image,nosql,Image,Nosql,我们的应用程序将通过HTTP提供大量小的缩略图大小的图像(大小约为6-12KB)。我被要求调查使用NoSQL数据存储是否是数据存储的可行解决方案。理想情况下,我们希望我们的数据存储是容错和分布式的 在NoSQL商店中存储blob是个好主意吗?哪一个对它有好处?另外,NoSQL是解决我们问题的一个好办法,还是将图像存储在文件系统中并直接从web服务器提供更好的服务(顺便说一句,CDN目前不是我们的选择)?应该适合您。我还没有将它用于blob,但这里有一个来自Mongo DB团队的很好的FLOSS周

我们的应用程序将通过HTTP提供大量小的缩略图大小的图像(大小约为6-12KB)。我被要求调查使用NoSQL数据存储是否是数据存储的可行解决方案。理想情况下,我们希望我们的数据存储是容错和分布式的


在NoSQL商店中存储blob是个好主意吗?哪一个对它有好处?另外,NoSQL是解决我们问题的一个好办法,还是将图像存储在文件系统中并直接从web服务器提供更好的服务(顺便说一句,CDN目前不是我们的选择)?

应该适合您。我还没有将它用于blob,但这里有一个来自Mongo DB团队的很好的FLOSS周刊,他在这里介绍了这个用例。

是否将图像存储在DB或文件系统中有时是一个“圣战”类型的争论;每一方都认为他们做事的方式是唯一正确的方式。一般而言:

要存储在数据库中,请执行以下操作:

  • 更易于管理备份/同时在一个位置复制所有内容
  • 有助于数据的一致性和完整性。可以将BLOB字段设置为不允许空值,但不能阻止删除外部文件。(尽管这不适用于NoSQL,因为没有传统的约束)
要存储在文件系统上,请执行以下操作:

  • 文件系统是为文件服务而设计的。让它做它的工作
  • 数据库通常是应用程序中的瓶颈。不管你能卸下什么负荷,都会更好
  • 更容易在CDN上服务(您提到的这一点在您的情况下不适用)

我倾向于站在文件系统一边,因为它的伸缩性更好。但是,根据项目的大小,这两种选择都可能很好。使用NoSQL,差异就更不明显了。

好的CDN将是明显的选择。既然这样,我想说,容错和负载平衡的最佳选择是在两个或更多负载平衡器(如F5)后面拥有自己的私有数据中心(无论对您意味着什么)。这将是你最简单的管理系统,你可以得到尽可能多的容错硬件预算允许。您不需要任何新的软件专业知识,只需要XCOPY

要实现真正的容错,您将需要地理分布,或者您将受制于任何使用反铲的人


(GravaTARS:)/P>< P>如果你在Python环境中,考虑YyStand模块:


在不到10分钟的时间内,您将能够以压缩形式存储和访问图像(事实上,任何任意Python对象,包括网页);NoSQL。

我正在为一个个人项目寻找一个类似的解决方案,我发现,这对我来说似乎是解决这个问题的一个惊人的解决方案。基本上,它将每个文件的指定数量的副本分发到网络中的服务器。它的设计使得服务器的进出没有什么大不了的。服务器上留下的所有副本都分布在其他副本之间

通过正确的配置,Riak可以处理整个数据中心崩溃


哦,它还提供了商业支持。

CDN加上NoSQL db作为源代码是一个很好的组合。我已经在MongoDB(及其GridFS模块)上成功地看到过几次了,问题是如何在分布式键值存储中存储blob。文件系统不是容错的或分布式的,因此无法进行真正的比较。根据文件系统的不同,它既可以是容错的,也可以是分布式的—请参阅MogileFS、Hadoop DFS、GlusterFS等内容。这些都不完全是文件系统。您可以跳过播客的前13分钟:)