はじめに 本記事はElixir Advent Calendar 2017の21日目です。 mnesiaはErlang/OTPについてくる高速、高可用性が売りのRDBMSです。 今回はこれをElixirで少し便利に使ってみようという話です。Elixir特有というよりmnesia特有の話かつhow to的なものになっています。内容は テーブルの作成 分散モードへの移行とレプリケーションの構成 障害復旧方法 シャーディング その他曰く云い難い何かになります。 分散モード elixir/erlangランタイムOSプロセス(群)はノードと呼ばれ、スタンドアローンと分散の二つのモードがあり、分散モードのノードはさらに、ホスト内で有効なショートネームとホストを超えて有効なロングネームのモードがあります。 モードの切り替えは、
:ets.new/2で新しいテーブルを作成してETSのPIDが返ります。1個目の引数はテーブル名のatom、2個目はテーブルの定義をatomのlistで設定します。 :setはテーブルの定義を指定していて、同一のキーは登録不可になります。他だと:bagはキーの重複ありなど種類に応じて使い分けられます。 :protectedはアクセスの範囲を指定しています。この場合だと書き込みはテーブルを作成したプロセスのみ、読み取りはオープンという具合です。他にはpublic、privateがあります。 読み書き iex(2)> :ets.insert(table, {:foo, "hoge"}) true iex(3)> :ets.lookup(table, :foo) [{:foo, "hoge"}] iex(4)> :ets.lookup(table, :bar) [] iex(5)> :ets.i
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く