Settings
ArcadeDB allows changing settings at JVM (server or embedded) and per database level.
| Server/Embedded (JVM) Level | Database Level |
|---|---|
Those settings are valid for all the databases open in the same Server or JVM when run embedded. If defined, they override the default value (look at the table below to see the default values). They are used only if a database does not override them. Such settings are not saved, so you need to set them everytime. |
Database level settings are stored in the database and override the Server/Embedded (JVM) settings if present. You can change these settings via SQL or API when run embedded. |
JVM startup (server/embedded only)
All the settings modified at JVM startup are not persistent and need to be set everytime you’re running ArcadeDB server or your embedded application.
If you’re updating a setting at JVM level, prefix the setting name with arcadedb. by using this syntax:
$ java ... -Darcadedb.<name>=<value> ...
Where <name> is the name of the setting and <value> the value you want to override.
Example to change the server mode from development (default) to production:
$ java ... -Darcadedb.server.mode=production ...
Example to increase the default page size for buckets to 1 MB:
$ java ... -Darcadedb.bucketDefaultPageSize=1048576 ...
Alternatively, these settings can be set via the environment variable ARCADEDB_SETTINGS, which the
launcher scripts (bin/server.sh, bin/console.sh and friends) put on the JVM command line:
ARCADEDB_SETTINGS="-Darcadedb.server.rootPassword=playwithdata" bin/server.sh
JAVA_OPTS is passed through as well, but it is meant for JVM flags: keeping settings in
ARCADEDB_SETTINGS means overriding one variable never discards the other.
SQL (Database Level)
All the changes executed via SQL Alter Database command are relative to the current database only and are persistent. Here is an example to increase the default page size for buckets to 1 MB:
ALTER DATABASE `arcadedb.bucketDefaultPageSize` 1048576
The current settings can be listed from SQL using:
SELECT expand(settings) FROM schema:database
Programmatically (Server/Embedded and Database levels)
You can access to the database configuration with database.getConfiguration() to read and write per database settings.
Example to increase the default page size for all the buckets to 1 MB on the current database:
database.getConfiguration().setValue(GlobalConfiguration.BUCKET_DEFAULT_PAGE_SIZE, 1048576);
To change a setting at Server/Embedded (JVM) level, set the value in the GlobalConfiguration enum.
Example to increase the default page size for buckets to 1 MB for all the databases open in the current JVM (server/embedded):
GlobalConfiguration.BUCKET_DEFAULT_PAGE_SIZE.setValue(1048576);
Available settings by scope (in alphabetic order):
The tables that follow contains all the available settings in ArcadeDB separated by scope:
-
JVM, as the settings applied at the JVM level, so to both clients and servers -
SERVER, as the settings that only apply to the ArcadeDB Server. If you’re embedding a server in your Java application you can use these settings -
DATABASEare all the settings that can be saved in the database configuration and are restored once the database is open
JVM
| Name | Description | Type | Default Value |
|---|---|---|---|
|
Dumps the configuration at startup |
Boolean |
false |
|
Dumps the metrics at startup, shutdown and every configurable amount of time (in seconds) |
Long |
0 |
|
Number of bits reserved for the bucketId when packing a RID into the numeric value returned by the Cypher |
Integer |
16 |
|
Specify the preferred profile among: default, high-performance, low-ram, low-cpu |
String |
default |
|
Tells if it is running in test mode. This enables the calling of callbacks for testing purpose |
Boolean |
false |
Available Plugins
The following plugins are available for ArcadeDB Server:
-
MongoDB(com.arcadedb.mongo.MongoDBProtocolPlugin) - Implements the MongoDB wire protocol -
Postgres(com.arcadedb.postgres.PostgresProtocolPlugin) - Implements the Postgres wire protocol -
Redis(com.arcadedb.redis.RedisProtocolPlugin) - Implements the Redis wire protocol -
Http(com.arcadedb.server.http.HttpServerPlugin) - Implements the HTTP/REST API -
gRPC(com.arcadedb.server.grpc.GrpcServerPlugin) - Implements the gRPC API. Bundled in thefulldistribution but not started until it is added toserver.plugins(see gRPC settings)
SERVER
| Name | Description | Type | Default Value |
|---|---|---|---|
|
State of backup lock. Disable for increased performance of massive insertions. |
Boolean |
True |
|
AppendEntries batch byte limit for replication (e.g. '4MB'). Since v26.4.1 |
String |
4MB |
|
Maximum number of Raft log entries per AppendEntries batch. Bounds the per-batch in-memory footprint on the follower during catch-up resync, where many batches may queue before the state machine can apply them. Lowering this value reduces peak heap pressure on followers catching up from a far-behind state. The byte limit ( |
Integer |
64 |
|
Number of retries performed by RemoteDatabase after receiving HTTP 503 NeedRetryException during an election. Since v26.4.1 |
Integer |
3 |
|
Delay in ms between RemoteDatabase election retries. Since v26.4.1 |
Long |
2000 |
|
When true (default), at first cluster formation peers exchange |
Boolean |
true |
|
Maximum time in ms the bootstrap leader waits for every configured peer to report its bootstrap state before proceeding. Since v26.5.1 |
Long |
120000 |
|
Cluster name. Useful in case of multiple clusters in the same network |
String |
arcadedb |
|
Shared secret for inter-node authentication. If empty, auto-generated at first startup and persisted under |
String |
|
|
Path to a file containing the shared secret for inter-node authentication. Read only when |
String |
null |
|
Minimum Raft election timeout in ms. Increase for high-latency WAN clusters. Since v26.4.1 |
Integer |
2000 |
|
Maximum Raft election timeout in ms. Increase for high-latency WAN clusters. Since v26.4.1 |
Integer |
5000 |
|
True if HA is enabled for the current server |
Boolean |
false |
|
Number of automatic retries in case of IO errors with a specific server. 0 (default) is to retry against all the configured servers |
Integer |
0 |
|
Rate-limiting interval in ms for DNS re-resolution in the gRPC peer address allowlist filter. Since v26.4.1 |
Long |
30000 |
|
gRPC flow control window size in bytes for Raft AppendEntries traffic. Larger values help catch-up replication after partitions. Since v26.4.1 |
Long |
4194304 |
|
Maximum number of Raft log entries to batch in a single group commit flush. Higher values improve throughput under concurrent load. Since v26.4.1 |
Integer |
500 |
|
Timeout in ms waiting for space in the group-commit queue before throwing ReplicationQueueFullException. Since v26.4.1 |
Integer |
100 |
|
Maximum pending transactions allowed in the Raft group-commit queue. When full, the server sheds load by throwing ReplicationQueueFullException (NeedRetryException). Since v26.4.1 |
Integer |
10000 |
|
Interval in ms for the Raft health monitor to check for CLOSED/EXCEPTION state and auto-recover. 0 disables. Since v26.4.1 |
Long |
3000 |
|
Maximum number of entries in the HTTP idempotency cache. Since v26.4.1 |
Integer |
10000 |
|
Time-to-live in ms for entries in the HTTP idempotency cache. Since v26.4.1 |
Long |
60000 |
|
The server is running inside Kubernetes (enables auto-join on scale-up) |
Boolean |
false |
|
When running inside Kubernetes use this suffix to reach the other servers. Example: arcadedb.default.svc.cluster.local |
String |
|
|
Number of Raft log entries retained after a snapshot as a buffer for slightly lagging followers. Lower values free disk faster but raise the chance a slow follower needs a full snapshot resync. Since v26.4.1 |
Integer |
1024 |
|
When true, deletes old Raft log segments after each snapshot to bound disk growth. Set to false to retain full log history for debugging/auditing. Since v26.4.1 |
Boolean |
true |
|
Maximum Raft log segment size (e.g. '64MB', '128MB'). Since v26.4.1 |
String |
64MB |
|
Verbose HA logging: 0=off, 1=basic (elections), 2=detailed (replication), 3=trace (every state machine apply). Since v26.4.1 |
Integer |
0 |
|
Reject inbound Raft gRPC connections whose remote address does not resolve to a host in |
Boolean |
true |
|
Startup grace window in ms during which the gRPC peer allowlist fails OPEN (accepts and logs a warning) for an unmatched address, as long as it has never resolved every host in |
Long |
60000 |
|
How long in ms the gRPC peer allowlist keeps the last successfully-resolved IPs of a peer host when a later DNS re-resolution of that host fails. Bridges transient DNS outages and pod-IP churn so a peer that resolved moments ago is not evicted by a momentary lookup failure. 0 disables stickiness. Since v26.6.1 |
Long |
300000 |
|
Time in ms a follower must stay continuously unreachable before the leader resets that one follower’s replication gRPC channel, so the next send re-resolves DNS and reconnects. Recovers a leader appender stuck on a stale DNS result after a follower restarts with a new address (e.g. a Kubernetes pod-IP change). Retried once per interval, up to 5 attempts, then the leader gives up or escalates (see |
Long |
60000 |
|
When the |
Boolean |
true |
|
Time in ms since the last successful RPC to a follower before the leader reports it as unreachable in the resync narrative. Also the "unreachable" signal |
Long |
10000 |
|
Connect timeout in ms for the leader proxy (replica-to-leader forwarding). Since v26.4.1 |
Long |
5000 |
|
Maximum request body size in bytes the leader proxy will buffer and forward. Since v26.4.1 |
Integer |
16777216 |
|
Read timeout in ms for the leader proxy. Covers long-running queries forwarded from a replica. Since v26.4.1 |
Long |
30000 |
|
Write quorum: |
String |
majority |
|
Timeout in ms waiting for the quorum acknowledgment |
Long |
10000 |
|
TCP/IP port for Raft gRPC communication. Used as the default when HA_SERVER_LIST entries do not specify an explicit port. Since v26.4.1 |
Integer |
2434 |
|
If true, the Raft storage directory is preserved across restarts, enabling node rejoin by replaying its persisted log instead of a full snapshot resync. Defaults to |
Boolean |
true |
|
Parent directory under which the per-node Raft storage sub-folders ( |
String |
|
|
Maximum consecutive Ratis restart attempts by the health monitor before the server shuts down for cluster-level recovery. Since v26.4.1 |
Integer |
10 |
|
Default read consistency for replica reads: |
String |
read_your_writes |
|
Maximum channel chunk size for replicating messages between servers |
Integer |
16777216 |
|
Raft log index gap threshold for replication lag warnings. 0 to disable. Since v26.4.1 |
Long |
1000 |
|
Servers in the cluster, comma-separated. Each entry uses the readable object form |
String |
|
|
Node role in the cluster: |
String |
any |
|
Read timeout in ms for downloading a database snapshot from the leader during follower resync. Since v26.4.1 |
Integer |
300000 |
|
Maximum acceptable gap between the snapshot index and persisted applied index before triggering a snapshot download. Since v26.4.1 |
Long |
10 |
|
Maximum retry attempts for snapshot download from the leader during snapshot installation. Since v26.4.1 |
Integer |
3 |
|
Base delay in ms for exponential backoff between snapshot download retries. Actual delay is baseMs * 2^attempt. Since v26.4.1 |
Long |
5000 |
|
Maximum number of concurrent snapshot downloads served by the leader. Requests over this limit receive HTTP 503. Since v26.4.1 |
Integer |
2 |
|
Maximum uncompressed size in bytes for a single entry in a snapshot ZIP. Decompression-bomb guard. Since v26.4.1 |
Long |
10737418240 |
|
Number of Raft log entries after which the leader automatically takes a snapshot. Since v26.4.1 |
Long |
100000 |
|
Delay in ms before the snapshot-gap watchdog triggers a download. Floored at 4x |
Long |
30000 |
|
Timeout in ms for writing a snapshot to a follower. If the transfer stalls beyond this duration, the connection is force-closed. Since v26.4.1 |
Long |
300000 |
|
How long in ms a replica must stay continuously STALLED — its |
Long |
60000 |
|
After a phase-2 replication failure, step-down is attempted first. If every step-down fails and this flag is true, the JVM exits so an orchestrator can restart. Default is false: the server keeps running and logs CRITICAL. Since v26.4.1 |
Boolean |
false |
|
Raft log write buffer size (e.g. '8MB'). Must be at least |
String |
8MB |
|
Number of automatic retries in case of IO errors with a specific server. If replica servers are configured, look also at |
Integer |
0 |
|
TCP/IP Socket timeout (in ms) |
Integer |
30000 |
|
Maximum number of connections a binary wire-protocol listener (Postgres, Redis, BOLT) may hold in the phase before authentication. Each accepted socket costs one thread and one file descriptor before the client has proved who it is, and |
Integer |
500 |
|
Enable TCP keepalive (SO_KEEPALIVE) on every wire-protocol socket. The Postgres and Redis executors drop the socket read timeout to infinite once a connection is authenticated, because an authenticated client legitimately holds an idle connection open, and those protocols carry no application-level heartbeat. With keepalive off, a peer that dies without a FIN/RST (host crash, silent partition) leaves the server thread blocked in a read forever, leaking a thread and a file descriptor per event. Keepalive lets the OS discover the dead peer and fail the read. Since v26.9.1 |
Boolean |
true |
|
Seconds an authenticated connection may sit idle before the OS sends the first TCP keepalive probe. Only applied where the JDK and the platform expose TCP_KEEPIDLE (Linux and macOS do); elsewhere the system-wide default applies, typically 2 hours. 0 leaves the system default in place. Since v26.9.1 |
Integer |
120 |
|
Seconds between TCP keepalive probes once the first one has gone unanswered. 0 leaves the system default in place. Since v26.9.1 |
Integer |
15 |
|
Number of unanswered TCP keepalive probes after which the connection is declared dead. With the defaults a dead peer is detected about 3 minutes after the connection goes idle. 0 leaves the system default in place. Since v26.9.1 |
Integer |
4 |
|
Path where the SSL certificates are stored |
String |
null |
|
Password to open the SSL key store |
String |
null |
|
Path to the SSL trust store |
String |
null |
|
Password to open the SSL trust store |
String |
null |
|
Use SSL for client connections |
Boolean |
false |
|
Enables the printing of Postgres protocol to the console. Default is false |
Boolean |
false |
|
TCP/IP host name used for incoming connections for Postgres plugin. Default is '0.0.0.0' |
String |
0.0.0.0 |
|
TCP/IP port number used for incoming connections for Postgres plugin. Default is 5432 |
Integer |
5432 |
|
Default database name for Redis protocol connections. If set, RAM commands (SET, GET, etc.) will use this database’s globalVariables. Empty means no default (requires SELECT command or key prefix) |
String |
|
|
TCP/IP host name used for incoming connections for Redis plugin. Default is '0.0.0.0' |
String |
0.0.0.0 |
|
TCP/IP port number used for incoming connections for Redis plugin. Default is 6379 |
Integer |
6379 |
|
TCP/IP host name used for incoming connections for Mongo plugin. Default is '0.0.0.0' |
String |
0.0.0.0 |
|
TCP/IP port number used for incoming connections for Mongo plugin. Default is 27017 |
Integer |
27017 |
|
Open all the available databases at server startup |
Boolean |
true |
|
Directory containing the database |
String |
${arcadedb.server.rootPath}/databases |
|
Directory containing the backups |
String |
${arcadedb.server.rootPath}/backups |
|
Directory where the server writes its log files. Useful on read-only root filesystems (e.g. Kubernetes |
String |
./log |
|
The default databases created when the server starts. The format is |
String |
|
|
The default mode to load pre-existing databases. The value must match a com.arcadedb.engine.PaginatedFile.MODE enum value: {READ_ONLY, READ_WRITE}Databases which are newly created will always be opened READ_WRITE. |
String |
READ_WRITE |
|
TCP/IP host name used for incoming HTTP connections |
String |
0.0.0.0 |
|
TCP/IP port number used for incoming HTTP connections. Specify a single port or a range |
String |
2480-2489 |
|
TCP/IP port number used for incoming HTTPS connections. Specify a single port or a range |
String |
2490-2499 |
|
Number of threads to use in the HTTP server |
Integer |
2 per core |
|
Timeout in seconds for a HTTP transaction to expire. This timeout is computed from the latest command against the transaction |
Long |
30 |
|
Maximum size in bytes for HTTP request body content. Set to -1 for unlimited size. Default is 100MB |
Integer |
100 |
|
Timeout in seconds for a HTTP authentication session to expire. This timeout is computed from the latest request using the auth token. See Token-Based Authentication. (Available since v26.2.1) |
Long |
1800 |
|
Maximum number of concurrent HTTP authentication sessions the server keeps in memory. Once reached, a further |
Integer |
10000 |
|
Maximum number of concurrent HTTP authentication sessions a single user may hold. Beyond it, that user’s oldest session is invalidated to make room for the new one, so a login loop recycles only its own sessions and never affects other users. Set to |
Integer |
100 |
|
Server mode between 'development', 'test' and 'production' |
String |
development |
|
Server name |
String |
ArcadeDB_0 |
|
Server plugins to load, see available plugins. Format as comma separated list of: |
String |
|
|
Password for root user to use at first startup of the server. Set this to avoid asking the password to the user |
String |
null |
|
Path to file with password for root user to use at first startup of the server. Set this to avoid asking the password to the user |
String |
null |
|
Root path in the file system where the server is looking for files. By default is the current directory |
String |
null |
|
Default encryption algorithm used for passwords hashing |
String |
PBKDF2WithHmacSHA256 |
|
Time in milliseconds of checking if the server security files have been modified to be reloaded |
Integer |
5000 |
|
Cache size of hashed salt passwords. The cache works as LRU. Use 0 to disable the cache |
Integer |
64 |
|
Number of iterations to generate the salt or user password. Changing this setting does not affect stored passwords |
Integer |
65536 |
|
Size of the queue used as a buffer for unserviced database change events. |
Integer |
1000 |
|
Maximum number of bytes of change-stream frames that may be outstanding towards a single WebSocket subscriber before it is evicted. Frames are sent asynchronously, so a subscriber that never reads accumulates them in the server’s send buffer: the producer-side queue is bounded but a slow consumer is charged to the server’s heap, not to its own. Past this cap the subscription is dropped and the channel closed, which is what the client would experience anyway. 0 disables the cap. Since v26.9.1 |
Long |
16777216 |
|
When true and HA is active, |
Boolean |
false |
|
When |
Long |
100 |
|
Console log format: |
String |
text |
|
In text log mode, append |
Boolean |
false |
|
Hard ceiling on the number of rows the gRPC unary |
Integer |
100000 |
|
Maximum number of rows the gRPC |
Integer |
1000000 |
|
Maximum time in milliseconds a gRPC |
Long |
60000 |
|
True to enable metrics |
Boolean |
true |
|
True to enable metrics logging |
Boolean |
true |
|
Require authentication on the |
Boolean |
true |
|
Register an OTLP metrics registry alongside the |
Boolean |
false |
|
OTLP metrics export endpoint (gRPC), used when |
String |
|
|
Enable OpenTelemetry distributed tracing (requires the optional |
Boolean |
false |
|
OTLP trace export endpoint (gRPC). (Available since v26.7.1) |
String |
|
|
Parent-based trace sampling ratio in [0.0,1.0]. |
Float |
0.0 |
|
Force-enable the Studio web tool even when the server runs in |
Boolean |
false |
DATABASE
| Name | Description | Type | Default Value |
|---|---|---|---|
|
Queue implementation to use between 'standard' and 'fast'. 'standard' consumes less CPU than the 'fast' implementation, but it could be slower with high loads |
String |
standard |
|
Size of the total asynchronous operation queues (it is divided by the number of parallel threads in the pool) |
Integer |
1024 |
|
When the asynchronous queue is full at a certain percentage, back pressure is applied |
Integer |
0 |
|
Maximum number of operations to commit in batch by async thread |
Integer |
10240 |
|
Number of asynchronous worker threads. By default it is cores minus 1, but at least 1 |
Integer |
(machine dependent) |
|
Default page size in bytes for buckets. Default is 65536 |
Integer |
65536 |
|
Mode used to reuse space in pages. Use 'low' to have faster updates consuming more space on disk, |
String |
high |
|
Wipe out record content on delete. If enabled, assures deleted records cannot be analyzed by parsing the raw files and backups will be more compressed, but it also makes deletes a little bit slower |
Boolean |
true |
|
Default timeout for commands (in ms) |
Long |
0 |
|
Reduce warnings in commands to print in console only every X occurrences. Use 0 to disable warnings with commands |
Integer |
100 |
|
Timeout in ms to lock resources during commit |
Long |
5000 |
|
Maximum heap, in bytes, that a single |
Long |
64MB (auto-scaled) |
|
Max number of entries in the cypher statement cache. Use 0 to disable. Caching statements speeds up execution of the same cypher queries |
Integer |
1000 |
|
Allow LOAD CSV to access local files via |
Boolean |
true |
|
Root directory for LOAD CSV |
String |
(empty) |
|
Default date format using Java SimpleDateFormat syntax |
String |
yyyy-MM-dd |
|
Default date implementation to use on deserialization. By default java.util.Date is used, but the following are supported: java.util.Calendar, java.time.LocalDate |
Class |
class java.util.Date |
|
Default date time format using Java SimpleDateFormat syntax |
String |
yyyy-MM-dd HH:mm:ss |
|
Default datetime implementation to use on deserialization. By default java.util.Date is used, but the following are supported: java.util.Calendar, java.time.LocalDateTime, java.time.ZonedDateTime |
Class |
class java.util.Date |
|
When true, a |
Boolean |
false |
|
Never flushes pages on disk until the database closing |
Boolean |
false |
|
Percentage (0-100) of memory to free when Page RAM is full |
Integer |
50 |
|
When true, a Graph Analytical View (GAV/CSR) that is READY (with no pending overlay changes) when the database closes cleanly writes its CSR to disk alongside a freshness certificate (the database’s last committed transaction id at build time). If nothing was committed to the database between that close and the next open, the certificate still matches and the persisted CSR is reused as-is instead of being rebuilt by a full graph scan. Any commit in between invalidates the certificate and falls back to the previous behavior: an async rebuild triggered on open. Set to false to disable persisting the CSR file (e.g. to avoid its disk footprint or the extra write at close). See Graph OLAP Engine. Since v26.9.1 |
Boolean |
true |
|
Milliseconds |
Long |
0 |
|
At commit, when the only conflict on an edge-list page is concurrent in-chunk edge appends (which commute), re-apply the appends on top of the newer page version instead of failing the whole transaction with a retryable conflict. Removes the retry storm on super-node (hot vertex) edge insertion. See Super-Nodes. Since v26.7.2 |
Boolean |
true |
|
Size in bytes of the first chunk of a vertex’s edge list. Each further chunk doubles the previous one up to 8192, so the space a vertex allocates is the sum of that series - a smaller first chunk does not necessarily use less space, it just takes more chunks (each with its own header) to reach the same capacity. The best value follows the degree distribution: around 128 suits an average degree near 10, the default suits very sparse graphs, and above degree 100 the setting barely matters. Values below 32 are clamped. See Lightweight Edges. Since v26.8.1 |
Integer |
64 |
|
Approximate number of edges (per vertex, per direction) after which the vertex’s edge list is promoted to the striped super-node layout, spreading further appends over multiple files so concurrent insertions on the same hot vertex do not contend. Forward-incompatible on first use: promotion writes a new record type, so once any vertex promotes the database can no longer be opened by releases older than v26.8.1; promotion is one-way. Iteration order on promoted vertices is approximate (newest-generation-first) instead of strict reverse-insertion. 0 disables promotion entirely (databases stay fully readable by older releases). See Super-Nodes. Since v26.8.1 |
Integer |
4096 |
|
Number of stripes (separate edge-list files) a super-node’s edge list is spread over at promotion. The stripes are hosted in a per-type bucket pool of this many files, created once per type at its first promotion (types without super-nodes cost no files). Write parallelism saturates at the number of concurrent writers, so values beyond the CPU cores rarely help. Values below 2 disable promotion entirely. Recorded per vertex at promotion time. See Super-Nodes. Since v26.8.1 |
Integer |
16 |
|
Gremlin engine to use. By default the |
String |
auto |
|
Default timeout for gremlin commands (in ms) |
Long |
8000 |
|
Minimum number of mutable pages for an index to be schedule for automatic compaction. 0 = disabled |
Integer |
10 |
|
Maximum amount of RAM to use for index compaction, in MB |
Long |
300 |
|
Initial number of entries for page cache |
Integer |
65535 |
|
Maximum number of vectors to cache in memory during HNSW graph building. Higher values speed up construction but use more RAM. RAM usage = cacheSize × (dimensions × 4 + 64) bytes. 0 (the default) sizes it automatically: an index whose vectors live in the documents (no quantization, or PRODUCT) caches the whole set when it fits |
Integer |
0 |
|
Maximum share of the JVM heap the auto-sized graph-build cache may use. Only applies when |
Integer |
25 |
|
Maximum number of vectors kept in the per-index search cache. The cache is shared by every query on the index and survives across queries, so a working set that fits stays resident instead of being re-read from the documents (or from the quantized index pages) on every beam-search hop. RAM usage = cacheSize × (dimensions × 4 + 64) bytes. 0 (the default) sizes it automatically from the number of indexed vectors, capped by |
Integer |
0 |
|
Upper bound, as a percentage of the JVM heap currently available rather than of |
Integer |
25 |
|
Maximum number of vector locations to cache in memory per vector index. Set to -1 for unlimited. Each entry uses ~56 bytes. Recommended: 100000 for datasets with 1M+ vectors |
Integer |
-1 |
|
Maximum fraction of an index’s live vectors that a query’s RID allow-list may cover and still resolve the allow-list to its ordinals and score them directly, instead of paying for a |
Float |
0.2 |
|
The |
Float |
0.05 |
|
Number of mutations (inserts/updates/deletes) before rebuilding the HNSW graph index. Higher values reduce rebuild cost but may return slightly stale results. Recommended: 50-200 for read-heavy, 200-500 for write-heavy workloads |
Integer |
100 |
|
Fraction of the current graph size that must accumulate as pending mutations before the HNSW graph is rebuilt, on top of the absolute |
Float |
0.2 |
|
Ceiling on the threshold computed from |
Integer |
50000 |
|
How much work a query may spend scanning vectors written since the last graph rebuild, as a multiple of the work its graph search already does, before a rebuild is triggered to absorb them. Those vectors are answered by a straight scan, so that part of a query grows with how many are waiting while the graph search it supplements grows only with the logarithm of the index size: at the default |
Float |
1.0 |
|
Inactivity timeout in milliseconds before flushing buffered vectors and rebuilding the HNSW graph. When mutations exist but haven’t reached the rebuild threshold, a timer starts after the last mutation. On a graph under 1,000 vectors the rebuild is cheap and fires for any pending mutation count; on a larger graph it only fires once pending mutations reach at least 10% of the effective rebuild threshold, so a single stray insert does not force a full graph rebuild. The size compared against is the number of vectors the index holds, not the part of the graph the session has loaded, so an ingest-then-idle process that never queries is gated the same way. Set to 0 to disable. Recommended: 10000-30000 for low-volume ingestion |
Integer |
15000 |
|
Share of the currently available heap that an online vector graph rebuild’s estimated peak footprint may occupy before the rebuild is deferred instead of attempted. An online rebuild keeps the old graph resident so searches keep working and pays for a full new build’s working set on top of it, so it costs roughly 1.7x what building the same corpus from nothing costs; with no gate it simply attempts the rebuild and dies with an OutOfMemoryError when it does not fit. A deferred cycle is not lost: pending vectors stay exactly searchable through the in-memory delta buffer, so the cost is a longer delta scan per query rather than wrong or missing results, and the deferral is logged and counted as |
Integer |
90 |
|
Minimum time in milliseconds before another online vector graph rebuild may be attempted after one was deferred for lack of heap (see |
Integer |
30000 |
|
Maximum amount of pages (in MB) to keep in RAM |
Long |
4096 |
|
Size of the asynchronous page flush queue |
Integer |
512 |
|
When true (the default), a full backup, an HA database verify and an HA snapshot ship read a point-in-time image served from a page-level copy-on-write shadow, so writers keep running at full speed for the duration. When false, or when the shadow exceeds |
Boolean |
true |
|
Memory budget in MB for the copy-on-write shadow of a single point-in-time window. The shadow only holds the pages modified while the window is open, once each, so a short backup on a moderately busy database often never touches the disk at all. Beyond this budget the shadow spills to a scratch file (see |
Long |
64 |
|
Hard limit in MB (memory plus spill file) on a single copy-on-write shadow before the window is abandoned and its consumer falls back to freezing the data files. The default |
Long |
-1 |
|
Directory for the scratch file a copy-on-write shadow spills into once |
String |
|
|
Default timeout for polyglot commands (in ms) |
Long |
10000 |
|
Maximum number of elements (records) allowed in a single query for memory-intensive operations (eg. ORDER BY in heap). If exceeded, the query fails with an OCommandExecutionException. Negative number means no limit.This setting is intended as a safety measure against excessive resource consumption from a single query (eg. prevent OutOfMemory) |
Long |
500000 |
|
Maximum number of parsed statements to keep in cache |
Integer |
300 |
|
Number of retries in case of MVCC exception |
Integer |
3 |
|
Maximum amount of milliseconds to compute a random number to wait for the next retry. This setting is helpful in case of high concurrency on the same pages (multi-thread insertion over the same bucket |
Integer |
100 |
|
Uses the WAL |
Boolean |
true |
|
Number of concurrent files to use for tx log. 0 (default) = available cores |
Integer |
(machine dependent) |
|
Flushes the WAL on disk at commit time. It can be 0 = no flush, 1 = flush without metadata and 2 = full flush (fsync). In |
Integer |
0 |
|
Default number of buckets to create per type |
Integer |
1 |
Available Plugins
| Name | server.plugins-String |
|---|---|
Gremlin |
|
gRPC |
|
MongoDB |
|
Postgres |
|
Prometheus |
|
Redis |
|
gRPC
The gRPC server is implemented by the GrpcServerPlugin, which is bundled in the full distribution but not started by default. To enable it, register the plugin in server.plugins (see available plugins):
-Darcadedb.server.plugins=gRPC:com.arcadedb.server.grpc.GrpcServerPlugin
Once enabled, the server listens on port 50051 by default. Except for grpc.port, the settings below are read by the plugin itself and are not part of the registered server settings above, so they only take effect as JVM system properties (-Darcadedb.grpc.*); they are not resolved from environment variables. The server.plugins setting itself is a standard server setting and can be supplied either way.
| Name | Description | Type | Default Value |
|---|---|---|---|
|
Start the gRPC server when the plugin is registered. Set to |
Boolean |
true |
|
Port for the standard gRPC server. A registered server setting since v26.9.1 (so it is also resolved from environment variables and listed in the settings API), because HA reads it to advertise a peer’s gRPC endpoint - see the |
Integer |
50051 |
|
Host/interface to bind to |
String |
0.0.0.0 |
|
Server mode: |
String |
standard |
|
Port for the xDS server (used when |
Integer |
50052 |
|
Enable TLS for the gRPC server |
Boolean |
false |
|
Path to the TLS certificate chain file (required when |
String |
(none) |
|
Path to the TLS private key file (required when |
String |
(none) |
|
Maximum inbound message size, in MB |
Integer |
100 |
|
Enable the gRPC server reflection service (used by tools such as |
Boolean |
true |
|
Enable the standard gRPC health-checking service |
Boolean |
true |
|
Advertise support for message compression |
Boolean |
true |
|
Force compression on all outbound messages |
Boolean |
false |
|
Compression algorithm used when |
String |
gzip |
In addition to the plugin-level keys above, the gRPC service honors three registered SERVER settings that bound result materialization and protect against limitless or slow clients pinning worker threads and exhausting heap: server.grpcQueryMaxResultRows, server.grpcStreamMaxMaterializedRows, and server.grpcStreamWriteTimeoutMs (see the SERVER settings table). Unlike the grpc.* keys, these are standard server settings and can be supplied as JVM system properties or environment variables. (Available since v26.7.1)