3 ms·
Erlang already comes with a distributed DBMS called Mnesia https://erlang.org/doc/man/mnesia.html https://erlang.org/doc/man/mnesia.html , which under the hood
by danpetrov 5y ago
Erlang already comes with a distributed DBMS called Mnesia https://erlang.org/doc/man/mnesia.html https://erlang.org/doc/man/mnesia.html , which under the hood uses ETS/DETS depending on the configuration. In distributed Erlang projects you'll find that or abstractions over it. Mne sia makes the most sense in mu opinion when you only have 1-2 relations or just need some kind of distributed cache.
In Elixir apps you'll frequently find the aforementioned Ecto "ORM", which has adapters to different DBMSs like MySQL, PostgreSQL, and even Mnesia.
- distortedsignal 5y agoThe one sort-of thorny piece with Mnesia is querying the DB. The syntax for select is not super straightforward and involves writing matchspecs (http://erlang.org/doc/man/ets.html#match-specifications http://erlang.org/doc/man/ets.html#match-specifications) which are non-trivial. Mnesia lets you do a lot of cool things (in memory DB by default! Super fast!) but it also has some pitfalls (Doesn't write to disk by default! Lose all your data when you restart the BEAM!). Generally, I think it's a fine system if you're willing to put in the time to optimize it.