`
gaojingsong
  • 浏览: 1197499 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Apache 之CouchDB介绍

阅读更多

CouchDB 介绍

Apache CouchDB™ lets you access your data where you need it by defining the Couch Replication Protocol that is implemented by a variety of projects and products that span every imaginable computing environment from globally distributed server-clusters, over mobile phones to web browsers. Software that is compatible with the Couch Replication Protocol include: PouchDB, Cloudant, and Couchbase Lite.

Store your data safely, on your own servers, or with any leading cloud provider. Your web- and native applications love CouchDB, because it speaks JSON natively and supports binary for all your data storage needs. The Couch Replication Protocol lets your data flow seamlessly between server clusters to mobile phones and web browsers, enabling a compelling, offline-first user-experience while maintaining high performance and strong reliability. CouchDB comes with a developer-friendly query language, and optionally MapReduce for simple, efficient, and comprehensive data retrieval.

 

CouchDB 是一个开源的面向文档的数据库管理系统,可以通过 RESTful JavaScript Object Notation (JSON) API 访问。术语 “Couch” 是 “Cluster Of Unreliable Commodity Hardware” 的首字母缩写,它反映了 CouchDB 的目标具有高度可伸缩性,提供了高可用性和高可靠性,即使运行在容易出现故障的硬件上也是如此。CouchDB 最初是用 C++ 编写的,但在 2008 年 4 月,这个项目转移到 Erlang OTP 平台进行容错测试

 



 

CouchDB是用Erlang开发的面向文档的数据库系统,最近刚刚发布了1.0版本(2010年7月14日)。CouchDB不是一个传统的关系数据库,而是面向文档的数据库,其数据存储方式有点类似lucene的index文件格式,CouchDB最大的意义在于它是一个面向web应用的新一代存储系统,事实上,CouchDB的口号就是:下一代的Web应用存储系统。

CouchDB 可以安装在大部分 POSIX 系统上,包括 Linux® 和 Mac OS X。尽管目前还不正式支持 Windows®,但现在已经着手编写 Windows 平台的非官方二进制安装程序。CouchDB 可以从源文件安装,也可以使用包管理器安装(比如在 Mac OS X 上使用 MacPorts)。

CouchDB 是一个顶级 Apache Software Foundation 开源项目,根据 Apache 许可 V2.0 发布。这个开源许可允许在其他软件中使用这些源代码,并根

据需要进行修改,但前提是遵从版权需知和免责声明。

 

 

CouchDB特点

一、CouchDB是分布式的数据库,他可以把存储系统分布到n台物理的节点上面,并且很好的协调和同步节点之间的数据读写一致性。这当然也得靠Erlang无与伦比的并发特性才能做到。对于基于web的大规模应用文档应用,分布式可以让它不必像传统的关系数据库那样分库拆表,在应用代码层进行大量的改动。

二、CouchDB是面向文档的数据库,存储半结构化的数据,比较类似lucene的index结构,特别适合存储文档,因此很适合CMS,电话本,地址本等应用,在这些应用场合,文档数据库要比关系数据库更加方便,性能更好。

三、CouchDB支持REST API,可以让用户使用JavaScript来操作CouchDB数据库,也可以用JavaScript编写查询语句,我们可以想像一下,用AJAX技术结合CouchDB开发出来的CMS系统会是多么的简单和方便。

其实CouchDB只是Erlang应用的冰山一角,在最近几年,基于Erlang的应用也得到的蓬勃的发展,特别是在基于web的大规模,分布式应用领域,几乎都是Erlang的优势项目。

 

 

 

CouchDB工作原理

CouchDB 构建在强大的 B-树储存引擎之上。这种引擎负责对 CouchDB 中的数据进行排序,并提供一种能够在对数均摊时间内执行搜索、插入和删除操作的机制。CouchDB 将这个引擎用于所有内部数据、文档和视图。

因为 CouchDB 数据库的结构独立于模式,所以它依赖于使用视图创建文档之间的任意关系,以及提供聚合和报告特性。使用 Map/Reduce 计算这些视图的结果,Map/Reduce 是一种使用分布式计算来处理和生成大型数据集的模型。Map/Reduce 模型由 Google 引入,可分为 Map 和 Reduce 两个步骤。在 Map 步骤中,由主节点接收文档并将问题划分为多个子问题。然后将这些子问题发布给工作节点,由它处理后再将结果返回给主节点。在 Reduce 步骤,主节点接收来自工作节点的结果并合并它们,以获得能够解决最初问题的总体结果和答案。

CouchDB 中的 Map/Reduce 特性生成键/值对,CouchDB 将它们插入到 B-树引擎中并根据它们的键进行排序。这就能通过键进行高效查找,并且提高 B-树中的操作的性能。此外,这还意味着可以在多个节点上对数据进行分区,而不需要单独查询每个节点。

传统的关系数据库管理系统有时使用锁来管理并发性,从而防止其他客户机访问某个客户机正在更新的数据。这就防止多个客户机同时更改相同的数据,但对于多个客户机同时使用一个系统的情况,数据库在确定哪个客户机应该接收锁并维护锁队列的次序时会遇到困难,这很常见。在 CouchDB 中没有锁机制,它使用的是多版本并发性控制(Multiversion concurrency controlMVCC)— 它向每个客户机提供数据库的最新版本的快照。这意味着在提交事务之前,其他用户不能看到更改。许多现代数据库开始从锁机制前移到 MVCC,包括 Oracle(V7 之后)和 Microsoft® SQL Server 2005 及更新版本。

  • 大小: 52.1 KB
0
1
分享到:
评论

相关推荐

    Apache-CouchDB.zip

    CouchDB 是一个开源的面向文档的数据库管理系统,可以通过 RESTful JavaScript Object Notation (JSON) API 访问。术语 “Couch” 是 “Cluster Of Unreliable Commodity Hardware” 的首字母缩写,它反映了 CouchDB...

    apache-couchdb-2.3.1.msi

    CouchDB 是一个开源的面向文档的数据库管理系统,可以通过 RESTful JavaScript Object Notation (JSON) API 访问。术语 “Couch” 是 “Cluster Of Unreliable Commodity Hardware” 的首字母缩写,它反映了 CouchDB...

    Apache CouchDB信息泄露漏洞(CVE-2023-26268)通告

    Apache CouchDB 信息泄露漏洞(CVE-2023-26268)通告 Apache CouchDB 是一个开源的 NoSQL 文档数据库,以基于 JSON 的文档格式收集和存储数据,提供了高可用性和高可靠性。近日,深信服安全团队监测到 Apache ...

    apache-couchdb-2.3.1.zip

    Apache CouchDB的核心特性之一是其“ Futon”Web管理界面,允许用户直接在浏览器中查看、编辑和管理数据库。 标题"apache-couchdb-2.3.1.zip"表明这是Apache CouchDB的2.3.1版本的压缩包文件。通常,这种版本号的...

    apache-couchdb-3.1.1.zip

    Apache CouchDB是一款开源的、基于文档的分布式数据库系统,它采用了NoSQL的数据模型,强调数据的灵活性和可伸缩性。CouchDB以其强大的实时同步功能和JSON文档存储格式而闻名,非常适合构建分布式应用程序和离线应用...

    apache-couchdb-3.1.1.msi

    couchdb最新版(msi),适用于64位windows,因为apache的官方网站,couchdb下载慢。 所以花了不少时间下载下来,共享给大家。

    面向文档存储数据库系统Apache CouchDB入门到精通视频教程

    l Apache CouchDB介绍 l CouchDB的安装配置 l CouchDB自带的管理工具 l CouchDB的复制 l View的使用 l 使用Java代码操作CouchDB l 使用Java代码操作View 4.课程目录 第1节 - 1.关系型数据库与Nosql数据库的对比 - ...

    python-couchdb-auditor:Apache CouchDB 服务器的 Python 审计工具

    这个 python 端口的工具用于审计 Apache CouchDB 服务器配置和安全问题。 它有什么作用? 检查您的 CouchDB 版本的实际 CVE 问题(但是,它应该是相当老的); 提醒您修复 Admin Party 如果它在您的服务器上; ...

    couchdb-docker:Apache CouchDB Docker

    couchdb-docker:Apache CouchDB Docker

    couchdb文档:Apache CouchDB文档

    该存储库包含Apache CouchDB文档的Sphinx源代码。 您可以在以下位置查看此内容的最新渲染版本: http://docs.couchdb.org/en/latest 建立这个仓库 安装Python3和pip。 然后: $ python3 -m venv .venv $ source ....

    Beginning CouchDB.pdf

    通过以上介绍可以看出,《Beginning CouchDB》这本书不仅介绍了CouchDB的基本概念和技术细节,还深入探讨了其应用场景和最佳实践,对于希望学习和使用CouchDB的开发者来说是一本非常有价值的参考书。

    Nano现在是Apache CouchDB的一部分。 回购移至https://GitHub.com/apache/couchdb-nano-Node.js开发

    用于node.js nano功能的nano简约couchdb驱动程序:简约-您和couchdb管道之间只有最小的抽象-从couchdb直接向您的最终用户错误发出代理请求-错误用于node.js nano功能的nano简约couchdb驱动程序:极简主义-您和沙发床...

    couchdb源码

    当我们打开`apache-couchdb-1.2.0`这个压缩包时,我们可以看到CouchDB的源代码结构。以下是一些关键组件的简要介绍: 1. `src`: 这是CouchDB的主要源代码目录,包含了各种子模块,如`couch`(CouchDB核心服务)、`...

    Apress.Beginning.CouchDB.Dec.2009.pdf

    《初识CouchDB》是一本面向专业人士的专业书籍,它详细介绍了Apache CouchDB数据库管理系统的基础知识和高级特性。CouchDB作为一个不断发展的非关系型数据库系统,与传统的SQL数据库相比,具有独特的特性和优势。...

    couchdb 初学介绍

    CouchDB是Apache基金会旗下的一个开源项目,它是一款基于JSON文档存储的NoSQL数据库。相比于传统的关系型数据库,CouchDB提供了一种全新的数据存储方式,使得开发人员能够更加灵活高效地管理和处理大量非结构化或半...

    couchdb

    Apache CouchDB是一个完全包含Web的数据库。 使用JSON文档存储数据。 通过HTTP使用Web浏览器访问文档。 使用JavaScript查询,合并和转换文档。 Apache CouchDB可与现代Web和移动应用程序完美配合。 CouchDB的杀手级...

Global site tag (gtag.js) - Google Analytics