我们的应用程序将通过HTTP提供大量小的缩略图大小的图像(大小约为6-12KB)。我被要求调查是否使用NoSQL数据存储是一种可行的数据存储解决方案。理想情况下,我们希望我们的数据存储是容错和分布式的。
在NoSQL商店中存储blob是一个好主意,哪一个对它有好处?此外,NoSQL是我们问题的一个很好的解决方案,还是我们可以更好地将图像存储在文件系统中并直接从Web服务器提供服务(另外,CDN目前不是我们的选择)?
答案 0 :(得分:9)
Mongo DB应该适合你。我还没有将它用于blob,但是这里有一个很好的FLOSS Weekly podcast interview with Michael Dirolf来自Mongo DB团队,他在这里解决了这个用例。
答案 1 :(得分:9)
是否将图像存储在数据库或文件系统中有时是“圣战”类型的辩论之一;每一方都认为他们的做事方式是正确的。一般来说:
要存储在DB中:
存储在文件系统上:
我倾向于站在文件系统的一边,因为它的扩展性要好得多。但是根据项目的大小,任何一种选择都可能正常。使用NoSQL,差异甚至更不明显。
答案 2 :(得分:3)
CDN将是明显的选择。从那以后,我会说你最好的选择是容错和负载均衡是你自己的私人数据中心(无论对你来说意味着什么)在2个或更多负载平衡器之后,比如F5。这将是您最简单的管理系统,您可以获得与硬件预算允许的一样多的容错能力。您不需要任何新的软件专业知识,只需要XCOPY。
对于真正的容错,你需要地理分散,否则你就会受到反铲的任何人的影响。
(Gravatars?)
答案 3 :(得分:3)
我正在寻找一个类似的个人项目解决方案并遇到了Riak,对我而言,这似乎是解决这个问题的一个惊人的解决方案。基本上,它将每个文件的指定数量的副本分发到网络中的服务器。它的设计使得服务器的进出没有什么大不了的。离开的服务器上的所有副本都分布在其他副本中。
通过正确的配置,Riak可以处理整个数据中心崩溃。
哦,它有商业支持。
答案 4 :(得分:2)
如果您在Python环境中,请考虑y_serial模块:http://yserial.sourceforge.net/
在不到10分钟的时间内,您将能够以压缩形式存储和访问您的图像(实际上是任意Python对象,包括网页); NoSQL的。