The Magic of Mnesia

  • Expertise
  • Target audience Erlang and Elixir Developers
  • Duration Half a day
  • Prerequisites

    Good programming skills in Erlang/Elixir

How, and more importantly, when to use Mnesia? A distributed database already included with Erlang OTP, running in the same memory space as your business logic with low latency and good reliability sounds too good to be true, but it isn’t. It is a Redis for BEAM.

The key thing is to understand how to use it and maximise the advantages for your application. 

This course will cover the scenarios where you are likely to either encounter Mnesia already being used or where you should consider using it, as well as when it’s a bad fit. 

You will also learn to configure it, debug it, deal with errors and handle partitions. We will look at the CAP theorem, its implications for all distributed databases and how we can deal with those issues in live systems.


  • When (not) to use Mnesia
  • Starting Mnesia
  • Dirty functions
  • Indexing and Maintenance
  • Complex searches with Query List Comprehensions
  • Mnesia in Operations


When and why to use MnesiaHow to configure MnesiaTables and schemasQuery list comprehensionsDebugging MnesiaHow to handle partitionsBest practices  
Hernan Rivas Acosta
Software Developer at Erlang Solutions

Initially a game developer, Hernan first heard about Erlang when trying to build a server for an online game. He has since then used it on multiple projects in industries as varied as banking, messaging and social networks. A true believer in using the best tool for the job, he is very focused on picking the right technologies to make his life easier.
Hernan also loves cooking and has a collection of cooking books in over 15 languages. He’ll happily talk about food for hours and it’s a regular occurrence for friends and coworkers to be asked for books of traditional cuisine from their home country whenever the subject comes up.

Looking for bespoke
corporate training?

Contact us about how we can tailor a course for the needs of your team.