mnesia是erlang/otp自帶的分布式資料庫管理系統。mnesia配合erlang的實現近乎理想,但在實際使用當中差強人意,總會有一些不足。mnesia資料表沒有主鍵自增的功能,但在mnesia函式中有乙個自增函式可以用來生成自增的id,在後面的內容將講述如何實現主鍵自增的功能。
參照sqlite的做法,就是在資料庫中單獨建立乙個的sqlite_sequence表來做其他表的自增索引表。同樣,我們也建立這樣乙個表erlang_sequence,用來索引其他表的自增id,看似麻煩,效果還是很理想。
-module(m).
-export([init/0, reg/2]).
-record(user, ).
-record(erlang_sequence, ).%自增索引表,維護其他表的自增id
init() ->
mnesia:create_schema([node()]),
mnesia:start(),
mnesia:create_table(erlang_sequence, [ , , ]),
mnesia:create_table(user, [ ,
, ]),
ok.reg(name, age) ->
f = fun() ->
userid = mnesia:dirty_update_counter(erlang_sequence, user, 1),
user = #user,
mnesia:write(user)
end,
mnesia:transaction(f),
ok.
執行**:
d:\>erl -mnesia dir '"mnesia"'
eshell v5.10.2 (abort with ^g)
1> c(m).
2> m:init().
ok3> m:reg("xiaomin",18).
ok4> m:reg("xiaohong",17).
ok5> tv:start().
<0.92.0>
mnesia資料庫檢視:
Erlang Mnesia資料庫遷移方法
本文參考 因為一些原因,需要把乙個mnesia節點的資料庫搬遷到另乙個節點,然後棄用原來的節點。首先假設節點a a ipa 需要搬遷到節點b b ipb 它們需要能夠連通 a ipa 需要啟動著 包括mnesia,set cookie cookiea 啟動節點b,為mnesia指定乙個新路徑 erl...
erlang mnesia 節點同步資料
mnesia的機制稍微有些奇怪,今天一天都比較閒,於是測試study了下,看看是如果動作.目標 逐漸新增n個mnesia節點,並確保資料在這些節點上保持同步.過程如下 1.mnesia的分布式可以從乙個節點開始,然後慢慢新增.2.新增加乙個節點的時候,首先要確保新節點上已經呼叫過mnesia sta...
資料庫 資料庫索引
索引是儲存引擎用於快速找到記錄的一種資料結構。索引以檔案的形式儲存在磁碟中。索引可以包含乙個或多個列的值。儲存引擎查詢資料的時候,先在索引中找對應值,然後根據匹配的索引記錄找到對應的資料行。1.b tree索引 2.雜湊索引 myisam和innodb儲存引擎 只支援btree索引,也就是說預設使用...