我们的应用程序将通过HTTP提供大量小的缩略图大小的图像(大小约为6-12KB).我被要求调查是否使用NoSQL数据存储是一种可行的数据存储解决方案.理想情况下,我们希望我们的数据存储是容错和分布式的.
在NoSQL商店中存储blob是一个好主意,哪一个对它有好处?此外,NoSQL是我们问题的一个很好的解决方案,还是我们可以更好地将图像存储在文件系统中并直接从Web服务器提供服务(另外,CDN目前不是我们的选择)?
是否将图像存储在数据库或文件系统中有时是"圣战"类型的辩论之一; 每一方都认为他们的做事方式是正确的.一般来说:
要存储在DB中:
更容易管理一次备份/复制所有内容.
帮助您保持数据的一致性和完整性.您可以将BLOB字段设置为禁止NULL,但是您无法阻止删除外部文件.(虽然这不适用于NoSQL,因为没有传统的约束).
要存储在文件系统上:
文件系统旨在提供文件.让它做它的工作.
数据库通常是应用程序中的瓶颈.无论你有什么负担,它都会越好.
更容易在CDN上服务(您提到的不适用于您的情况).
我倾向于站在文件系统的一边,因为它扩展得更好.但是根据项目的大小,任何一种选择都可能正常.使用NoSQL,差异甚至更不明显.
Mongo DB应该适合你.我还没有用它来制作blob,但这里有一个很好的FLOSS Weekly 播客采访来自Mongo DB团队的Michael Dirolf,他在这里采访了这个用例.