主页 topics Apache CouchDB 详解 什么是 CouchDB?
Apache CouchDB 是开源 NoSQL 文档数据库,用于存储 JSON 格式的数据。
黑色和蓝色背景
什么是 CouchDB?

Apache CouchDB(链接位于 ibm.com 外部)是开源 NoSQL 文档数据库,用于收集和存储 JSON 文档格式的数据。 与关系数据库不同,CouchDB 使用无模式数据模型,简化了各种计算设备、手机和 Web 浏览器中的记录管理。

CouchDB 于 2005 年推出,并于 2008 年成为 Apache 软件基金会(链接位于 ibm.com 外部)的一个项目。 作为开源项目,CouchDB 由一个活跃的开发人员社区提供支持,他们专注于易用性和 web 应用,持续改进该软件。

为何选择 CouchDB?

对于大多数企业来说,在决定使用哪家供应商的数据管理技术时,做出选择有些困难。 这不仅仅是因为专有软件对技术使用施加了特定的许可限制,而且还在于,要将所有企业数据迁移到“一体适用”的数据库管理系统 (DBMS),同时缺乏对其内部结构的了解,也会引起企业对业务连续性的担忧。

CouchDB 则不同。 与可能存在“供应商锁定”风险的专有软件不同,CouchDB 是开源项目,免费使用,可以轻松集成到企业当前的数据管理基础架构之中。 因为企业对软件拥有更多控制权,所以在根据业务需求调整软件时,也就有了更大的灵活性。 无论是需要通用的文档存储以实现高效的数据同步,还是奉行“脱机优先”理念,CouchDB 都可以帮助企业灵活地创建持久耐用、高度可靠而且易于扩展的基础架构。

这段视频详细说明了 CouchDB 及其工作方式:

CouchDB 的显著特性

CouchDB 开发工作背后的动机可以归结为一个词:轻松。 CouchDB 的一系列特性旨在减少运行弹性分布式系统的工作量。 以下是 CouchDB 的一些主要特点以及它与其他 NoSQL 数据库的不同之处。

复制 CouchDB 的一个重要特性是双向复制,用于在多个服务器和设备之间同步数据。 这种复制功能使企业能够最大程度提高系统可用性,加快数据恢复速度,找到在地理位置上与最终用户最接近的数据,以及简化备份过程。

在 CouchDB 中,数据是存放在一台服务器还是多台服务器上没有区别。 CouchDB 可以发现任何数据源中的文档变更,并确保所有数据库副本更新为最新信息并保持同步。 这样,多个数据库副本都是独立的而且受到妥善管理,同时仍能在多个计算环境中保存准确、实时的信息。

视图。 CouchDB 将视图用作运行查询以及根据存储的文档文件创建报告的主要工具。 可借助视图对文档进行过滤,以查找与特定数据库流程相关的信息。 然后,可以根据自己的首选项按照特定顺序映射和抽取这些信息。

CouchDB 的妙处在于您可以自由选择信息的呈现方式。 由于 CouchDB 视图是动态构建的,不直接影响任何底层文档存储,因此对于可运行同一数据的多少个不同视图没有限制。 这些视图是在特殊设计文档中创建的,能够在多个数据库实例(如定期存储的数据)之间复制。

CouchDB 的另一大特色是可以利用 Apache MapReduce 创建强大的索引,从而能够根据文档中的任何值轻松找到文档。 然后,可利用这些索引在文档之间建立关系,根据这些关系进行各种计算。

HTTP API。 CouchDB 使用 REST API 从任何地点访问数据库,并具有完全的 CRUD(创建、读取、更新、删除)操作灵活性。 这种简单而高效的数据库连接方式赋予 CouchDB 灵活、快速、强大的特性,同时又能保持高度可访问性。

设计中考虑了脱机操作。 在扩展数据库的易用性和可访问性时,构建无论是联机还是脱机都能够一样工作的应用至关重要。 CouchDB 使应用能够将收集到的数据存储在移动设备和浏览器本地,然后在恢复联机后同步这些数据。

高效的文档存储。 在 CouchDB 中,文档是以 JSON 格式使用的主要数据单元,由各种字段和附件组成,便于存储。 每个文档的文本大小或元素数量没有限制,并且数据可从多个数据库源以及全球分布的服务器集群访问和更新。

兼容性。 CouchDB 提供多种兼容性优势,可轻松地与当前基础架构集成。 CouchDB 是以 Erlang 编写的(一种通用的并发式垃圾收集编程语言和运行时系统),因此十分可靠,方便开发人员使用。

开源能力赋予 CouchDB 极大的灵活性,使其可以在各种操作系统和虚拟化工具上安装和运行。 它还兼容 PouchDB,后者是专为在移动设备浏览器中运行而设计的轻量型数据库。

CouchDB 的优点

CouchDB 为用户和开发人员带来了诸多优点。

可扩展性。 CouchDB 的架构设计使其具有非常强的适应能力,在对数据库分区和将数据扩展到多个节点时体现得尤为明显。 CouchDB 支持水平分区和复制,为平衡数据库部署期间的读写负载创建了易于管理的解决方案。

CouchDB 具有非常可靠耐用的存储引擎,该引擎是针对多云和多数据库基础架构从头构建的。 作为 NoSQL 数据库,CouchDB 具有很高的定制能力,可用于轻松开发可预测的性能驱动型应用,无论数据量或用户有多少。

没有读取锁。 在大多数关系数据库中,数据存储在表中,如果需要更新或修改表,正在更改的数据行将对其他用户锁定,直到修改请求处理完成为止。 这会给客户带来可访问性问题,并在数据管理流程中造成总体瓶颈。

CouchDB 使用 MVCC(多版本并发控制),管理对数据库的并发访问。 这意味着,无论当前数据库负载如何,CouchDB 都会全速运行,不会对用户产生任何限制。 由于 CouchDB 中的文档实时进行版本控制和内容追加,数据库读取请求将始终得到最新更新的数据库快照,与谁先访问文档无关。

开源开发。 由于得到开源社区的大力支持,CouchDB 为企业数据库管理提供了强大而可靠的基础。 经过多年开发,无模式解决方案 CouchDB 提供了大多数专有数据库解决方案无法比拟的灵活性。

相关解决方案
IBM Cloudant

适用于超大规模、富有弹性而且全球可用的应用的数据层,基于开源 Apache CouchDB。

探索 IBM Cloudant
资源 数据库深入探究:CouchDB

在本次与两位数据库专家的访谈中,了解 CouchDB 的优缺点、该项目的发展方向以及其他内容。

什么是 NoSQL?

NoSQL 是一种数据库设计方法,支持在关系数据库中的传统结构之外存储和查询数据。

什么是云存储?

介绍云存储的各个重要方面,包括工作方式、优点以及可用的不同类型的云存储。

采取下一步行动

IBM Cloudant 基于 Apache CouchDB,是完全管理型分布式数据库,针对繁重的工作负载和快速增长的 Web 和移动应用进行了优化。 Cloudant 作为 IBM Cloud 服务,可达到 99.99% 的 SLA 可用性要求,可灵活缩放吞吐量和存储空间,其 API 和复制协议与 Apache CouchDB 兼容,适用于混合或多云架构。

了解更多信息并试用 IBM Cloudant