MCPcopy Index your code
hub / github.com/ArcadeData/arcadedb

github.com/ArcadeData/arcadedb @26.7.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release 26.7.1 ↗ · + Follow
42,285 symbols 288,917 edges 3,730 files 7,925 documented · 19%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

ArcadeDB

Multi Model DBMS Built for Extreme Performance

            Ask DeepWiki  

       

Join Discord

<a href="https://github.com/arcadedata/arcadedb"><img height="25" src="https://github.com/ArcadeData/arcadedb/raw/26.7.1/studio/src/main/resources/static/images/social/github.svg" alt="Github"></a>
&nbsp;

LinkedIn   Bluesky   Twitter   Youtube   Discord   StackOverflow   Blog

ArcadeDB is a Multi-Model DBMS created by Luca Garulli, the same founder of OrientDB, after SAP's acquisition. Written from scratch with a brand-new engine made of Alien Technology, ArcadeDB is able to crunch millions of records per second on common hardware with minimal resource usage. ArcadeDB reuses OrientDB's SQL engine (heavily modified) and some utility classes. It's written in LLJ: Low Level Java - still Java21+ but only using low level APIs to leverage advanced mechanical sympathy techniques and reduce Garbage Collector pressure. Highly optimized for extreme performance, it runs from a Raspberry Pi to multiple servers on the cloud.

ArcadeDB is fully transactional DBMS with support for ACID transactions, structured and unstructured data, native graph engine (no joins but links between records), full-text indexing, geospatial querying, and advanced security.

ArcadeDB supports the following models:

ArcadeDB understands multiple languages:

ArcadeDB key capabilities:

  • 70+ Built-in Graph Algorithms — Pathfinding, centrality, community detection, link prediction, graph embeddings, and more — all available out of the box
  • Parallel Query Execution — SQL queries leverage multiple CPU cores for faster execution on large datasets
  • Materialized Views — Pre-computed query results stored and automatically maintained
  • MCP Server — Built-in Model Context Protocol server for AI assistant and LLM integration
  • AI Assistant — Integrated AI assistant in Studio (Beta) for query help and database management
  • Geospatial Indexing — Native spatial queries and proximity searches with geo.* SQL functions
  • TimeSeries — Columnar storage with Gorilla/Delta-of-Delta compression, InfluxDB/Prometheus ingestion, PromQL queries, Grafana integration
  • Hash Indexes — Extendible hashing for faster exact-match lookups alongside LSM-Tree indexes

ArcadeDB can be used as:

  • Embedded from any language on top of the Java Virtual Machine
  • Embedded from Python via bindings: arcadedb-embedded-python
  • Remotely by using HTTP/JSON
  • Remotely by using a Postgres driver (ArcadeDB implements Postgres Wire protocol)
  • Remotely by using a Redis driver (only a subset of the operations are implemented)
  • Remotely by using a MongoDB driver (only a subset of the operations are implemented)
  • By AI assistants via the built-in MCP Server (Model Context Protocol)

For more information, see the documentation.

Use Cases

Explore real-world examples in the arcadedb-usecases repository — self-contained projects with Docker Compose, SQL schemas, and runnable demos covering:

  • Recommendation Engine — graph traversal + vector similarity + time-series
  • Knowledge Graphs — co-authorship and citation networks with full-text search
  • Graph RAG — retrieval-augmented generation with LangChain4j and Neo4j Bolt
  • Fraud Detection — graph, vector, and time-series signals with Cypher
  • Real-time Analytics — IoT and service monitoring with time-series
  • Social Network Analytics — materialized view dashboards with polyglot queries
  • Supply Chain — multi-tier visibility with PostgreSQL protocol and JavaScript

Getting started in 5 minutes

Start ArcadeDB Server with Docker:

