Mnesia是一个分布式数据库管理系统DBMS,适合于需要连续运算和软实时特性的电信应用及其他Erlang应用
目录
1,介绍
2,Mnesia快速上手
3,构建一个Mnesia数据库
4,事务和其他访问上下文
5,多种Mnesia特性
6,Mnesia系统信息
7,联合Mnesia和SNMP
8,Mnesia错误消息
9,备份callback接口
10,活动访问callback接口
11,碎片表哈希callback接口
1,介绍
本手册介绍了Mnesia数据库管理系统
Mnesia是一个分布式数据库管理系统,它是OTP的一部分,OTP是构建电信应用的控制系统平台
1.1 关于Mnesia
电信系统里数据的管理和传统的商业DBMS有很多相似之处,但不全是
特别是在许多永不宕机系统里的高级别的容错、和应用程序运行在同一地址空间等需求导致我们实现一个全新的DBMS——Mnesia
Mnesia使用Erlang实现,并且和Erlang紧密连接在一起,它提供实现容错电信系统必要的功能
Mnesia是多用户分布式DBMS,特别为使用符号编程语言Erlang写就的工业级电信应用量身打造
Mnesia尝试解决典型的电信系统所以的数据管理问题,它有许多传统数据库所没有的特性
在电信应用里有许多不同于传统DBMS的需求,使用Erlang实现的应用混合了多种特效,这是传统DBMS所满足不了的
Mnesia的设计符合以下需求:
1,快速实时key/value查询
2,复杂的非实时查询,主要为运营和维护
3,分布式数据,为分布式应用
4,高容错
5,动态重配置
6,复杂对象
让Mnesia区别于大部分其他DBMS的是它是设计来解决电信应用典型的数据管理问题
Mnesia有许多传统数据库的概念,如事务和查询
Mnesia也有许多电信应用里的数据管理,如快速实时计算,配置容错级别(通过备份),不宕机的重配置等等
Mnesia和Erlang编程语言紧密结合在一起,这样它在操作数据时没有阻抗失配的问题(数据库和编程语言所操作的数据格式一样)
1.2 Mnesia数据库管理系统
特性
Mnesia包括以下特性,以产生容错、分布式数据库管理系统:
1)数据库结构可以在运行时动态重配置
2)表可以声明含有location、replication和persistence等属性
3)表可以迁移或备份到多个不同的节点来改进容错,系统其他部分仍然可以访问表来读写和删除记录
4)表的位置对程序员透明。程序让表名和系统本身来跟踪表的位置
5)数据库事务可以分布,大量的方法可以在一个事务里调用
6)不同的事务可以并行运行,它们的执行由数据库管理系统保证完全同步。Mnesia保证不会有两个进程同时操作数据
7)事务可以在系统的所有节点上执行,也可以不在任何节点上执行。事务也可以在避免“脏操作”时避开以减少开销并保证运行快速
application插件
QLC和Mnesia Session可以和Mnesia一起使用来提供一些特有的功能,以加强Mnesia的操作能力
Mnesia Session和QLC都有相应的OTP文档
下面是Mnesia Session和QLC的主要特性:
1)QLC拥有为Mnesia数据库管理系统优化查询编译器的能力,从根本上让DBMS更高效
2)QLC可以用来作为Mnesia的数据库编程语言,它包括“list comprehension”,可以用来在一些表上做复杂的数据库查询
3)Mnesia Session是Mnesia数据库管理系统的一个接口
4)Mnesia Session允许外部编程语言(即除了Erlang以外的语言)访问Mnesia DBMS
何时使用Mnesia
在以下几种应用场景使用Mnesia:
1)需要备份数据的应用
2)在数据上执行复杂的搜索的应用
3)需要使用原子事务来同步更新一些记录的应用
4)使用软实时特性的应用
另一方面,Mnesia可能不适合以下类型的应用:
1)处理纯文本或二进制文件数据的程序
2)仅仅需要可以持久化到硬盘的字典查询的应用可以使用标准库dets,它是硬盘版的ets
3)需要硬盘日志功能的应用更应该使用disc_log
4)不适合硬实时系统
作用域和目的
本手册是OTP文档的一部分,它描述了怎样构建Mnesia数据库应用,怎样集成和使用Mnesia数据库管理系统和OTP
本手册讲述了编程结构,并包含了大量编程实例来解释Mnesia的使用
前提
本手册的读者需要熟悉系统开发原则和数据库管理系统,并熟悉Erlang编程语言
分享到:
相关推荐
Mnesia是一个分布式数据库管理系统,特别适用于需要持续运行和具备软实时特性的Erlang应用,如电信系统。它作为开放式电信平台(OTP)的一部分,是用Erlang编程语言实现的。Mnesia的设计初衷是为了解决电信应用中的...
8.附录.A:Mnesia.错误信息 8.1.Mnesia.中的错误 9.附录.B:备份回调函数接口 9.1.Mnesia.备份回调行为 10.附录.C:作业存取回调接口 10.1.Mnnesia.存取回调行为 11.附录.D:分片表哈希回调接口 11.1....
《Mnesia用户手册》是专为理解和操作Erlang编程语言中的Mnesia数据库管理系统而编写的详尽指南。Mnesia是Erlang OTP (Open Telephony Platform) 库中的一个核心组件,它是一个强大的分布式数据库系统,特别适用于...
Mnesia 是一个强大的分布式数据库管理系统(DBMS),专门为Erlang编程语言设计,特别适用于需要高可用性、持续运行和软实时特性的电信和其他关键业务应用。这个系统允许在多个节点间同步数据,提供了一种在分布式...
Mnesia是一个分布式数据库管理系统(DBMS),适合于电信和其它需要持续运行和具备软实时特性的Erlang应用。 目 录 1 、介绍 . . .. . .. . . .. . 4 1.1 关于 Mnesia . . .. . .. . . .. . 4 1.2 Mnesia ...
4. **mnesia_ext**:这是Mnesia的一个扩展机制,允许用户自定义数据存储方式。了解如何通过mnesia_ext来接入其他数据库系统,如PostgreSQL。 5. **分布式系统设计**:讨论如何在Erlang和PostgreSQL之间构建分布式...
总结来说,"Amnesia_CCK"是一个开源项目,它将"Amnesia"游戏的源代码进行了CCK兼容性的修改,旨在提供一个平台,让用户能够更自由地创造和分享"Amnesia"的游戏内容。通过这个项目,开发者和玩家可以深入探索游戏的...
如果您需要更多自定义处理/行为,为这些编写服务可能是一个更好的主意。 AmnesiaCache只是方便。 假设我们给AmnesiaCache的生命周期是2000 ( 2s )。 任何中间有至少2s暂停的实体, AmnesiaCache都会忘记它,如下所...
二、为什么开源最最最最主要的原因还是因为小程序不允许个人发布这种用户可以输入功能的小程序,导致没有用户使用其次是因为,我个人觉得它是一款不错的软件,希望开源后可以让它更加的完善 从功能上来说:它的确...
session, specify a Mnesia database directory, initialize a database schema, start Mnesia, and create tables. Initial prototyping of record definitions is also discussed. • Build a Mnesia Database ...
- **授权码或访问令牌的生成**:授权服务器验证用户身份并获取用户授权后,会生成一个授权码或直接发放访问令牌,存储在Mnesia中,并将响应发送回客户端。 - **令牌验证**:客户端持授权码或访问令牌向授权服务器...
5. **模式定义**:Mnesia允许用户定义数据库模式,包括表、索引和属性等,提供了一种结构化的方式来组织和访问数据。 6. **查询语言**:Mnesia提供了自己的查询语言,允许用户执行复杂的查询和数据操作,同时也有对...
Api-Social-Amnesia.zip,忘记过去。社交健忘症确保你的社交媒体帐户只显示你最近的历史,而不是5年前“那个阶段”的帖子。,一个api可以被认为是多个软件设备之间通信的指导手册。例如,api可用于web应用程序之间的...
语言:English (United States) 遗忘的延伸 Chrome失忆症是一个Chrome扩展程序,可让您有选择地不记得自己的任何浏览历史记录。...有关更多信息,请访问https://github.com/DanielBok/chrome-amnesia。
Mnesiam使Mnesia数据库的群集变得容易。 可以在上找到模块文档。 安装 该软件包可以通过添加安装mnesiam你在依赖列表mix.exs : def deps do [{ :mnesiam , " ~> 0.1.1 " }] end 在您的应用程序之前,请确保已...