Method Path Description
GET /v1/bdbs/{uid}/actions/optimize_shards_placement Get optimized shards placement for a database

Get optimized shards placement

GET /v1/bdbs/{int: uid}/actions/optimize_shards_placement

Get optimized shards placement for the given database.

Required permissions

Permission name
view_bdb_info

Request

Example HTTP request

GET /bdbs/1/actions/optimize_shards_placement

Response

To rearrange the database shards, you can submit the blueprint returned in this response body as the shards_blueprint field in the PUT /bdbs/{uid} request.

Example JSON body

[
    {
        "nodes": [
            {
                "node_uid": "3",
                "role": "master"
            },
            {
                "node_uid": "1",
                "role": "slave"
            }
        ],
        "slot_range": "5461-10922"
    },
    {
        "nodes": [
            {
                "node_uid": "3",
                "role": "master"
            },
            {
                "node_uid": "1",
                "role": "slave"
            }
        ],
        "slot_range": "10923-16383"
    },
    {
        "nodes": [
            {
                "node_uid": "3",
                "role": "master"
            },
            {
                "node_uid": "1",
                "role": "slave"
            }
        ],
        "slot_range": "0-5460"
    }
]

Response headers

Key Value Description
Content-Length 352 Length of the request body in octets
cluster-state-id 30 Cluster state ID

Status codes

Code Description
200 OK No error
404 Not Found Database UID does not exist
406 Not Acceptable Not enough resources in the cluster to host the database

Rearrange database shards

Use the blueprint returned by the GET /bdbs/{uid}/actions/optimize_shards_placement request as the value of the shards_blueprint field to rearrange the database shards.

To ensure that the optimized shard placement is relevant for the current cluster state, pass the cluster-state-id, taken from the response header of the GET request, in the PUT /bdbs/{uid} request headers.

The cluster will reject the update if its state was changed since the optimal shards placement was obtained.

Request

Example HTTP request

PUT /bdbs/1

Example JSON body

{
  "shards_blueprint": [
    {
      "nodes": [
        {
          "node_uid": "2",
          "role": "master"
        }
      ],
      "slot_range": "0-8191"
    },
    "..."
  ]
}
Warning -
If you submit such an optimized blueprint, it may cause strain on the cluster and its resources. Use with caution.

Request headers

Key Value Description
Host cnm.cluster.fqdn Domain name
Accept application/json Accepted media type
cluster-state-id 30 Cluster state ID