mnesia

mnesia_key_cache を公開しました

他の誰が嬉しいのかわかりませんが、自分が嬉しいライブラリです。https://github.com/voluntas/mnesia_key_cachemnesia にはランダムに一つキーを持ってくるという機能があることにはあるのですが、 その mnesia:first/1 はテーブルロックしてしまって大量…

分割されたテーブルの一覧を取得する

@itawasa から教えて貰いましたmnesia_frag を使うとテーブルが細かく分割されてしまいます。このテーブル一覧が欲しいときは、table_info で frag_names を指定すると取得できるようです。 mnesia:activity(async_dirty, mnesia:table_info/2, [store, frag…

分割された mnesia を使う

mnesia_frag はテーブル分割をしてくれる素敵な仕組みです。mnesia には制限があり1テーブル最大 2GiB までというモノがあります。これでは色々使えません。ということで誰もが思いつくのが Sharding のパーティショニングです。レプリケーションはもともと…

Mnesia で分散ノードが落ちて再度追加する動き

Mnesia の解説で分散ノードを追加する話しはあるけど、落として再度追加する話しってないなーと思ったので、サンプルコードと共に書いてみました。色々面倒なのでソース読んでなんとかしてください。とりあえずソース -module(test). -compile([export_all, …

分散のテスト

落書きですみません。元ネタは下記の URL から。 "少年よ大志を抱け: Erlang: Mnesiaで分散DB" 単に少し書き直した程度でほとんど代わっていません。あ、transaction めんどくさくて使ってませんね。 =================== Mnesia =================== 分散 D…

Mnesia の disc_copies と index のサンプル

Mnesia の基礎パート2ということで、Mnesia の disc_copies と index を使ってみました。index は普通の index です。指定した atom (カラム) に対して index を張る事が出来ます。 mnesia:add_table_index(キー, カラム) と設定すれば index が生成されま…

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.…

mnesia の dump_to_textfile や load_textfile

mnesia に大量のデータを突っ込みたいとき色々考えていたのですが、結論としては dump した textfile を作成して一気に読み込ませればいいのかなぁと、調べてみました。テーブルは1つで record(user, {user_name, password}) だけ。mnesia:dump_to_textfile…

4G の壁について

beating mnesia to death (was RE: Using 4Gb of ram with Erlang VM) http://www.erlang.org/pipermail/erlang-questions/2005-November/017728.html64 bit で ...

mnesia:read

なんか毎回 mnesia の機能を紹介してる気がしますが、キノセイでしょう。 mnesia からデータを引っ張ってくるとき、qlc を使うのが普通だとは思いますが、ets:lookup(Tab, Key) のようなのもあります。mnesia:read({Tab, Key}) で、使えます。

COUNT

mnesia で COUNT みたいな事をやるにはどうすべきかと考えました。 今は、引っ張った結果を tuple_to_list して size でとっていますが、これは非効率。 そのうえ遅い。なので、ets:select_count(Tab, Match) を使おうかと考えていますが、うまくいくのかど…

mnesia がとてもよい

使い方をまだまだ把握していませんが、とてもよい DB システムだと思います。 オンメモリーで使っているので、とても早いです。 これは、mnesia.pdf を翻訳する必要があるかも。Erlang 良いですよ:-)

mnesia + file:consult

file:consult はファイルからそのまま Erlang オブジェクト?に変換できます。 もちろんファイルは Erlang 形式で書いておく必要があります。 {users, <<"spam">>, <<"eubIZs47">>}. {users, <<"eggs">>, <<"bgOYF0bT">>}. {users, <<"bacon">>, <<"QekmMgcP…

register/spawn で並列化してみた。

compile(export_all) は、どうせ本気では使わないとおもうので。 それにしても、ほんっとこつがつかめない言語です、 おそらくこの書き方もまた中途半端なんだろうなと思います。 これにネットワークが関係すると、さらに面倒になる気がします。 本来は、do(…

mnesia のお勉強。

mnesia は Erlang に最初から入っている DBMS です。簡単な認証を書いてみました。 username と userpassword を送って mnesia 引いて、accept/reject を返すだけ。 はっきりいってたいしたことしてない。 ここからもっと広げていくつもり。mnesia に興味持…

マニュアル発見

http://www.erlang.org/doc/apps/mnesia/index.html色々よだれものの DB な気がします、 あとは メモリー上に持っているとき同期をとれるかどうかと 1600万件とかの情報を登録したときどの程度か。PDF 発見 ... 読む。http://erlang.org/doc/pdf/mnesia.…