首页 文章

NoSQL - MongoDB与CouchDB [关闭]

提问于
浏览
148

在NoSQL运动方面,我是一个完整的菜鸟 . 我听说过很多关于MongoDB和CouchDB的内容 . 我知道两者之间存在差异 . 作为NoSQL世界的第一步,您建议学习哪些内容?

5 回答

  • 120

    请参阅以下链接

    Update :我找到了很棒的comparison of NoSQL数据库 .

    MongoDB (3.2)

    • 写于:C

    • 要点:JSON文档存储

    • 许可证:AGPL(驱动程序:Apache)

    • 协议:自定义,二进制(BSON)

    • 主/从复制(带副本集的自动故障转移)

    • 内置分片

    • 查询是javascript表达式

    • 运行任意javascript函数服务器端

    • 具有地理空间索引和查询

    • 具有不同性能特征的多个存储引擎

    • 性能超过功能

    • 文件验证

    • 日记

    • 强大的聚合框架

    • 在32位系统上,限制在~2.5Gb

    • 集成了文本搜索

    • GridFS存储大数据元数据(实际上不是FS)

    • 数据中心感知

    Best used :如果需要动态查询 . 如果您更喜欢定义索引,而不是map / reduce函数 . 如果你需要在大数据库上有良好的性能 . 如果你想要CouchDB,但你的数据变化太大,填满了磁盘 .

    For example :对于大多数你会用MySQL或PostgreSQL做的事情,但是有预定义的列确实阻止了你 .

    CouchDB (1.2)

    • 撰写于:Erlang

    • 要点:数据库一致性,易用性

    • 许可证:Apache

    • 协议:HTTP / REST

    • 双向(!)复制,

    • 连续或临时,

    • 有冲突检测,

    • 因此,主 - 主复制 . (!)

    • MVCC - 写操作不会阻止读取

    • 以前版本的文件可用

    • 仅限碰撞(可靠)设计

    • 需要不时压缩

    • 视图:嵌入式 Map /减少

    • 格式化视图:列表和节目

    • 可以进行服务器端文档验证

    • 认证可能

    • 通过'_changes'(!)实时更新

    • 附件处理

    • 因此,CouchApps(独立的js应用程序)

    Best used :用于累积,偶尔更改数据,以及要在其上运行预定义查询的数据 . 版本控制很重要的地方 .

    For example :CRM,CMS系统 . 主 - 主复制是一项特别有趣的功能,可以轻松实现多站点部署 .

  • 145

    如果您来自MySQL世界,MongoDB会因为其类似查询的语言支持而“感觉”更自然 .

    我认为这就是让很多人如此友好的原因 .

    如果你想在多节点设置中利用真正伟大的主 - 主复制支持,可能在不同的数据中心或类似的东西,CouchDB是太棒了 .

    MongoDB的复制(副本集)是主从 - 从 - 奴 - *设置,您只能在副本集中写入主服务器并从其中任何一个读取 .

    对于标准站点配置,这很好 . 它很好地映射到MySQL的用法 .

    但是,如果您正在尝试创建像CDN这样的全局服务,即使对所有节点进行读/写操作也需要保持所有全局节点的同步,那么像CouchDB中的复制这样的事情对您来说将是一个巨大的好处 .

    虽然MongoDB具有类似查询的语言,您可以使用并且感觉非常直观,但CouchDB采用“map-reduce”方法和视图概念 . 起初感觉很奇怪,但是当你掌握它时,它真的开始感觉很直观 .

    这是一个快速概述,所以它有一定道理:

    • CouchDB将所有数据存储在b树中

    • 你不能"query"动态"SELECT * FROM user WHERE..."

    • 相反,您可以定义数据的离散"views" ... "here is a view of all my users","here is a view of all users older than 10" "here is a view of all users older than 30"等等 .

    • 这些视图使用map-reduce方法定义,并定义为JavaScript函数 .

    • 定义视图时,数据库开始通过它将所分配视图的DB的所有文档送入,并将函数结果记录为该数据的"index" .

    • 您可以对视图执行一些基本查询,例如询问特定键(ID)或ID范围,而不管map / reduce函数的作用如何 .

    • 通读these slides,它已经_863858了 .

    所以这两个来源都使用JSON文档,但是CouchDB更多地遵循这个“每个服务器都是主服务器并且可以与世界同步”的方法,如果你需要它,这很棒,而MongoDB实际上是NoSQL世界的MySQL .

    所以如果这听起来更像你需要/想要的东西,那就去吧 .

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

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

    你可以用Couch做同样的事情,但事实如此基于HTTP的通信协议将比使用Mongo的原始二进制通信慢2-4倍,这是“速度超过一切!”场景 .

    请记住,如果服务器崩溃或磁盘故障破坏并将您的数据库遗忘,那么原始疯狂的疯狂速度是无用的,因此数据点并不像看起来那么惊人(除非您在Wall上进行实时交易系统)街,在这种情况下看看Redis) .

    希望一切都有所帮助!

  • 1

    现在市场上的NoSQL数据库比以往任何时候都多 . 如果你正在寻找一个基于支持,可扩展性,管理和成本的企业应用程序的数据库,我建议甚至看看Gartner Magic Quadrant .

    http://www.gartner.com/technology/reprints.do?id=1-23A415Q&ct=141020&st=sb

    我想向尚未尝试过的人推荐Couchbase,但不是基于报告中显示的版本(2.5.1),因为它比今天的CB服务器落后近2个版本,接近2015年下半年的4.0版本 .

    http://www.couchbase.com/coming-in-couchbase-server-4-0

    关于Couchbase作为供应商/产品的另一部分是它是一种多用途类型的DB . 它可以充当纯K / V存储,面向文档的数据库,具有多维扩展,Memcached,缓存和持久性,并支持ANSI 92兼容的SQL自动连接,只需按一下按钮即可复制到DR集群,以及甚至还有一个内置于生态系统的移动组件 .

    如果没有别的,值得查看最新的基准测试:

    http://info.couchbase.com/Benchmark_MongoDB_VS_CouchbaseServer_HPW_BM.html http://info.couchbase.com/NoSQL-Technical-Comparison-Report.html

  • 5

    关于NoSQL的youtube中的Edureka视频是一些最好的视频教程 . 看完这些视频后,我开始使用MongoDb和Cassandra .

    https://www.youtube.com/watch?v=gJFG04Sy6NY
    https://www.youtube.com/watch?v=KSq6tMMXZ8s
    https://www.youtube.com/watch?v=3z1KFA2qcSo
    

    slideshare.net提供了很好的演示文稿

    http://www.slideshare.net/quipo/nosql-databases-why-what-and-when?qid=3bb9f7f6-a53d-41b1-8403-cd6f181d0ca7&v=qf1&b=&from_search=1
    
    http://www.slideshare.net/EdurekaIN/no-sql-databases-35591065?qid=f1b9c095-6d70-4d0a-91da-1df664c4f389&v=qf1&b=&from_search=3
    

    slidehare中的Edureka演示文稿是youtube中视频的扩展 . 您可以将此演示文稿视为YouTube视频的摘要 .

相关问题