1.6. 分区数据库

分区数据库允许在集群中进行数据共置,这为限制在单个分区内的查询提供了显著的性能提升。

请参阅 分区数据库入门指南

1.6.1. /db/_partition/partition

GET /{db}/_partition/{partition}

此端点返回描述所提供分区的相关信息。它包括文档和已删除文档计数,以及外部和活动数据大小。

状态码:
  • 200 OK – 请求已成功完成

请求:

GET /db/_partition/sensor-260 HTTP/1.1
Accept: application/json
Host: localhost:5984

响应:

HTTP/1.1 200 OK
Cache-Control: must-revalidate
Content-Length: 119
Content-Type: application/json
Date: Thu, 24 Jan 2019 17:19:59 GMT
Server: CouchDB/2.3.0-a1e11cea9 (Erlang OTP/21)

{
  "db_name": "my_new_db",
  "doc_count": 1,
  "doc_del_count": 0,
  "partition": "sensor-260",
  "sizes": {
    "active": 244,
    "external": 347
  }
}

1.6.2. /db/_partition/partition/_all_docs

GET /{db}/_partition/{partition}/_all_docs
参数:
  • db – 数据库名称

  • partition – 分区名称

此端点是一个方便的端点,用于自动设置所提供分区范围的边界。类似的结果可以通过使用全局 /db/_all_docs 端点并为 start_keyend_key 配置适当的值来获得。

请参阅 视图端点 文档以获取有关可用查询参数和返回数据格式的完整描述。

请求:

GET /db/_partition/sensor-260/_all_docs HTTP/1.1
Accept: application/json
Host: localhost:5984

响应:

HTTP/1.1 200 OK
Cache-Control: must-revalidate
Content-Type: application/json
Date: Sat, 10 Aug 2013 16:22:56 GMT
ETag: "1W2DJUZFZSZD9K78UFA3GZWB4"
Server: CouchDB (Erlang/OTP)
Transfer-Encoding: chunked

{
  "offset": 0,
  "rows": [
    {
      "id": "sensor-260:sensor-reading-ca33c748-2d2c-4ed1-8abf-1bca4d9d03cf",
      "key": "sensor-260:sensor-reading-ca33c748-2d2c-4ed1-8abf-1bca4d9d03cf",
      "value": {
        "rev": "1-05ed6f7abf84250e213fcb847387f6f5"
      }
    }
  ],
  "total_rows": 1
}

1.6.3. /db/_partition/partition/_design/design-doc/_view/view-name

GET /{db}/_partition/{partition}/_design/{ddoc}/_view/{view}
参数:
  • db – 数据库名称

  • partition – 分区名称

  • ddoc – 设计文档 ID

  • view – 视图名称

此端点负责执行分区查询。返回的视图结果将只包含具有指定分区名称的行。

请参阅 视图端点 文档以获取有关可用查询参数和返回数据格式的完整描述。

GET /db/_partition/sensor-260/_design/sensor-readings/_view/by_sensor HTTP/1.1
Accept: application/json
Host: localhost:5984

响应:

HTTP/1.1 200 OK
Cache-Control: must-revalidate
Content-Type: application/json
Date: Wed, 21 Aug 2013 09:12:06 GMT
ETag: "2FOLSBSW4O6WB798XU4AQYA9B"
Server: CouchDB (Erlang/OTP)
Transfer-Encoding: chunked

{
  "offset": 0,
  "rows": [
    {
      "id": "sensor-260:sensor-reading-ca33c748-2d2c-4ed1-8abf-1bca4d9d03cf",
      "key": [
        "sensor-260",
        "0"
      ],
      "value": null
    },
    {
      "id": "sensor-260:sensor-reading-ca33c748-2d2c-4ed1-8abf-1bca4d9d03cf",
      "key": [
        "sensor-260",
        "1"
      ],
      "value": null
    },
    {
      "id": "sensor-260:sensor-reading-ca33c748-2d2c-4ed1-8abf-1bca4d9d03cf",
      "key": [
        "sensor-260",
        "2"
      ],
      "value": null
    },
    {
      "id": "sensor-260:sensor-reading-ca33c748-2d2c-4ed1-8abf-1bca4d9d03cf",
      "key": [
        "sensor-260",
        "3"
      ],
      "value": null
    }
  ],
  "total_rows": 4
}

1.6.4. /db/_partition/partition_id/_find

POST /{db}/_partition/{partition_id}/_find
参数:
  • db – 数据库名称

  • id (partition) – 要查询的分区的名称

此端点负责通过其 ID 查找分区查询。返回的视图结果将只包含具有指定分区 ID 的行。

请参阅 find 端点 文档以获取有关可用参数和返回数据格式的完整描述。

1.6.5. /db/_partition/partition_id/_explain

POST /{db}/_partition/{partition_id}/_explain
参数:
  • db – 数据库名称

分区 ID:

要查询的分区的名称

此端点显示查询正在使用哪个索引。

请参阅 explain 端点 文档以获取有关可用参数和返回数据格式的完整描述。