我们的应用程序将通过HTTP提供大量小尺寸缩略图(大小约6-12KB)。我被要求调查使用NoSQL数据存储是否是数据存储的可行解决方案。理想情况下,我们希望我们的数据存储是错误的,并且是分布式的。将图像存储在NoSQL商店
将blob存储在NoSQL存储中是一个好主意,哪一个对它有好处?另外,NoSQL对我们的问题来说是一个很好的解决方案,或者我们可以更好地将图像存储在文件系统中,并直接从Web服务器提供服务(作为CDN,目前我们不能选择)?
我们的应用程序将通过HTTP提供大量小尺寸缩略图(大小约6-12KB)。我被要求调查使用NoSQL数据存储是否是数据存储的可行解决方案。理想情况下,我们希望我们的数据存储是错误的,并且是分布式的。将图像存储在NoSQL商店
将blob存储在NoSQL存储中是一个好主意,哪一个对它有好处?另外,NoSQL对我们的问题来说是一个很好的解决方案,或者我们可以更好地将图像存储在文件系统中,并直接从Web服务器提供服务(作为CDN,目前我们不能选择)?
Mongo DB应该适合你。我还没有将它用于blob,但这里是一个来自Mongo DB团队的漂亮的FLOSS Weekly podcast interview with Michael Dirolf,他在这里讨论了这个用例。
是否将图像存储在数据库或文件系统中有时是“圣战”类型的辩论之一;每一方都感到他们做事的方式是一个正确的方式。一般来说:
要存储在数据库中:
要存储在文件系统中:
我倾向于在文件系统方面下来,因为它扩展得更好。但取决于你的项目的规模,任何选择都可能正常工作。对于NoSQL,差异更不明显。
问题是关于在分布式键值存储中存储blob。文件系统不是容错或分布式的,所以没有真正的比较。 –
根据文件系统的不同,它既可容错又可分布 - 请参阅MogileFS,Hadoop DFS和GlusterFS等内容。 –
这些都不是文件系统。 –
那么CDN将是明显的选择。既然这样,我会说你最好的选择是容错和负载平衡,这将是你自己的私人数据中心(无论对你来说意味着什么)在2个或更多的负载平衡器(比如F5)后面。这将是您最简单的管理系统,您可以获得尽可能多的硬件预算允许的容错。您不需要任何新的软件专业知识,只需XCOPY。
对于真正的容错性,您将需要地理分散,或者您需要使用反铲挖掘机。
(Gravatars?)
CDN加上一个NoSQL db作为原点是一个很好的组合。我已经成功地看到了MongoDB(和它的GridFS模块)几次完成。 –
如果你是一个Python环境,考虑y_serial模块:
在10分钟内,你将能够存储和访问您的图片(事实上,任何任意的Python对象,包括网页) - 压缩形式; NoSQL的。
我正在寻找一个类似的个人项目解决方案,并且遇到了Riak,对我来说,这对于这个问题来说似乎是一个惊人的解决方案。基本上,它将每个文件的指定数量的副本分发给网络中的服务器。它的设计使得服务器来来去去并不是什么大不了的事情。离开的服务器上的所有副本分布在其他服务器中。
使用正确的配置,Riak可以处理整个数据中心崩溃。
哦,它有商业支持。
谢谢,我会检查出 –
你可以跳过该播客的前13分钟:) –