Mnesia 学习笔记(1)

 

1、引言

Mnesia 是分布式数据库管理系统,尤其适合电信领域的应用,因为mnesia是软件实现的实时系统,具有高度容错的高可靠性,可以长期稳定运行。

mnesia是OTP( Open Telecom Platform )的组成部分。OTP 是建造通信应用程序的控制系统平台。

别以为mnesia只能用于开发电信系统。这刀能宰牛,岂不能杀鸡?用它做其他Erlang应用程序,可说是大材小用,你敞开造吧!

1.1 Mnesia 的设计目标:

1、实时快速的“键/值”查找;

2、非实时系统需要的、主要用于操作和维护的复杂功能;

3、分布式系统需要的数据分布;

4、高容错;

5、动态重新配置

6、复合对象存取

1.2 Mnesia 简介

1.2.1 功能

● 数据库结构可在运行时刻动态配置;

● 数据表的属性,可以声明成“本地”、“可复制”、“永久保存”等几种;

● 数据表可在节点上复制或删除,以改进容错度。系统其他部分仍可对该表读、写、删(记录);

● 程序员只需知道数据表的名称,不必关心它的具体存放处。系统会自行跟踪数据表的存放位置;

● 数据库的事务可以分布到各节点,一个事务中可以调用大批函数;

● 几个事务可以同时并行处理,完全同步。Mnesia保证同一数据不能被二个以上进程同时操作处理;

● 可以赋予事务这样的属性:它们正在系统的每个节点中执行或未执行。为了减少资源开销占用,大幅提速程序运行,可以放弃事务。这称为“不洁操作”("dirty operations")。

以下各节分别述说这些功能。

1.2.2 插入式应用程序

● QLC 和 Mnesia Session 可以与 Mnesia 结合使用,以产生专用功能,加强Mnesia的易操作性。QLC 能为Mnesia优化查询引擎,使其效率得到根本性提升。

● QLC 可以作为Mnesia的数据库编程语言。它的句法叫做“表元自选”("list comprehensions"),可用于书写复杂的数据库查询语句,对多个数据表进行集合操作。

● Mnesia Session 是Mnesia数据库管理系统的接口,使得其他非Erlang语言能够访问Mnesia。

1.2.2.1 使用 Mnesia 的理由

适合 Mnesia 的应用有以下几种类型:

● 需要复制数据的;

● 需要结构复杂的数据查询语句的; 

● 需要以原子事务(atomic transactions)同时更新一些记录的;

● 需要使用软件实时系统特性的。

不适合 Mnesia 的应用有以下几种类型:

● 处理纯文本文件、二进制文件数据的;

● 所做操作,仅需“查找字典”的帮助,而这个字典可以保存在硬盘上,并且可以用标准库模块dets优化的(dets是硬盘版的ets);

● 需要硬盘日志工具,并且优化模块 disc_log 也可满足需求的;

● 运行在硬件实时系统之上的。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值