首页 文章

MongoDB / CouchDB用于存储文件复制?

提问于
浏览
3

如果我想存储很多文件复制数据库,那么NoSql数据库对于这类工作最好?

我正在测试MongoDB和CouchDB,这些数据库非常好用且易于使用 . 如果有可能我会使用其中一个来存储文件 . 现在我看到了Mongo和Couch之间的区别,但我无法解释哪个更适合存储文件 . 如果我在谈论存储文件,我的意思是10-50MB的文件,也可能是50-500MB的文件 - 可能还有很多更新 .

我在这里找到一张漂亮的 table :

enter image description here

http://weblogs.asp.net/britchie/archive/2010/08/17/document-databases-compared-mongodb-couchdb-and-ravendb.aspx

仍然不确定哪些属性最适合文件存储和复制 . 但也许我应该选择另一个NoSql DB?

3 回答

  • 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,那么您将在数据库中存储一行指向该文件并包含有关它的元数据 .

  • 5

    Dustin Sallings(Couchbase创始人之一,spymemcached的创建者和memcached的核心贡献者)和使用Couchbase和Go的Marty Schoch有一个名为CBFS的项目 .

    它是一个具有冗余和复制功能的 Infinite Node 文件存储 . 基本上你自己的S3支持许多不同的硬件和大小 . 它使用REST HTTP PUT / GET / DELETE等,因此非常易于使用 . 非常快,非常强大 .

    CBFS on Githubhttps://github.com/couchbaselabs/cbfs

    Protocolhttps://github.com/couchbaselabs/cbfs/wiki/Protocol

    Blog Posthttp://dustin.github.com/2012/09/27/cbfs.html

    Diverse Hardwarehttps://plus.google.com/105229686595945792364/posts/9joBgjEt5PB

    Other Cool Visuals

    http://www.youtube.com/watch?v=GiFMVfrNma8

    http://www.youtube.com/watch?v=033iKVvrmcQ

    如果您有任何疑问,请与我联系,我可以帮您联系 .

  • 2

    您是否考虑过将Amazon S3作为选项?它高度可用,经过验证,具有冗余存储等....

    CouchDB虽然我个人非常喜欢它,因为它与node.js配合得很好,但是如果你不想浪费太多的磁盘空间,你需要定期压缩它 . 在您的情况下,如果您要对相同的文档进行大量更新,那可能是个问题 .

    我不能真正在MongoDB上提交,因为我没有使用它,但是,如果文件存储是你主要关心的话,那么看看S3和类似的,因为它们完全专注于filestorage .

    您可以将存储元数据的两个组合在NoSql或Sql数据存储区中,将实际文件组合在一个单独的文件存储区中,但保持这两个存储区同步和复制可能会很棘手 .

相关问题