日期:2014-05-16 浏览次数:20707 次
Mnesia是一个分布式数据库管理系统,适合于电信和其它需要持续运行和具备软实时特性的Erlang应用,越来越受关注和使用,但是目前Mnesia资料却不多,很多都只有官方的用户指南。文章将着重说明 如何使用 Mnesia 数据库。
创建数据库:
1、启动erlang mneisa :
erl -mnesia dir Dir
erl -mnesia dir ‘“d:/mnesia”’
2、创建数据库:
mnesia:create_schema(DiscNodes) -> ok | {error,Reason}
mnesia:create_schema([node()]) .
mnesia:start() -> ok | {error, Reason}
mnesia:start() .
注:数据库创建后,使用数据库必须先启动mneisa服务:
erl -mnesia dir ‘“d:/mnesia”’ -s mnesia创建表:
1、声明表结构:
mnesia表结构可以用record声明
例:用户表
-record(person, {name, age, address, salary, children}).
注:record不是shell命令,不能在 erlang shell 直接使用。可以将结构保存到 record.hrl 文件,使用 rr("record.hrl"). 引进
2、创建表:(文档)
mnesia:create_table(Name, TabDef) -> {atomic, ok} | {aborted, Reason}
mnesia:create_table(person, [{attributes, record_info(fields, person)}]).
注:记录的第一个属性为主键。数据表的默认类型是“set”。在一个集合(set)里,所有的记录有唯一的键,在一个包(bag)里,几条数据可能有相同的键,但是记录的内容是唯一的。如果一个不唯一的数据被存储到表中,该记录会被覆盖 。
数据库查询:
例:查询某用户(更多数据库查询例子)
q(Name) -> F = fun() -> mnesia:read({person, Name}) end, mnesia:transaction(F).
可视化工具:
Erlang自带一个可以看Mnesia和ETS表查看器,使用tv:start()启动。