1.7. 2.0.x分支

1.7.1. 版本2.0.0

  • 现在支持本机集群。与其在多个不同的CouchDB服务器之间使用CouchDB复制,不如配置一个CouchDB节点集群。这些节点将使用优化的Erlang驱动的“内部复制”,以确保数据的持久性和可访问性。将集群CouchDB与负载平衡器(例如 haproxy )水平缩放CouchDB。有关群集功能的更多详细信息,请参阅 集群管理 .
  • Futon 取而代之的是全新的,完全重新设计的 Fauxton 接口。URL保持不变。
  • 新的Mango查询服务器提供了一种简单的基于JSON的方法来执行CouchDB查询,而不需要JavaScript或MapReduce。与Erlang查询相比,Mango查询具有与JavaScript查询相似的索引速度优势(根据文档大小和系统配置,索引速度提高了2-10倍)。我们建议所有新应用开始使用芒果作为默认设置。有关详细信息,请参阅 _find, _index and _explain API .
  • 芒果 selectors 可用于_changesfeed而不是JavaScript MapReduce过滤器。在这个应用程序中,Mango已经被测试为比JavaScript快一个数量级(10倍)。
  • Rewrite rules for url可以使用JavaScript函数执行。
  • Multiple queries 可以由具有单个HTTP请求的视图组成。
  • 可以在关闭排序的情况下查询视图( sorted=false )为了提高性能。
  • “全球变化”订阅源已得到增强。它现在是可恢复和持久的。
  • 添加了新端点(文档即将提供):
    • /_membership 显示群集中的所有节点
    • /_bulk_get 通过低延迟连接加速复制协议
    • /_node/ 访问单个节点的配置和压缩特性的api
    • /_cluster_setup 从头建立集群的api。
    • /_up 向负载平衡器发送节点运行状况信号的api
    • /db/_local_docs/db/_design_docs (类似于 /db/_all_docs
  • 这个 /_log 终结点已删除。
  • 端口5986上的“后端”接口用于特定的群集管理任务。感兴趣的是 _nodes_dbs 仅通过此接口可见的数据库。
  • 增加了对Erlang/otp17.x、18.x和19的支持
  • 为类Unix系统和microsoftwindows编写的新的流线型构建系统
  • Configuration has moved from /_config to /_node/{node-name}/_config
  • instance_start_time 现在总是报告 "0" .

1.7.2. 升级说明

  • 返回的更新序列 /db/_changes feed不再是整数。它们可以是任何JSON值。应用程序应将它们视为不透明值,并按原样返回CouchDB。
  • 不再支持临时视图。
  • 有可能有多个replicator数据库。 replicator/db 配置选项已删除。取而代之的是 _replicator 以及任何以 /_replicator 后缀将被系统识别为复制器数据库。
  • 注意,由于集群特性的引入,一些API调用的语义已经改变。具体地说,注意接收 201 和A 202 存储文档时。
  • all_or_nothing 不再受 bulk_docs API
  • 更新包含 show ,一个立即得到相同的 show 函数仍可能返回上一个定义的结果。这是由于设计文档缓存,完全清除可能需要几秒钟,对于群集安装,可能需要更长时间(最多30秒)。

1.7.3. 已知问题

所有 known issues 针对2.0版本的文件包含在官方文件中 CouchDB JIRA instanceCouchDB GitHub Issues .

以下是2.0.0版中未及时修复的已知问题的一些亮点:

  • COUCHDB-2980 :复制器(是否通过 _replicate 或存储在 _replicator 数据库)了解两种来源和目标:

    1. 一个URL(例如。, https://foo:bar@foo.com/db1 ),称为“远程”源或目标
    2. 数据库名称(例如。, db1 ),称为“本地”源或目标。

    无论何时使用后一种类型,都会引用本地未群集的数据库,而不是集群数据库。

    在未来的版本中,我们希望支持集群数据库的“本地”源或目标规范。目前,我们建议始终对源规范和目标规范使用URL格式。

  • COUCHDB-3034 :CouchDB在多个客户机尝试同时放置或删除同一个数据库时,偶尔会返回500个错误。

  • COUCHDB-3119 :如果Erlang节点名不是,则向集群添加节点失败 couchdb (形式) couchdb@hostname

  • COUCHDB-3050 :偶尔 dev/run 用于开发目的以启动本地3节点群集的脚本将无法启动一个或多个节点。

  • COUCHDB-2817 :压缩守护程序只压缩包含设计文档的碎片的视图。

  • COUCHDB-2804群集接口上未启用fast_-view优化。

  • #656 :OAuth 1.0支持已中断并已弃用。它将在CouchDB的未来版本中被删除。

1.7.4. 正在中断更改

2.0中的以下更改代表了与CouchDB 1.x的显著偏差,并可能会改变设计用于CouchDB旧版本的系统的行为:

  • #620POST /dbname 不再返回ETag响应头,符合rfc7231第7.2节。