How ArcadeDB replicates writes, isolates transactions and keeps committed data on disk, and how we test that Neo4j drivers behave the same against it. Every claim links to the code, the docs or the CI run behind it.
High availability is built on Apache Ratis, an implementation of
the Raft consensus protocol also used by Apache Ozone. The Raft-based HA subsystem was introduced in ArcadeDB 26.4.2, and the
26.10.1 release hardened it across snapshot install, follower catch-up, leadership hand-off,
readiness gating and restart recovery (about 300 issues with the ha label).
majority (the default Raft quorum) or all. If the quorum cannot be met, the transaction rolls back and the client gets an error.eventual, read_your_writes (default) or linearizable, set per server or per request with the X-ArcadeDB-Read-Consistency header.Beyond the Jepsen suite, the main repository runs HA integration tests nightly, an HA resilience suite on a daily schedule, and a seeded long-running chaos test that can be replayed from its seed. The architecture is documented in High Availability concepts and HA configuration. To try a cluster, use the ready-made deployment scenarios or the Helm chart guide, and read how a cluster fits a client-server deployment.
ArcadeDB is ACID compliant on every model: graph, document, key-value, vector and time-series records share one transaction. Consistency uses MVCC, with each page versioned so a concurrent commit on stale data fails instead of overwriting.
| Isolation level | Dirty read | Non-repeatable read | Phantom read |
|---|---|---|---|
| READ_COMMITTED (default) | Not possible | Possible | Possible |
| REPEATABLE_READ | Not possible | Not possible | Possible |
ConcurrentModificationException instead of silently overwriting it. database.transaction(...) retries for you.arcadedb.txWalFlush=0 (default) the WAL is safe against process crashes but not against power loss. txWalFlush=1 fsyncs the WAL at commit and is the production recommendation; starting the server in production mode applies it automatically.Full details: Transactions and production mode defaults.
"Supports Bolt" can mean anything from "the driver connects" to "every type round-trips". Since ArcadeDB 26.7.2, compatibility is measured:
All five language suites gate every pull request, and a nightly run covers every scenario, driver and version. A missing result counts as a failure, a red cell opens a regression issue automatically, and the rendered matrix is committed as COMPATIBILITY.md with a timestamp and a link to the CI run. Bolt 3.0, 4.0, 4.4 and 5.x are negotiated. If you are moving an application off Neo4j, the Neo4j migration guide shows what changes and what doesn't; the Bolt compatibility docs list known limitations.
Start a three-node Raft cluster with Docker Compose or Helm, then write on one node and read from the others.
ArcadeDB HA is built on Apache Ratis, an implementation of the Raft consensus protocol. A cluster has one leader that coordinates writes and any number of replicas that serve reads. A write is acknowledged only after a quorum of nodes has persisted it in the Raft log; the default quorum is a majority, and 'all' is also available.
Yes. ArcadeDB transactions are atomic, consistent, isolated and durable, using MVCC and a write-ahead log. The supported isolation levels are READ_COMMITTED (the default) and REPEATABLE_READ. Dirty reads are never possible. SERIALIZABLE is not supported.
Set arcadedb.txWalFlush to 1, which fsyncs the write-ahead log at commit and is the documented production recommendation. Starting the server in production mode applies it automatically. With the default value 0, the WAL is safe against process crashes but not against power loss or an OS crash.
All five official Neo4j drivers: Java, JavaScript, Python, .NET and Go. Since ArcadeDB 26.7.2 they are tested on every pull request and nightly against 39 conformance scenarios across 14 pinned driver versions, and the results are published as a compatibility matrix in the ArcadeDB repository.