docker run --rm -p 2480:2480 -p 2424:2424 \
           -e JAVA_OPTS="-Darcadedb.server.rootPassword=playwithdata -Darcadedb.server.defaultDatabases=Imported[root]{import:https://github.com/ArcadeData/arcadedb-datasets/raw/main/orientdb/OpenBeer.gz}" \
           arcadedata/arcadedb:latest

Now open your browser on http://localhost:2480 and play with ArcadeDB Studio and the imported OpenBeer database to find your favorite beer.

ArcadeDB Studio

ArcadeDB is cloud-ready with Docker and Kubernetes support.

You can also download the latest release, unpack it on your local hard drive and start the server with bin/server.sh or bin/server.bat for Windows.

Releases

There are four variants of (about monthly) releases:

  • full - this is the complete package including all modules
  • minimal - this package excludes the gremlin, redisw, mongodbw, graphql modules
  • headless - this package excludes the gremlin, redisw, mongodbw, graphql, studio modules
  • base - core engine, server, and network only — excludes all optional modules (console, gremlin, studio, redisw, mongodbw, postgresw, grpcw, graphql, metrics)

The nightly builds of the repository head can be found here.

You can also build a custom distribution with only the modules you need using the Custom Package Builder:

curl -fsSL https://github.com/ArcadeData/arcadedb/releases/download/26.3.1/arcadedb-builder.sh | \
  bash -s -- --version=26.3.1 --modules=gremlin,studio

Available optional modules: console, gremlin, studio, redisw, mongodbw, postgresw, grpcw, graphql, metrics. The builder supports interactive mode, Docker image generation, and offline builds from local Maven repositories.

Java Versions

Starting from ArcadeDB 24.4.1 code is compatible with Java 21.

Java 21 packages are available on Maven central and docker images on Docker Hub.

We also support Java 17 on a separate branch java17 for those who cannot upgrade to Java 21 yet through GitHub packages.

To use Java 17 inside your project, add the repository to your pom.xml and reference dependencies as follows:


<repositories>
    <repository>
        <name>github</name>
        <id>github</id>
        <url>https://maven.pkg.github.com/ArcadeData/arcadedb</url>
    </repository>
</repositories>
<dependencies>
<dependency>
    <groupId>com.arcadedb</groupId>
    <artifactId>arcadedb-engine</artifactId>
    <version>26.3.1-java17</version>
</dependency>
</dependencies>

Docker images are available on ghcr.io too:

docker pull ghcr.io/arcadedata/arcadedb:26.3.1-java17

Building and Testing

Build the entire project (skipping tests):

mvn clean install -DskipTests

Build the Docker image (skipping tests):

mvn clean install -DskipTests -Pdocker

Running Unit Tests:

Run the full unit test suite:

mvn test

Some tests are tagged to indicate their cost:

  • slow - functional tests that take noticeably long (large batches, multi-second elapsed time, big payloads)
  • benchmark - microbenchmarks not intended for regular CI runs

To skip these and run only the fast tests:

mvn test -DexcludedGroups="slow,benchmark"

To run only a specific tag (e.g. benchmark tests in isolation):

mvn test -Dgroups="benchmark"

Running Integration Tests:

Run all the integration tests (requires Docker):

mvn verify -Pintegration

Run integration tests excluding the end-to-end, load, and HA tests:

mvn verify -Pintegration -pl !e2e,!load-tests,!e2e-ha

Running End-to-End Tests:

All end-to-end tests (requires Docker):

mvn verify -Pintegration -pl e2e,load-tests,e2e-ha

Test Suites at a Glance

The codebase is covered by several complementary test suites, each with a distinct scope:

