參考資料:
mnesia 使用者手冊相關的微博
mnesia 應用例子乙個
資料庫啟動
啟動的時候指向乙個特定的資料庫:
erl -mnesia dir '"dir"'指定了mnesia儲存資料的目錄,
windows下可以是erl -mnesia dir 'dir'
dbms通過mnesia:start()啟動
資料庫停止
mnesia:stop()
可以通過mnesia:info()檢視資料庫狀態
建立資料表
-record(muppet, ).
mnesia:create_table(name, arglist)用來建立表
name是表名,
mnesia:create_table(muppet, )
記錄中的欄位名就是資料表的各個字段,預設情況下主鍵是記錄的第乙個元素,
每一條記錄的例項成為乙個物件,物件表名和主鍵作為物件識別符號
常見的屬性:
->type 可以是set, ordered_set, bag
3.資料表的插入一條記錄
test= #muppet,
f=fun()->mnesia:write(test) end
mnesia:transaction(f).
資料表的讀取一條記錄
oid = ,
mnesia:read(oid).
資料表的刪除一條記錄
要想刪除一行,需要知道這一行資料的目標oid,
oid由表的名稱和主鍵值決定
oid =
f=fun()->mnesia:delete(oid) end
mnesia:transaction(f).
事務mnesia:transaction(fun)表示fun位於乙個事務中:
1)fun要麼完全成功要麼完全失敗
2)操作同樣資料record的**可以並行執行,不同的程序不會相互干擾
事務具有原子性。
呼叫mnesia:abort(reason) 取消乙個事務,資料庫恢復到進入事務
之前的狀態。
髒操作有時在事務的範圍以外而且沒有設定任何鎖來執行一次操作,是可以接
受的這種操作成為髒操作,mnesia中,髒操作的速度比在事務中執行的
速度快大約十倍,在可以保證表一致性,隔離性,永續性,以及分布式
特性,髒操作可以大大提高程式效能
dirty_read()
dirty_write(記錄名)
dirty_delete()
這些操作和事務中執行操作一樣
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
mnesia:start().//啟動rd(muppet, ).//建立記錄用於建立資料庫
mnesia:create_table(muppet, ).//建立資料庫表
mnesia:table_info(muppet, attributes). //以列表形式獲取資料表的各個欄位名稱
[name,callsign,salary]
mnesia:dirty_write(#muppet).//寫入乙個記錄
mnesia:table_info(muppet,size)
1mnesia:table_info(muppet,type).
setmnesia:dirty_all_keys(muppet).
["sh"]
mnesia:dirty_read(muppet,"sd").
[#muppet]
mnesia:dirty_write(#muppet).
mnesia:dirty_read(muppet,ssd).
[#muppet]
mnesia:dirty_all_keys(muppet).//記錄的各個主鍵名稱
["sd",ssd]
mnesia:table_info(muppet,size)//記錄的個數
2mnesia:table_info(muppet, record_name).
muppet
mnesia:add_table_copy(tab, node, type).
建立乙個復件表在node節點上。type只能是原子ram_copies,disc_copies, disc_only_copies之一。
假如我們添乙個schema系統表復件到乙個節點, 這樣就擴充套件了mnesia系統的節點數
node()
mnesia:add_table_copy(muppet,node(),ram_copies).mnesia:add_table_copy(muppet,my@debian,ram_copies).}
17> mnesia:add_table_copy(muppet,my@debian,ram_copies).
}也可以這樣建立資料表,但是這個之後怎麼用是乙個問題
mnesia:create_table(muppet,).
Erlang資料庫Mnesia操作
mnesia是一套輕量級的軟實時分布式資料儲存系統,支援冗餘複製和事務,特別適合於儲存離散的erlang資料塊,尤其擅長ram中的資料儲存。初始化資料庫步驟 1.啟動節點,erl mensa dir dir name mynode 2.建立資料庫模式,mnesia create schema nod...
erlang資料庫Mnesia主鍵自增
erlang資料庫mnesia主鍵自增 2012 09 24 22 32 07 分類 python ruby 對於mnesia資料庫表有時候需要有乙個id欄位,就像關聯式資料庫的主鍵.最簡單的辦法是用uuid做id,但是我們希望此id是整數遞增的.或者用 做id也是不錯的辦法.類似於乙個set集合 ...
erlang中的spawn函式
spawn fun pid 引數型別 fun function 引數為空的函式 返回型別 程序pid 說明 生成乙個由fun函式啟動的 引數為空的新程序,並返回程序的pid。spawn node,fun pid 引數型別 node node 節點 fun function 引數為空的函式 返回型別 ...