4.3. 数据库管理

4.3.1. 创建数据库

这将创建一个具有 3 个副本和 8 个分片的数据库。

curl -X PUT "http://xxx.xxx.xxx.xxx:5984/database-name?n=3&q=8" --user admin-user

数据库位于 data/shards 中。查看所有节点,您将找到所有部分。

如果您没有指定 nq,将使用默认值。默认值为 3 个副本和 8 个分片。

4.3.2. 删除数据库

curl -X DELETE "http://xxx.xxx.xxx.xxx:5984/database-name --user admin-user

4.3.3. 将数据库放置在特定节点上

在 BigCouch(CouchDB 2.0 集群功能的前身)中,存在区域的概念。CouchDB 2.0 通过集群放置规则将此概念延续下来。

警告

使用 placement 参数将覆盖分片副本基数的标准逻辑(由 [cluster] n 指定)。

首先,每个节点都必须用区域属性进行标记。这定义了每个节点所在的区域。您可以通过编辑系统 _nodes 数据库中的节点文档来实现,该数据库可以通过节点本地访问 GET /_node/_local/_nodes/{node-name} 端点。

添加以下形式的键值对

"zone": "metro-dc-a"

对集群中的所有节点执行此操作。

在每个节点上的配置文件(local.inidefault.ini)中,定义一个一致的集群范围设置,例如

[cluster]
placement = metro-dc-a:2,metro-dc-b:1

在此示例中,它将确保分片的两个副本将托管在区域属性设置为 metro-dc-a 的节点上,而一个副本将托管在区域属性设置为 metro-dc-b 的新节点上。

请注意,您还可以使用此系统来确保集群中的某些节点不托管新创建数据库的任何副本,方法是为它们提供一个不在 [cluster] 放置字符串中的区域属性。