Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NoSQL-MongoDB vs CouchDB_Mongodb_Couchdb_Nosql - Fatal编程技术网

NoSQL-MongoDB vs CouchDB

NoSQL-MongoDB vs CouchDB,mongodb,couchdb,nosql,Mongodb,Couchdb,Nosql,谈到NoSQL运动,我是一个彻头彻尾的傻瓜。我听说过很多关于MongoDB和CouchDB的事。我知道两者之间有区别。您建议学习哪一项作为进入NoSQL世界的第一步?请参阅以下链接 更新:我发现了很棒的数据库 MongoDB(3.2) 书面:C++ 要点:JSON文档存储 许可证:AGPL(驱动程序:Apache) 协议:自定义,二进制(BSON) 主/从复制(使用副本集进行自动故障切换) 内置切分 查询是javascript表达式 在服务器端运行任意javascript函数 具有地

谈到NoSQL运动,我是一个彻头彻尾的傻瓜。我听说过很多关于MongoDB和CouchDB的事。我知道两者之间有区别。您建议学习哪一项作为进入NoSQL世界的第一步?

请参阅以下链接

更新:我发现了很棒的数据库

MongoDB(3.2)

  • 书面:C++
  • 要点:JSON文档存储
  • 许可证:AGPL(驱动程序:Apache)
  • 协议:自定义,二进制(BSON)
  • 主/从复制(使用副本集进行自动故障切换)
  • 内置切分
  • 查询是javascript表达式
  • 在服务器端运行任意javascript函数
  • 具有地理空间索引和查询
  • 具有不同性能特征的多个存储引擎
  • 性能优于功能
  • 文件验证
  • 日记
  • 强大的聚合框架
  • 在32位系统上,限制为~2.5Gb
  • 文本搜索集成
  • GridFS存储大数据+元数据(实际上不是FS)
  • 数据中心感知
最佳使用方法:如果需要动态查询。如果您更喜欢定义索引,而不是映射/减少函数。如果你需要在一个大的数据库上有好的性能。如果您想要CouchDB,但您的数据更改太多,会填满磁盘

例如:对于使用MySQL或PostgreSQL所做的大多数事情,预定义的列确实会让您望而却步

CouchDB(1.2)

  • 书面语言:Erlang
  • 要点:数据库一致性、易用性
  • 许可证:Apache
  • 协议:HTTP/REST
  • 双向(!)复制
  • 连续或临时
  • 通过冲突检测
  • 因此,主复制。(!)
  • MVCC-写入操作不会阻止读取
  • 文件的早期版本可用
  • 仅限碰撞(可靠)设计
  • 需要不时压实
  • 视图:嵌入式地图/缩小
  • 格式化视图:列表和显示
  • 服务器端文档验证是可能的
  • 可能的身份验证
  • 通过“\u更改”(!)进行实时更新
  • 附件处理
最佳使用方法:用于积累偶尔更改的数据,对这些数据运行预定义的查询。版本控制非常重要的地方


例如:CRM、CMS系统。主复制是一项特别有趣的功能,允许轻松的多站点部署。

请查看以下链接:


  • 如果您来自MySQL世界,MongoDB将“感觉”更加自然,因为它支持类似查询的语言

    我想这就是为什么它对很多人如此友好的原因

    如果您想在多节点设置中(可能是在不同的数据中心或类似的地方)利用真正强大的主复制支持,CouchDB是非常棒的

    MongoDB的复制(副本集)是一种主-从-从设置,您只能在副本集中写入主机并从其中任何一个读取

    对于标准站点配置,这是很好的。它非常适合MySQL的使用

    但是,如果您试图创建一个像CDN这样的全局服务,它需要保持所有全局节点的同步,即使对所有节点都进行读/写操作,那么CouchDB中的复制之类的东西将给您带来巨大的好处

    虽然MongoDB有一种类似查询的语言,您可以使用它,而且感觉非常直观,但CouchDB采用了“map reduce”方法,并使用了这种视图概念。一开始感觉很奇怪,但当你掌握了窍门后,你真的开始感觉直觉了

    这里是一个快速概述,因此有一定的意义:

    • CouchDB将所有数据存储在b树中
    • 您不能使用类似“从用户中选择*,其中…”之类的内容动态地“查询”它
    • 相反,您定义数据的离散“视图”。。。“这里是我所有用户的视图”、“这里是10岁以上所有用户的视图”、“这里是30岁以上所有用户的视图”等等
    • 这些视图使用map-reduce方法定义,并定义为JavaScript函数
    • 定义视图时,DB开始通过它向指定视图的DB提供所有文档,并将函数结果记录为该数据的“索引”
    • 无论map/reduce函数做什么,都可以在视图上执行一些基本查询,例如询问特定的键(ID)或ID范围
    • 通读一遍,这是我所见过的沙发上地图/缩略的最好说明

    因此,这两个源代码都使用JSON文档,但CouchDB遵循的是“每台服务器都是主服务器,可以与世界同步”的方法,如果您需要的话,这种方法非常棒,而MongoDB实际上是NoSQL世界中的MySQL

    因此,如果这听起来更像你需要/想要的,那就去做吧

    Mongo的二进制协议与CouchDB的RESTful接口之间的细微差别都是次要的细节

    如果你想要原始的速度和数据安全,你可以让Mongo比CouchDB运行得更快,因为你可以告诉它在内存不足的情况下运行,并且除了稀疏的时间间隔之外,不会将内容提交到磁盘

    您也可以对coach执行同样的操作,但在这种“速度超过一切”的场景中,基于HTTP的通信协议将比使用Mongo的原始二进制通信慢2-4倍

    记住,如果服务器崩溃或磁盘故障损坏并将数据库烧掉,那么原始疯狂的疯狂速度是无用的,因此数据点并不像看上去那么惊人(除非你在华尔街上做实时交易系统,在这种情况下看Redis)


    希望一切都有帮助

    现在市场上的NoSQL数据库比eve多得多