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.
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.
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.
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.
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.
The simplest way is through the ArcadeDB Console:
> CREATE DATABASE MyDatabase
{MyDatabase}> IMPORT DATABASE file:///tmp/mydb-export.tgz
The importer:
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.
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.
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
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();
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().
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.
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.
Export your OrientDB database, run the built-in importer, and your SQL keeps working. ArcadeDB picks up where OrientDB left off.