Mnesia

Mnesia is a distributed, soft real-time database management system written in the Erlang programming language.

As with Erlang, Mnesia was developed by Ericsson for soft real-time distributed and high-availability computing work related to telecoms.

[2] It has more in common with embeddable DBMS such as Berkeley DB than with any SQL database server.

[3] Due to limits imposed by Dets, support for other backend plugins was suggested by Ulf Wiger[5] and these were added to Mnesia.

[8] A key feature of Mnesia's high-availability approach is that tables can be reconfigured within a schema and relocated between nodes, not only while the database is still running, but even while write operations are still going on.

[9] It permits easy representation of transactions as a natural feature of Erlang by allowing developers to utilize a single language throughout an application.

This can lead to clearer source code than the paired BEGIN / COMMIT syntax of SQL, and so avoids its problem of unclosed transactions within a procedure.

The semantics of using transactions in this way remains consistent, making it easy to write library code that works equally in either context.

Implementation in Erlang confers an efficiency benefit because of the use of a single virtual machine throughout an application.

LYME (software bundle) is based on Erlang and comprises Mnesia . It is entirely composed of free and open-source software