@@ -201,6 +201,63 @@ The previously fixed limit of 128 MiB for [Stream Transactions](../../develop/tr
201
201
can now be configured with the new ` --transaction.streaming-max-transaction-size `
202
202
startup option. The default value remains 128 MiB.
203
203
204
+ ### Transparent compression of requests and responses between ArangoDB servers and client tools
205
+
206
+ The following startup options have been added to all
207
+ [ client tools] ( ../../components/tools/_index.md ) (except the ArangoDB Starter)
208
+ and can be used to enable transparent compression of the data that is sent
209
+ between a client tool and an ArangoDB server:
210
+
211
+ - ` --compress-transfer `
212
+ - ` --compress-request-threshold `
213
+
214
+ If the ` --compress-transfer ` option is set to ` true ` , the client tool adds an
215
+ extra ` Accept-Encoding: deflate ` HTTP header to all requests made to the server.
216
+ This allows the server to compress its responses before sending them back to the
217
+ client tool.
218
+
219
+ The client also transparently compresses its own requests to the server if the
220
+ size of the request body (in bytes) is at least the value of the
221
+ ` --compress-request-threshold ` startup option. The default value is ` 0 ` , which
222
+ disables the compression of the request bodies in the client tool. To opt in to
223
+ sending compressed data, set the option to a value greater than ` 0 ` .
224
+ The client tool adds a ` Content-Encoding: deflate ` HTTP header to the request
225
+ if the request body is compressed using the deflate compression algorithm.
226
+
227
+ The following options have been added to the ArangoDB server:
228
+
229
+ - ` --http.compress-response-threshold `
230
+ - ` --http.handle-content-encoding-for-unauthenticated-requests `
231
+
232
+ The value of the ` --http.compress-response-threshold ` startup option specifies
233
+ the threshold value (in bytes) from which on response bodies are sent out
234
+ compressed by the server. The default value is ` 0 ` , which disables sending out
235
+ compressed response bodies. To enable compression, the option should be set to a
236
+ value greater than ` 0 ` . The selected value should be large enough to justify the
237
+ compression overhead. Regardless of the value of this option, the client has to
238
+ signal that it expects a compressed response body by sending an
239
+ ` Accept-Encoding: gzip ` or ` Accept-Encoding: deflate ` HTTP header with its request.
240
+ If that header is missing, no response compression is performed by the server.
241
+
242
+ If the ` --http.handle-content-encoding-for-unauthenticated-requests `
243
+ startup option is set to ` true ` , the ArangoDB server automatically decompresses
244
+ incoming HTTP requests with ` Content-Encodings: gzip ` or
245
+ ` Content-Encoding: deflate ` HTTP header even if the request is not authenticated.
246
+ If the option is set to ` false ` , any unauthenticated request that has a
247
+ ` Content-Encoding ` header set is rejected. This is the default setting.
248
+
249
+ {{< info >}}
250
+ As compression uses CPU cycles, it should be activated only when the network
251
+ communication between the server and clients is slow and there is enough CPU
252
+ capacity left for the extra compression/decompression work.
253
+
254
+ Furthermore, requests and responses should only be compressed when they exceed a
255
+ certain minimum size, e.g. 250 bytes.
256
+
257
+ Request and response compression is only supported for responses that use the
258
+ HTTP/1.1 or HTTP/2 protocol, and not when using the VelocyStream (VST) protocol.
259
+ {{< /info >}}
260
+
204
261
### LZ4 compression for values in the in-memory edge cache
205
262
206
263
<small >Introduced in: v3.11.2</small >
@@ -309,16 +366,6 @@ the queue might grow and eventually overflow.
309
366
You can configure the upper bound of the queue with this option. If the queue is
310
367
full, log entries are written synchronously until the queue has space again.
311
368
312
- ## Client tools
313
-
314
- ### arangodump
315
-
316
- _ arangodump_ now supports a ` --ignore-collection ` startup option that you can
317
- specify multiple times to exclude the specified collections from a dump.
318
-
319
- It cannot be used together with the existing ` --collection ` option for specifying
320
- collections to include.
321
-
322
369
## Miscellaneous changes
323
370
324
371
### Active AQL query cursors metric
@@ -445,6 +492,14 @@ The following metric as been added:
445
492
446
493
### arangodump
447
494
495
+ ### ` --ignore-collection ` startup option
496
+
497
+ _ arangodump_ now supports a ` --ignore-collection ` startup option that you can
498
+ specify multiple times to exclude the specified collections from a dump.
499
+
500
+ It cannot be used together with the existing ` --collection ` option for specifying
501
+ collections to include.
502
+
448
503
#### Improved dump performance and size
449
504
450
505
From version 3.12 onward, _ arangodump_ has extended parallelization capabilities
@@ -535,5 +590,12 @@ The following file extensions are automatically detected:
535
590
If the file extension doesn't correspond to any of the mentioned types, the
536
591
import defaults to the ` json ` format.
537
592
593
+ ### Transparent compression of requests and responses
594
+
595
+ Startup options to enable transparent compression of the data that is sent
596
+ between a client tool and the ArangoDB server have been added. See the
597
+ [ Server options] ( #transparent-compression-of-requests-and-responses-between-arangodb-servers-and-client-tools )
598
+ section above that includes a description of the added client tool options.
599
+
538
600
## Internal changes
539
601
0 commit comments