The Next Generation
Multi-Model Database

Supporting Graphs, Documents, Key/Value, Search Engine, Vectors, and Time-Series

Manage complex models using ArcadeDB without any compromise. Forget about Polyglot Persistence: no need for multiple databases. Store graphs, documents, key values, search engine, vectors and time-series all in one database with native multi-model support.

10M+
Records/Second
100%
ACID Compliant
Zero
Dependencies
ArcadeDB Multi-Model Architecture
Open Source • Apache 2.0 Licensed

True Multi-Model Architecture

Manage complex models using ArcadeDB without any compromise. Forget about Polyglot Persistence: no need for multiple databases. You can store graphs, documents, key values, search engine, vectors and time-series all in one ArcadeDB Multi-Model database. Since each model is native to the database engine, you don't have to worry about translations slowing you down.

Explore the Multi-Model
Multi-Model Diagram
SELECT FROM Person
WHERE name = 'John'
AND age > 25
ORDER BY age DESC
LIMIT 10
MATCH (p:Person)
WHERE p.name = 'John'
  AND p.age > 25
RETURN p
ORDER BY p.age DESC
LIMIT 10
g.V().hasLabel('Person')
  .has('name', 'John')
  .has('age', gt(25))
  .order().by('age', desc)
  .limit(10)
query {
  persons(
    where: {
      name: { _eq: "John" }
      age: { _gt: 25 }
    }
    orderBy: { age: DESC }
    limit: 10
  ) {
    name
    age
  }
}
ResultSet result = database.select()
    .from("Person")
    .where()
    .property("name").eq().value("John")
    .and()
    .property("age").gt().value(25)
    .orderBy("age", false)
    .limit(10)
    .vertices()
db.Person.find({
  name: "John",
  age: { $gt: 25 }
})
.sort({ age: -1 })
.limit(10)

Multiple Query Languages

Query your data using the language you're most comfortable with. ArcadeDB natively supports SQL, Cypher, Gremlin, GraphQL, MongoDB query language, and a native Java API. The same query, your choice of language. No compromises, no performance penalties.

Explore Query Languages

Fast and Scalable

ArcadeDB's engine was built with Alien Technology. It's able to crunch millions of records per second. With ArcadeDB, the traversing speed is not affected by the database size. It is always constant, whether your database has a few records or billions. ArcadeDB can work as an embedded database, on a single server and can scale up using multiple servers with Kubernetes. Flexible enough to run on any platform with a small footprint.

Indestructible

Your data is secure. Our unbreakable fully transactional engine assures durability for mission-critical production databases. All the changes are saved to a persistent Journal (Write Ahead Log). In case of a crash of the server, the uncommitted transactions are automatically rolled back. ArcadeDB uses a Raft Consensus Algorithm to maintain consistency across multiple servers.

Integration & Compatibility

ArcadeDB supports SQL, GraphQL, OpenCypher and Gremlin for queries. ArcadeDB Server supports HTTP/JSON natively and is compatible with Postgres wire protocol, Redis and MongoDB. You can easily migrate your existing database from OrientDB and Neo4j in just a few minutes.

Getting Started

Choose your preferred installation method and start building in minutes

Run ArcadeDB Server with Docker using a demo database:

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

Open your browser on http://localhost:2480 to access ArcadeDB Studio. Login with username "root" and password "playwithdata".

ArcadeDB Studio Login Database Schema Graph Visualization

Set ArcadeDB Server root password as a secret:

kubectl create secret generic server-root-password \
  --from-literal=arcadedb.server.rootPassword='<password>'

Start a Kubernetes cluster with 3 servers:

kubectl apply -f arcadedb-statefulset.yaml

Download and install ArcadeDB on premise. You need JDK 11 or more recent. Run the server from a shell:

$ bin/server.sh


 █████╗ ██████╗  ██████╗ █████╗ ██████╗ ███████╗██████╗ ██████╗
██╔══██╗██╔══██╗██╔════╝██╔══██╗██╔══██╗██╔════╝██╔══██╗██╔══██╗
███████║██████╔╝██║     ███████║██║  ██║█████╗  ██║  ██║██████╔╝
██╔══██║██╔══██╗██║     ██╔══██║██║  ██║██╔══╝  ██║  ██║██╔══██╗
██║  ██║██║  ██║╚██████╗██║  ██║██████╔╝███████╗██████╔╝██████╔╝
╚═╝  ╚═╝╚═╝  ╚═╝ ╚═════╝╚═╝  ╚═╝╚═════╝ ╚══════╝╚═════╝ ╚═════╝
PLAY WITH DATA                                    arcadedb.com

The first time the server runs, you'll be prompted to set a password for the root user.

Run ArcadeDB Console:

$ bin/console.sh
ArcadeDB Console v.24.11.1 - Copyrights (c) 2024 Arcade Data

>

In Embedded mode your application and the database share the same space in the JVM for blazing fast performance.

Update your Maven pom.xml file and add the dependency:

<dependency>
  <groupId>com.arcadedb</groupId>
  <artifactId>arcadedb-engine</artifactId>
  <version>24.11.1</version>
</dependency>

Create the database with a basic schema and a graph:

try( Database db = new DatabaseFactory( "Heroes" ).create() ) {
  db.transaction( (tx) -> {
    db.getSchema().createVertexType("Hero");
    db.getSchema().createEdgeType("IsFriendOf");

    Vertex jay = database.newVertex("Hero")
      .set("firstName", "Jay")
      .set("lastName", "Miner")
      .save();
    Vertex elon = database.newVertex("Person")
      .set("firstName", "Elon")
      .set("lastName", "Musk")
      .save();
    jay.newEdge("IsFriendOf", elon, true)
      .set("since", "1990")
      .save();
  });
}

Query using OpenCypher:

Resultset result = db.query("cypher",
  "MATCH {class: Hero, where: (firstName = 'Elon' AND lastName = 'Musk')}
   .both('IsFriendOf') {as: friend}
   RETURN friend" );
while( result.hasNext(); ) {
  result.next().getProperty()
}

Join the Community

We're looking forward to your contribution. Help the project with code, tests, documentation, and more.

GitHub Discussions

Join the conversation, ask questions, and share your knowledge with the community.

GitHub Discussions

Discord Server

Chat with the team and other community members in real-time.

A Sustainable Open Source Foundation

ArcadeDB is led by Arcade Data as a foundation model where sponsorships are reinvested into hiring talented contributors rather than maximizing profit. Built by volunteers and dedicated employees working together, this approach ensures sustainable growth focused on long-term project success.

By sponsoring ArcadeDB, you're investing in the growth of the project and helping us expand the team.

Learn About Sponsorship

Community & Professional Collaboration

Built by passionate volunteers and dedicated Arcade Data employees working together towards a common goal.

Reinvestment, Not Profit

Sponsorships are reinvested to hire more talented contributors, accelerating development and expanding capabilities.

Pricing and License

Open Source

FREE Forever

ArcadeDB is FREE for any usage (Apache 2 License), no strings attached. If you like ArcadeDB, you can actively contribute or sponsor the project as an individual or as a company.

Check under GitHub Sponsor to see the available tiers. The contributions through GitHub will be shared with the active committers creating a totally new sustainable model for Open Source projects.