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".

History

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).

Foreign Keys

Supported

Foreign keys are enabled by default in ActorDB.

Joins

Nested Loop Join

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

Data Model

Relational

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.

Checkpoints

Not Supported

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

Concurrency Control

Multi-version Concurrency Control (MVCC) Not Supported

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

Isolation Levels

Serializable

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

Logging

Physical Logging

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

Query Execution

Tuple-at-a-Time Model

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

Query Interface

SQL

Indexes

B+Tree

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

ActorDB Logo
Website

http://www.actordb.com/

Source Code

https://github.com/biokoda/actordb

Tech Docs

http://www.actordb.com/docs-about.html

Developer

Biokoda

Country of Origin

SI

Start Year

2014

Project Type

Commercial, Open Source

Written in

Erlang

Supported languages

C#, Erlang

Embeds / Uses

LMDB, SQLite

Compatible With

MySQL

Operating Systems

Linux, OS X, Windows

Licenses

Mozilla Public License