Hypermnesia: Auto Reconciliation in Mnesia

Vincent Liu


Mnesia is an embedded database for Erlang/OTP applications that offers outstanding performance thanks to its tight integration with Erlang. However, its lack of conflict resolution after network partitions is a notable limitation that demands manual restart by developers to reconcile replicas. In this talk, I will discuss eventual consistency and CRDTs to achieve automatic conflict resolution within Mnesia. I will introduce Hypermnesia, an extension to Mnesia featuring a new access context async_ec that streamlines replica reconciliation after a partition. Hypermnesia is also designed with minimising overhead and out-of-box usage in mind. In the talk, I will present benchmarking results, and demonstrate practical examples of using Hypermnesia. This project is a collaboration between the University of Cambridge and Erlang Solutions.

Key Takeaways:

  • You will learn
  • what problems Mnesia has and why they are important
  • how to achieve automatic conflict resolution in Mnesia
  • how eventual consistency and CRDTs can help us
  • overhead of eventual consistency in Mnesia
  • Example usage of the new API

Target Audience:

  • Mnesia users, CRDTs developers, and people with a general interest in distributed system consistency.

Mnesia, CRDTs, Eventual Consistency