ArcadeDB vs OrientDB

ArcadeDB is the successor of OrientDB, built from scratch by the same creator. Your SQL queries, your RIDs, and your multi-model mindset all carry over. The engine is faster, leaner, and actively maintained.

*OrientDB is a registered trademark of SAP SE or its affiliates.

The Successor of OrientDB

Same creator. Luca Garulli founded OrientDB in 2010 and led the project until SAP's acquisition. He then created ArcadeDB from scratch, applying a decade of OrientDB lessons to a completely new codebase and a modern engine architecture.

Not a fork: a redesign. ArcadeDB keeps the OrientDB philosophy (SQL-first, multi-model, embedded mode, RID-based records) but rebuilds the storage on LSM-Tree indexes for higher throughput and a smaller footprint. Active development, regular releases, and Apache 2.0 licensing.

ArcadeDB vs OrientDB at a glance

A side-by-side breakdown across project status, engine, query languages, and operational features. Both are Apache 2.0; the differences are in everything else.

Feature OrientDB ArcadeDB
Project status SAP commercial support discontinued; community stagnant Actively maintained, regular releases
Storage engine Original OrientDB engine Modern LSM-Tree, lower RAM footprint
Data models Document, Graph, Key/Value Graph + Document + Key/Value + Search + Vector + Time Series
Query languages OrientDB SQL, Gremlin SQL + Cypher + Gremlin + GraphQL + MongoDB QL + Redis
BOLT protocol Not supported v3.0, v4.0, v4.4
Vector search Not available Native JVector (DiskANN + HNSW, SIMD)
OLAP Not available Built-in Graph OLAP engine for large-scale analytics
Graph algorithms Basic only (Dijkstra, shortest path, A*) Path finding, centrality (PageRank), community detection, structural analysis, similarity & link prediction, network flow, traversal & sampling, network science, node embedding
HA / Replication Multi-Master, not production ready RAFT Leader/Follower
Embedded mode Available Native, runs inside your JVM
RAM footprint Multi-GB heap typical Starts at ~16 MB
License Apache 2.0 (Community) Apache 2.0

Step 1: Migrate Your Data with the Built-in Importer

ArcadeDB ships an OrientDB Importer that reads a database exported from OrientDB in JSON format and rebuilds it as a fully indexed ArcadeDB database. Schema, vertices, edges, and indexes are created automatically.

Export from OrientDB

Use the OrientDB console EXPORT DATABASE command:

// Connect to your OrientDB database
orientdb> CONNECT plocal:/path/to/your/database admin admin

// Export to a compressed JSON archive
orientdb {db=mydb}> EXPORT DATABASE /tmp/mydb-export

This produces a .json.gz (or .tgz) archive containing all classes, clusters, records, and edges.

Import into ArcadeDB

The simplest way is through the ArcadeDB Console:

> CREATE DATABASE MyDatabase
{MyDatabase}> IMPORT DATABASE file:///tmp/mydb-export.tgz

The importer:

Import via Java API

For programmatic migrations, use the OrientDBImporter class:

OrientDBImporter importer = new OrientDBImporter(
    "-i", "/tmp/mydb-export.tgz",
    "-d", "./databases/MyDatabase",
    "-o"  // overwrite if exists
);
importer.run();

See the OrientDB Importer documentation for the full list of options.

Step 2: Adapt Your Application Code

Most OrientDB SQL works without changes. The Java API uses different class names but the same patterns. The full list of differences is documented in the OrientDB Importer guide; this section covers the common ones.

Schema Creation

OrientDB

CREATE CLASS Person EXTENDS V
CREATE PROPERTY Person.id LONG
CREATE INDEX Person.id UNIQUE

ArcadeDB

CREATE VERTEX TYPE Person
CREATE PROPERTY Person.id LONG
CREATE INDEX ON Person (id) UNIQUE

Open the Database

OrientDB

OrientDB orient = new OrientDB("plocal:./databases", OrientDBConfig.defaultConfig());
ODatabaseSession db = orient.open("mydb", "admin", "admin");

ArcadeDB (embedded)

Database db = new DatabaseFactory("./databases/mydb").open();

Create Vertices and Edges

OrientDB

db.begin();
OVertex alice = db.newVertex("Person");
alice.setProperty("name", "Alice");
alice.save();

OVertex bob = db.newVertex("Person");
bob.setProperty("name", "Bob");
bob.save();

alice.addEdge(bob, "KNOWS").save();
db.commit();

ArcadeDB

db.begin();
MutableVertex alice = db.newVertex("Person");
alice.set("name", "Alice");
alice.save();

MutableVertex bob = db.newVertex("Person");
bob.set("name", "Bob");
bob.save();

alice.newEdge("KNOWS", bob);
db.commit();

The begin() / commit() pattern works identically to OrientDB. Property setters use .set() instead of .setProperty(), and edges are created with .newEdge().

Prefer a Guided Path? Take the Free Academy Course

Everything on this page is also taught as a hands-on course in the ArcadeDB Academy. Walk through the migration step by step, with quizzes, exercises, and a completion certificate at the end.

Free Migration ~1 hour · 5 modules · 18 lessons

Migrating from OrientDB to ArcadeDB

Learn why ArcadeDB is the natural successor, how to import your OrientDB data, how to adapt your SQL and Java API, and how to extend your stack with multi-model features OrientDB never had.

Start the Course

Ready to Migrate?

Export your OrientDB database, run the built-in importer, and your SQL keeps working. ArcadeDB picks up where OrientDB left off.