Skip to content
This repository was archived by the owner on Dec 13, 2023. It is now read-only.

Commit c86534c

Browse files
nerpaulaansoboleva
andauthored
DOC-141/auto-shard-rebalance (#1064)
* added cluster rebalance docublocks * Update examples for 3.10 in DOC-141/auto-shard-rebalance at 2022-08-01T15:48:16+00:00 * release notes, api changes, description * Update administration-cluster.md * fixed docublock name Co-authored-by: ansoboleva <93702078+ansoboleva@users.noreply.github.com> Co-authored-by: arangodb-release-bot <anastasia.soboleva@arangodb.com>
1 parent 4726f9f commit c86534c

File tree

322 files changed

+5341
-6082
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

322 files changed

+5341
-6082
lines changed

3.10/administration-cluster.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,9 +175,33 @@ feature does not have its own sharding strategy, it uses `hash` instead.
175175
Moving/Rebalancing _shards_
176176
---------------------------
177177

178+
Rebalancing redistributes resources in the cluster to optimise resource
179+
allocation - shards and location of leaders/followers.
180+
181+
It aims to achieve, for example, a balanced load, fair shard distribution,
182+
and resiliency.
183+
184+
Rebalancing might occur, amongst other scenarios, when:
185+
- There is a change in the number of nodes in the cluster and more (or fewer)
186+
resources are available to the cluster.
187+
- There is a detectable imbalance in the distribution of shards
188+
(i.e. specific nodes holding high number of shards while others don’t) or in
189+
the distribution of leaders/followers across the nodes, resulting in
190+
computational imbalance on the nodes.
191+
- There are changes in the number or size of data collections.
192+
178193
A _shard_ can be moved from a _DB-Server_ to another, and the entire shard distribution
179194
can be rebalanced using the corresponding buttons in the web [UI](programs-web-interface-cluster.html).
180195

196+
You can also do any of the following by using the API:
197+
- Calculate the current cluster imbalance.
198+
- Compute a set of move shard operations to improve balance.
199+
- Execute the given set of move shard operations.
200+
- Compute a set of move shard operations to improve balance and immediately execute them.
201+
202+
For more information, see the [Cluster Administration & Monitoring](http/administration-and-monitoring.html#calculates-the-current-cluster-imbalance)
203+
section of the HTTP API reference manual.
204+
181205
Replacing/Removing a _Coordinator_
182206
----------------------------------
183207

3.10/generated/Examples/001_collectionAll.generated

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,62 +2,62 @@ arangosh&gt; db.five.insert({ <span class="hljs-attr">name</span> : <span class=
22
{
33
<span class="hljs-string">&quot;_id&quot;</span> : <span class="hljs-string">&quot;five/110&quot;</span>,
44
<span class="hljs-string">&quot;_key&quot;</span> : <span class="hljs-string">&quot;110&quot;</span>,
5-
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejlqxN----&quot;</span>
5+
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejmUWnG--_&quot;</span>
66
}
77
arangosh&gt; db.five.insert({ <span class="hljs-attr">name</span> : <span class="hljs-string">&quot;two&quot;</span> });
88
{
99
<span class="hljs-string">&quot;_id&quot;</span> : <span class="hljs-string">&quot;five/112&quot;</span>,
1010
<span class="hljs-string">&quot;_key&quot;</span> : <span class="hljs-string">&quot;112&quot;</span>,
11-
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejlqxN---_&quot;</span>
11+
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejmUWnK---&quot;</span>
1212
}
1313
arangosh&gt; db.five.insert({ <span class="hljs-attr">name</span> : <span class="hljs-string">&quot;three&quot;</span> });
1414
{
1515
<span class="hljs-string">&quot;_id&quot;</span> : <span class="hljs-string">&quot;five/114&quot;</span>,
1616
<span class="hljs-string">&quot;_key&quot;</span> : <span class="hljs-string">&quot;114&quot;</span>,
17-
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejlqxN---A&quot;</span>
17+
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejmUWnK--_&quot;</span>
1818
}
1919
arangosh&gt; db.five.insert({ <span class="hljs-attr">name</span> : <span class="hljs-string">&quot;four&quot;</span> });
2020
{
2121
<span class="hljs-string">&quot;_id&quot;</span> : <span class="hljs-string">&quot;five/116&quot;</span>,
2222
<span class="hljs-string">&quot;_key&quot;</span> : <span class="hljs-string">&quot;116&quot;</span>,
23-
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejlqxNC---&quot;</span>
23+
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejmUWnK--A&quot;</span>
2424
}
2525
arangosh&gt; db.five.insert({ <span class="hljs-attr">name</span> : <span class="hljs-string">&quot;five&quot;</span> });
2626
{
2727
<span class="hljs-string">&quot;_id&quot;</span> : <span class="hljs-string">&quot;five/118&quot;</span>,
2828
<span class="hljs-string">&quot;_key&quot;</span> : <span class="hljs-string">&quot;118&quot;</span>,
29-
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejlqxNC--_&quot;</span>
29+
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejmUWnK--B&quot;</span>
3030
}
3131
arangosh&gt; db.five.all().toArray();
3232
[
3333
{
3434
<span class="hljs-string">&quot;_key&quot;</span> : <span class="hljs-string">&quot;110&quot;</span>,
3535
<span class="hljs-string">&quot;_id&quot;</span> : <span class="hljs-string">&quot;five/110&quot;</span>,
36-
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejlqxN----&quot;</span>,
36+
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejmUWnG--_&quot;</span>,
3737
<span class="hljs-string">&quot;name&quot;</span> : <span class="hljs-string">&quot;one&quot;</span>
3838
},
3939
{
4040
<span class="hljs-string">&quot;_key&quot;</span> : <span class="hljs-string">&quot;112&quot;</span>,
4141
<span class="hljs-string">&quot;_id&quot;</span> : <span class="hljs-string">&quot;five/112&quot;</span>,
42-
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejlqxN---_&quot;</span>,
42+
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejmUWnK---&quot;</span>,
4343
<span class="hljs-string">&quot;name&quot;</span> : <span class="hljs-string">&quot;two&quot;</span>
4444
},
4545
{
4646
<span class="hljs-string">&quot;_key&quot;</span> : <span class="hljs-string">&quot;114&quot;</span>,
4747
<span class="hljs-string">&quot;_id&quot;</span> : <span class="hljs-string">&quot;five/114&quot;</span>,
48-
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejlqxN---A&quot;</span>,
48+
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejmUWnK--_&quot;</span>,
4949
<span class="hljs-string">&quot;name&quot;</span> : <span class="hljs-string">&quot;three&quot;</span>
5050
},
5151
{
5252
<span class="hljs-string">&quot;_key&quot;</span> : <span class="hljs-string">&quot;116&quot;</span>,
5353
<span class="hljs-string">&quot;_id&quot;</span> : <span class="hljs-string">&quot;five/116&quot;</span>,
54-
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejlqxNC---&quot;</span>,
54+
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejmUWnK--A&quot;</span>,
5555
<span class="hljs-string">&quot;name&quot;</span> : <span class="hljs-string">&quot;four&quot;</span>
5656
},
5757
{
5858
<span class="hljs-string">&quot;_key&quot;</span> : <span class="hljs-string">&quot;118&quot;</span>,
5959
<span class="hljs-string">&quot;_id&quot;</span> : <span class="hljs-string">&quot;five/118&quot;</span>,
60-
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejlqxNC--_&quot;</span>,
60+
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejmUWnK--B&quot;</span>,
6161
<span class="hljs-string">&quot;name&quot;</span> : <span class="hljs-string">&quot;five&quot;</span>
6262
}
6363
]

3.10/generated/Examples/002_collectionAllNext.generated

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,44 +2,44 @@ arangosh&gt; db.five.insert({ <span class="hljs-attr">name</span> : <span class=
22
{
33
<span class="hljs-string">&quot;_id&quot;</span> : <span class="hljs-string">&quot;five/130&quot;</span>,
44
<span class="hljs-string">&quot;_key&quot;</span> : <span class="hljs-string">&quot;130&quot;</span>,
5-
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejlqxNy--_&quot;</span>
5+
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejmUWo---_&quot;</span>
66
}
77
arangosh&gt; db.five.insert({ <span class="hljs-attr">name</span> : <span class="hljs-string">&quot;two&quot;</span> });
88
{
99
<span class="hljs-string">&quot;_id&quot;</span> : <span class="hljs-string">&quot;five/132&quot;</span>,
1010
<span class="hljs-string">&quot;_key&quot;</span> : <span class="hljs-string">&quot;132&quot;</span>,
11-
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejlqxNy--A&quot;</span>
11+
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejmUWo---A&quot;</span>
1212
}
1313
arangosh&gt; db.five.insert({ <span class="hljs-attr">name</span> : <span class="hljs-string">&quot;three&quot;</span> });
1414
{
1515
<span class="hljs-string">&quot;_id&quot;</span> : <span class="hljs-string">&quot;five/134&quot;</span>,
1616
<span class="hljs-string">&quot;_key&quot;</span> : <span class="hljs-string">&quot;134&quot;</span>,
17-
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejlqxN2---&quot;</span>
17+
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejmUWo---B&quot;</span>
1818
}
1919
arangosh&gt; db.five.insert({ <span class="hljs-attr">name</span> : <span class="hljs-string">&quot;four&quot;</span> });
2020
{
2121
<span class="hljs-string">&quot;_id&quot;</span> : <span class="hljs-string">&quot;five/136&quot;</span>,
2222
<span class="hljs-string">&quot;_key&quot;</span> : <span class="hljs-string">&quot;136&quot;</span>,
23-
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejlqxN2--_&quot;</span>
23+
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejmUWo---C&quot;</span>
2424
}
2525
arangosh&gt; db.five.insert({ <span class="hljs-attr">name</span> : <span class="hljs-string">&quot;five&quot;</span> });
2626
{
2727
<span class="hljs-string">&quot;_id&quot;</span> : <span class="hljs-string">&quot;five/138&quot;</span>,
2828
<span class="hljs-string">&quot;_key&quot;</span> : <span class="hljs-string">&quot;138&quot;</span>,
29-
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejlqxN2--A&quot;</span>
29+
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejmUWo---D&quot;</span>
3030
}
3131
arangosh&gt; db.five.all().limit(<span class="hljs-number">2</span>).toArray();
3232
[
3333
{
3434
<span class="hljs-string">&quot;_key&quot;</span> : <span class="hljs-string">&quot;130&quot;</span>,
3535
<span class="hljs-string">&quot;_id&quot;</span> : <span class="hljs-string">&quot;five/130&quot;</span>,
36-
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejlqxNy--_&quot;</span>,
36+
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejmUWo---_&quot;</span>,
3737
<span class="hljs-string">&quot;name&quot;</span> : <span class="hljs-string">&quot;one&quot;</span>
3838
},
3939
{
4040
<span class="hljs-string">&quot;_key&quot;</span> : <span class="hljs-string">&quot;132&quot;</span>,
4141
<span class="hljs-string">&quot;_id&quot;</span> : <span class="hljs-string">&quot;five/132&quot;</span>,
42-
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejlqxNy--A&quot;</span>,
42+
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejmUWo---A&quot;</span>,
4343
<span class="hljs-string">&quot;name&quot;</span> : <span class="hljs-string">&quot;two&quot;</span>
4444
}
4545
]

3.10/generated/Examples/003_collectionByExample.generated

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,38 +2,38 @@ arangosh&gt; db.users.insert({ <span class="hljs-attr">name</span>: <span class=
22
{
33
<span class="hljs-string">&quot;_id&quot;</span> : <span class="hljs-string">&quot;users/150&quot;</span>,
44
<span class="hljs-string">&quot;_key&quot;</span> : <span class="hljs-string">&quot;150&quot;</span>,
5-
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejlqxOC--_&quot;</span>
5+
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejmUWoO--_&quot;</span>
66
}
77
arangosh&gt; db.users.insert({ <span class="hljs-attr">name</span>: <span class="hljs-string">&quot;Helmut&quot;</span> });
88
{
99
<span class="hljs-string">&quot;_id&quot;</span> : <span class="hljs-string">&quot;users/152&quot;</span>,
1010
<span class="hljs-string">&quot;_key&quot;</span> : <span class="hljs-string">&quot;152&quot;</span>,
11-
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejlqxOG---&quot;</span>
11+
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejmUWoO--A&quot;</span>
1212
}
1313
arangosh&gt; db.users.insert({ <span class="hljs-attr">name</span>: <span class="hljs-string">&quot;Angela&quot;</span> });
1414
{
1515
<span class="hljs-string">&quot;_id&quot;</span> : <span class="hljs-string">&quot;users/154&quot;</span>,
1616
<span class="hljs-string">&quot;_key&quot;</span> : <span class="hljs-string">&quot;154&quot;</span>,
17-
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejlqxOG--_&quot;</span>
17+
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejmUWoO--B&quot;</span>
1818
}
1919
arangosh&gt; db.users.all().toArray();
2020
[
2121
{
2222
<span class="hljs-string">&quot;_key&quot;</span> : <span class="hljs-string">&quot;150&quot;</span>,
2323
<span class="hljs-string">&quot;_id&quot;</span> : <span class="hljs-string">&quot;users/150&quot;</span>,
24-
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejlqxOC--_&quot;</span>,
24+
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejmUWoO--_&quot;</span>,
2525
<span class="hljs-string">&quot;name&quot;</span> : <span class="hljs-string">&quot;Gerhard&quot;</span>
2626
},
2727
{
2828
<span class="hljs-string">&quot;_key&quot;</span> : <span class="hljs-string">&quot;152&quot;</span>,
2929
<span class="hljs-string">&quot;_id&quot;</span> : <span class="hljs-string">&quot;users/152&quot;</span>,
30-
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejlqxOG---&quot;</span>,
30+
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejmUWoO--A&quot;</span>,
3131
<span class="hljs-string">&quot;name&quot;</span> : <span class="hljs-string">&quot;Helmut&quot;</span>
3232
},
3333
{
3434
<span class="hljs-string">&quot;_key&quot;</span> : <span class="hljs-string">&quot;154&quot;</span>,
3535
<span class="hljs-string">&quot;_id&quot;</span> : <span class="hljs-string">&quot;users/154&quot;</span>,
36-
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejlqxOG--_&quot;</span>,
36+
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejmUWoO--B&quot;</span>,
3737
<span class="hljs-string">&quot;name&quot;</span> : <span class="hljs-string">&quot;Angela&quot;</span>
3838
}
3939
]
@@ -44,7 +44,7 @@ arangosh&gt; db.users.byExample({ <span class="hljs-string">&quot;name&quot;</sp
4444
{
4545
<span class="hljs-string">&quot;_key&quot;</span> : <span class="hljs-string">&quot;150&quot;</span>,
4646
<span class="hljs-string">&quot;_id&quot;</span> : <span class="hljs-string">&quot;users/150&quot;</span>,
47-
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejlqxOC--_&quot;</span>,
47+
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejmUWoO--_&quot;</span>,
4848
<span class="hljs-string">&quot;name&quot;</span> : <span class="hljs-string">&quot;Gerhard&quot;</span>
4949
}
5050
]

3.10/generated/Examples/004_collectionByExampleNext.generated

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,25 @@ arangosh&gt; db.users.insert({ <span class="hljs-attr">name</span>: <span class=
22
{
33
<span class="hljs-string">&quot;_id&quot;</span> : <span class="hljs-string">&quot;users/172&quot;</span>,
44
<span class="hljs-string">&quot;_key&quot;</span> : <span class="hljs-string">&quot;172&quot;</span>,
5-
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejlqxOW--_&quot;</span>
5+
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejmUWoi--_&quot;</span>
66
}
77
arangosh&gt; db.users.insert({ <span class="hljs-attr">name</span>: <span class="hljs-string">&quot;Helmut&quot;</span> });
88
{
99
<span class="hljs-string">&quot;_id&quot;</span> : <span class="hljs-string">&quot;users/174&quot;</span>,
1010
<span class="hljs-string">&quot;_key&quot;</span> : <span class="hljs-string">&quot;174&quot;</span>,
11-
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejlqxOW--A&quot;</span>
11+
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejmUWoi--A&quot;</span>
1212
}
1313
arangosh&gt; db.users.insert({ <span class="hljs-attr">name</span>: <span class="hljs-string">&quot;Angela&quot;</span> });
1414
{
1515
<span class="hljs-string">&quot;_id&quot;</span> : <span class="hljs-string">&quot;users/176&quot;</span>,
1616
<span class="hljs-string">&quot;_key&quot;</span> : <span class="hljs-string">&quot;176&quot;</span>,
17-
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejlqxOW--B&quot;</span>
17+
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejmUWom---&quot;</span>
1818
}
1919
arangosh&gt; <span class="hljs-keyword">var</span> a = db.users.byExample( {<span class="hljs-string">&quot;name&quot;</span> : <span class="hljs-string">&quot;Angela&quot;</span> } );
2020
arangosh&gt; <span class="hljs-keyword">while</span> (a.hasNext()) print(a.next());
2121
{
2222
<span class="hljs-string">&quot;_key&quot;</span> : <span class="hljs-string">&quot;176&quot;</span>,
2323
<span class="hljs-string">&quot;_id&quot;</span> : <span class="hljs-string">&quot;users/176&quot;</span>,
24-
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejlqxOW--B&quot;</span>,
24+
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejmUWom---&quot;</span>,
2525
<span class="hljs-string">&quot;name&quot;</span> : <span class="hljs-string">&quot;Angela&quot;</span>
2626
}

3.10/generated/Examples/011_documentsCollectionReplaceByExample.generated

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ arangosh&gt; db.example.insert({ <span class="hljs-attr">Hello</span> : <span cl
22
{
33
<span class="hljs-string">&quot;_id&quot;</span> : <span class="hljs-string">&quot;example/198&quot;</span>,
44
<span class="hljs-string">&quot;_key&quot;</span> : <span class="hljs-string">&quot;198&quot;</span>,
5-
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejlqxOu--_&quot;</span>
5+
<span class="hljs-string">&quot;_rev&quot;</span> : <span class="hljs-string">&quot;_ejmUWo6--_&quot;</span>
66
}
77
arangosh&gt; db.example.replaceByExample({ <span class="hljs-attr">Hello</span>: <span class="hljs-string">&quot;world&quot;</span> }, {<span class="hljs-attr">Hello</span>: <span class="hljs-string">&quot;mars&quot;</span>}, <span class="hljs-literal">false</span>, <span class="hljs-number">5</span>);
88
<span class="hljs-number">1</span>

0 commit comments

Comments
 (0)