DBDB.io The Encyclopedia of Database Systems · Est. 2017
Database of Databases

Database Entry

ActorDB


ActorDB is a distributed relational SQL database, which is strongly consistent, massively concurrent, and horizontally scalable. It supports no single point of failure and uses no global read or write locks. To achieve the features provided, ActorDB uses Raft distributed consensus algorithm on top of an existing battle-tested and stable SQL database engine. ActorDB splits the dataset into small independent chunks, which is inspired by the "Actor Model".[03][04]

Source Code
https://github.com/biokoda/actordb[02]
Country of Origin
SI
Start Year
2014 [15]
Project Types
Commercial, Open Source
Written in
Erlang
Supported Languages
C#, Erlang
Embeds / Uses
LMDB, SQLite
Compatible With
MySQL
Operating Systems
Linux, macOS, Windows

Database Entry

ActorDB


ActorDB is a distributed relational SQL database, which is strongly consistent, massively concurrent, and horizontally scalable. It supports no single point of failure and uses no global read or write locks. To achieve the features provided, ActorDB uses Raft distributed consensus algorithm on top of an existing battle-tested and stable SQL database engine. ActorDB splits the dataset into small independent chunks, which is inspired by the "Actor Model".[03][04]

History[05][06][07]


Started with the project Emit Cloud, which is a file synchronization application like Dropbox, the developers at Biokoda found problems in achieving no single point of failure and horizontal scalability. To solve the problem, developers at Biokoda extended SQLite's WAL format to implement Raft. In the later versions, LMDB is used as the storage engine for ActorDB. ActorDB was first launched in 2014. The latest official stable release is 0.10.27 (Jan 2019).

Checkpoints[08]


ActorDB does not require checkpoints from WAL to the main database file.

Concurrency Control[09][10]


Although ActorDB is concurrent on the database level, it is not on each actor. The storage engine LMDB employs MVCC.

Data Model[03][02]


ActorDB is a distributed relational database. But it also has the scalability of a KV store by introducing a KV data type, which is a SQL table that is partitioned across all servers.

Foreign Keys[11][12]


Foreign keys are enabled by default in ActorDB.

Indexes[13]


ActorDB uses SQLite as the query engine, which uses B-Tree for its default indexing data structure.

Isolation Levels[14]


Essentially, every actor is an SQLite database, where all transactions are serializable.

Joins[13]


Each actor runs SQLite as the query engine, which uses Nested Loop Join.

Logging[08]


ActorDB uses Raft protocol to replicate actors. The protocol is extended on SQLite WAL module and requires a write log to operate.

Query Execution[13]


ActorDB uses SQLite as its query engine, which uses Volcano-style query processing.

Query Interface


SQL

Citations

15 sources
  1. ActorDB | Distributed SQL database with linear scalability actordb.com
  2. GitHub - biokoda/actordb: ActorDB distributed SQL database · GitHub github.com
  3. ActorDB | Documentation - About actordb.com
  4. Actor model - Wikipedia wikipedia.org
  5. ‎App Store apple.com Dead — Check Archive
  6. ActorDB - How and why we run SQLite on top of LMDB biokoda.com
  7. Why we built ActorDB biokoda.com
  8. ActorDB | Documentation - How it works actordb.com
  9. Lightning Memory-Mapped Database - Wikipedia wikipedia.org
  10. ActorDB | Documentation - How it works actordb.com
  11. ActorDB | Documentation - Key/Value store actordb.com
  12. https://gitter.im/actordb/actordb gitter.im Dead — Check Archive
  13. https://dbdb.io/db/sqlite dbdb.io
  14. ActorDB | Documentation - Examples actordb.com
  15. first public release github.com
Revision #8 Last Updated: