如果我想存储很多文件复制数据库,那么NoSql数据库对于这类工作最好?
我正在测试MongoDB和CouchDB,这些数据库非常好用且易于使用 . 如果有可能我会使用其中一个来存储文件 . 现在我看到了Mongo和Couch之间的区别,但我无法解释哪个更适合存储文件 . 如果我在谈论存储文件,我的意思是10-50MB的文件,也可能是50-500MB的文件 - 可能还有很多更新 .
我在这里找到一张漂亮的 table :
仍然不确定哪些属性最适合文件存储和复制 . 但也许我应该选择另一个NoSql DB?
3 回答
那张 table 已经过时了:
主 - 从复制已被弃用,有利于初学者的副本集,并且一致性也是错误的 . 您将需要完全重新阅读MongoDB文档中的此部分 .
Map / Reduce只是JavaScript,没有其他的 .
我不知道该表的附件意味着什么,但GridFS是内置于驱动程序中的存储标准,有助于更轻松地在MongoDB中存储大文件 . 通过此方法也支持元数据 .
MongoDB是2.2版本,所以它之前提到的任何版本现在已经过时(即分片和单服务器持久性) .
我没有使用CouchDBs界面存储文件的个人经验,但如果两者之间几乎没有任何差异,我也不会感到惊讶 . 我认为这部分对我们来说太主观了,你需要更好地选择哪一套 .
实际上,可以构建MongoDB集群多区域(S3存储桶不能并且不能在没有工作的情况下复制),并通过MongoDB将世界特定部分中访问最多的文件复制到这些集群 .
我的意思是我有时发现的主要结果是MongoDB可以像S3和Cloudfront一样放在一起,这很好,因为你有冗余存储和分发数据的能力 .
然而,说S3是非常有效的选项,我会认真尝试,你可能不会在内容网络中寻找与我相同的东西 .
文件的数据库存储没有它们的严重缺点,但速度不应该是一个巨大的问题,因为你应该从没有Cloudfront前端S3获得相同的速度,因为你应该从MongoDB获得真正的(记住S3是一个冗余存储网络,而不是CDN) .
如果您要使用S3,那么您将在数据库中存储一行指向该文件并包含有关它的元数据 .
Dustin Sallings(Couchbase创始人之一,spymemcached的创建者和memcached的核心贡献者)和使用Couchbase和Go的Marty Schoch有一个名为CBFS的项目 .
它是一个具有冗余和复制功能的 Infinite Node 文件存储 . 基本上你自己的S3支持许多不同的硬件和大小 . 它使用REST HTTP PUT / GET / DELETE等,因此非常易于使用 . 非常快,非常强大 .
CBFS on Github :https://github.com/couchbaselabs/cbfs
Protocol :https://github.com/couchbaselabs/cbfs/wiki/Protocol
Blog Post :http://dustin.github.com/2012/09/27/cbfs.html
Diverse Hardware :https://plus.google.com/105229686595945792364/posts/9joBgjEt5PB
Other Cool Visuals :
http://www.youtube.com/watch?v=GiFMVfrNma8
http://www.youtube.com/watch?v=033iKVvrmcQ
如果您有任何疑问,请与我联系,我可以帮您联系 .
您是否考虑过将Amazon S3作为选项?它高度可用,经过验证,具有冗余存储等....
CouchDB虽然我个人非常喜欢它,因为它与node.js配合得很好,但是如果你不想浪费太多的磁盘空间,你需要定期压缩它 . 在您的情况下,如果您要对相同的文档进行大量更新,那可能是个问题 .
我不能真正在MongoDB上提交,因为我没有使用它,但是,如果文件存储是你主要关心的话,那么看看S3和类似的,因为它们完全专注于filestorage .
您可以将存储元数据的两个组合在NoSql或Sql数据存储区中,将实际文件组合在一个单独的文件存储区中,但保持这两个存储区同步和复制可能会很棘手 .