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 stable SQL database engine. ActorDB splits the dataset into small independent chunks, which is inspired by the "Actor Model". The database is designed for microservices, saas solutions, and (mobile) app backends.[04][05][06]
- Website
- https://www.actordb.com[01]
- Source Code
- https://github.com/biokoda/actordb[02]
- Developer
- Country of Origin
- SI
- Start Year
- 2014 [21]
- End Year
- 2022
- Project Types
- Commercial, Open Source
- Written in
- Erlang
- Supported Languages
- Erlang
- Compatible With
- MySQL
- License
- Mozilla Public License
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 stable SQL database engine. ActorDB splits the dataset into small independent chunks, which is inspired by the "Actor Model". The database is designed for microservices, saas solutions, and (mobile) app backends.[04][05][06]
History[07][08][09]
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 consensus algorithm. In the later versions, LMDB is used as the storage engine for ActorDB. ActorDB was first launched in 2014.
Although the Biokoda company and the ActorDB websites are still operational, development on the DBMS stopped in 2022. The project appears to be abandoned.
Checkpoints[10]
Using LMDB as the storage engine, ActorDB stores pages in an append-only style. It replaces SQLite's WAL implementation, and checkpoints are replaced with cleanups that free up space.
Compression[10][11]
Pages are compressed in ActorDB using LZ4, which is a general-purpose algorithm.
Concurrency Control[12][13]
Although ActorDB is concurrent on the database level, it is not on each actor. The storage engine LMDB employs MVCC.
Data Model[05][02]
ActorDB is a distributed relational database. But it also supports the scalability of a Key-Value(KV) store by introducing a KV data type, which is a SQL table that is partitioned across all servers.
Indexes[16]
ActorDB uses SQLite as the query engine, which uses B-Tree for its default indexing data structure.
Logging[10]
ActorDB uses Raft protocol to replicate actors. The protocol is extended on SQLite WAL module and requires a write log to operate.
Query Execution[16]
ActorDB uses SQLite as its query engine, which uses Volcano-style query processing.
Query Interface[18][02]
ActorDB doesn't need any special drivers, as developers can use MySQL driver of the language of choice. ActorDB is connectable over the MySQL protocol. It is also connectable to the thrift interface, which supports languages including C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, and so on.
Storage Architecture[17][19]
ActorDB uses LMDB as its storage engine. Each actor is stored within an LMDB file. LMDB uses mmap to achieve in memory storage.
Storage Model[19]
As the storage engine being used, LMDB uses a memory-map to store the database with copy-on-write semantics, hence no specific storage model.
System Architecture[20]
ActorDB has clusters that have 1, 3, or 5 nodes, each of which contains ~4 shards. The nodes act as independent actors who share no common memory or storage.
Citations
21 sources- ActorDB | Distributed SQL database with linear scalability actordb.com
- GitHub - biokoda/actordb: ActorDB distributed SQL database · GitHub github.com
- ActorDB | Documentation - About actordb.com
- actorDB and sqlite FTS features · Issue #24 · biokoda/actordb github.com
- ActorDB | Documentation - About actordb.com
- Actor model - Wikipedia wikipedia.org
- App Store apple.com
- ActorDB - How and why we run SQLite on top of LMDB biokoda.com
- Why we built ActorDB biokoda.com
- ActorDB | Documentation - How it works actordb.com
- CMU SCS 15-721 (Spring 2017) :: Database Compression cmu.edu
- Lightning Memory-Mapped Database - Wikipedia wikipedia.org
- ActorDB | Documentation - How it works actordb.com
- ActorDB | Documentation - Key/Value store actordb.com
- https://gitter.im/actordb/actordb gitter.im
- https://dbdb.io/db/sqlite dbdb.io
- ActorDB | Documentation - Examples actordb.com
- ActorDB | Documentation - Examples actordb.com
- https://dbdb.io/db/lmdb dbdb.io
- ActorDB | Documentation - Examples actordb.com
- first public release github.com