Suite How it runs Scope
Unit tests mvn test (*Test) Fast, in-process tests of a single component in isolation: engine internals (storage, pages, WAL, indexes, serialization), query parsing and execution (SQL, Cypher, Gremlin, GraphQL), schema, graph traversals, and security. The bulk of coverage; no external services required. Tagged slow/benchmark tests can be excluded.
Integration tests `mvn v

Extension points exported contracts — how you extend this code

RecordSource (Interface)
Pluggable data source that iterates over records. [12 implementers]
integration/src/main/java/com/arcadedb/integration/importer/graph/GraphImporter.java
FunctionDefinition (Interface)
Defines a function with a name and an entrypoint for execution. @author Luca Garulli (l.garulli@arcadedata.com) [204 implementers]
engine/src/main/java/com/arcadedb/function/FunctionDefinition.java
PackStreamStructure (Interface)
Interface for objects that can be serialized as PackStream structures. [8 implementers]
bolt/src/main/java/com/arcadedb/bolt/packstream/PackStreamStructure.java
ServerPlugin (Interface)
(no doc) [22 implementers]
server/src/main/java/com/arcadedb/server/ServerPlugin.java
GraphQLParserConstants (Interface)
Token literal values and constants. Generated by com.helger.pgcc.output.java.OtherFilesGenJava#start() [2 implementers]
graphql/src/main/java/com/arcadedb/graphql/parser/GraphQLParserConstants.java
HealthTarget (Interface)
Minimal surface of RaftHAServer that the monitor depends on. Kept small for testing. [1 implementers]
ha-raft/src/main/java/com/arcadedb/server/ha/raft/HealthMonitor.java
ChannelDataOutput (Interface)
(no doc) [2 implementers]
network/src/main/java/com/arcadedb/network/binary/ChannelDataOutput.java
ConsoleOutput (Interface)
(no doc)
console/src/main/java/com/arcadedb/console/ConsoleOutput.java

Core symbols most depended-on inside this repo

get
called by 9636
engine/src/main/java/com/arcadedb/index/Index.java
command
called by 7890
engine/src/main/java/com/arcadedb/database/Database.java
isTrue
called by 6982
engine/src/main/java/com/arcadedb/query/sql/parser/CaseExpression.java
hasNext
called by 6953
engine/src/main/java/com/arcadedb/query/sql/executor/ResultSet.java
getProperty
called by 6510
engine/src/main/java/com/arcadedb/query/sql/executor/Result.java
getSchema
called by 5337
engine/src/main/java/com/arcadedb/database/Database.java
next
called by 4824
engine/src/main/java/com/arcadedb/query/sql/executor/ResultSet.java
query
called by 4645
engine/src/main/java/com/arcadedb/query/QueryEngine.java

Shape

Method 36,262
Class 3,967
Function 1,743
Interface 200
Enum 113

Languages

Java95%
Python4%
TypeScript1%
C#1%
Ruby1%

Modules by API surface

engine/src/main/java/com/arcadedb/query/sql/parser/SqlParser.java1,196 symbols
engine/src/main/java/com/arcadedb/query/sql/antlr/SQLASTBuilder.java234 symbols
postgresw/src/test/java/com/arcadedb/postgres/PostgresTypeTest.java187 symbols
engine/src/test/java/com/arcadedb/query/sql/executor/SelectStatementExecutionTest.java164 symbols
studio/src/main/resources/static/js/studio-database.js162 symbols
engine/src/test/java/com/arcadedb/query/opencypher/CypherBuiltInFunctionsTest.java148 symbols
engine/src/main/java/com/arcadedb/index/vector/LSMVectorIndex.java146 symbols
bindings/python/examples/10_stackoverflow_graph_olap.py146 symbols
bindings/python/examples/09_stackoverflow_graph_oltp.py140 symbols
ha-raft/src/main/java/com/arcadedb/server/ha/raft/RaftReplicatedDatabase.java136 symbols
engine/src/test/java/com/arcadedb/query/opencypher/functions/OpenCypherTemporalFunctionsComprehensiveTest.java135 symbols
engine/src/test/java/com/arcadedb/graph/olap/GraphAnalyticalViewTest.java130 symbols

Datastores touched

(mongodb)Database · 1 repos
httpdbDatabase · 1 repos

For agents

$ claude mcp add arcadedb \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact