mnesia の基本をおさらい。

mnesia の基本をまとめていきます。
対話式で mnesia を試しているのは id:kuenishi さん位しかいらっしゃらないので、自分用にメモ。

Erlang (BEAM) emulator version 5.6.5 [source] [64-bit] [smp:2] [async-threads:0] [kernel-poll:false]

Eshell V5.6.5  (abort with ^G)
1> rd(store, {key, value}).
store
2> application:start(mnesia).
ok
3> mnesia:create_table(store, [{attributes, record_info(fields, store)}]).
{atomic,ok}
4> mnesia:transaction(fun() -> mnesia:write(#store{key=a, value=10}) end).
{atomic,ok}
5> mnesia:transaction(fun() -> mnesia:write(#store{key=b, value=20}) end).
{atomic,ok}
6> mnesia:dirty_write(#store{key=c, value=30}).
ok
7> mnesia:dirty_read(store, a).
[#store{key = a,value = 10}]
8> mnesia:dirty_read(store, b).
[#store{key = b,value = 20}]
9> mnesia:dirty_read(store, c).
[#store{key = c,value = 30}]
10> 
10> 
10> rd(store_default, {key, value=10}).
store_default
11> mnesia:create_table(store_default, [{attributes, record_info(fields, store_default)}]).
{atomic,ok}
12> mnesia:dirty_write(#store_default{key=d}).
ok
13> mnesia:dirty_read(store_default, d).
[#store_default{key = d,value = 10}]
  • rd() は 対話形式で record を使いたい際に使います。store という key/value の record を作成します。
  • application:start(mnesia) で mnesia を起動します。
  • create_schema は local で ram で有れば起動する必要はなし by id:cooldaemon
  • mnesia:create_table で指定した record でテーブルを作成します。
    • 1 番目がキーとなります。
  • mnesia:dirty_write を使えば transaction を使わなくても書けます
  • dirty_read で気軽に読み込んでます。
  • record で初期値を与える事も出来ます。