erlang mnesia資料庫設定主鍵自增

2021-09-01 21:22:46 字數 1165 閱讀 2249

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索引,也就是說預設使用...