如果事务异常终止,Mnesia 将自动释放该事务的锁。
我们在前面已经示范了一些可以用于事务中的函数。下面会列出可在事务中工作的最简单的
Mnesia 函数。重要的是要知道这些函数必须被嵌入到事务中。如果没有封装事务(或其他可用来
封装的 Mnesia 作业)存在,这些函数将失败。
•
mnesia:transaction(Fun) -> {aborted, Reason} |{atomic, Value},这
个函数用函数对象 Fun 作为单独的参数执行一个事务。
•
mnesia:read({Tab, Key}) -> transaction abort | RecordList,这个函数
从表 Tab 中读取全部键值为 Key 的记录。无论表在哪里,此函数具有同样的语义。如果表
的类型是 bag,则 read({Tab, Key})可能返回一个任意长的列表。如果表的类型是 set,则
列表的长度等于一或者为[]。
•
mnesia:wread({Tab, Key}) -> transaction abort | RecordList,该函数
与上面列出的 read/1 函数行为一样,只是其会获取一个写锁而不是一个读锁。如果我们执
行一个读取一条记录,修改这条记录,然后再写此记录的事务,那么立即设置一个写锁会
更有效。 如果我们先调用 mnesia:read/1,然后调用 mnesia:write/1,那么执行写操作时必须
将读锁升级为写锁。
•
mnesia:write(Record) -> transaction abort | ok, 这个函数将一条记录写
入数据库中。 Record 参数是记录的一个实例,此函数返回 ok 或者在错误发生时中止事务。
•
mnesia:delete({Tab, Key}) -> transaction abort | ok, 这个函数删除
Key 对应的所有记录。
•
mnesia:delete_object(Record) -> transaction abort | ok, 这个函数删
除对象标识为 Record 的记录。该函数仅用来删除表的类型为 bag 的记录。
分享到:
相关推荐
• Mnesia provides an introduction to Mnesia. • Getting Started introduces Mnesia with an example database. Examples are included how to start an Erlang session, specify a Mnesia database directory, ...
《Mnesia用户手册》是专为理解和操作Erlang编程语言中的Mnesia数据库管理系统而编写的详尽指南。Mnesia是Erlang OTP (Open Telephony Platform) 库中的一个核心组件,它是一个强大的分布式数据库系统,特别适用于...
1.1.关于.Mnesia 1.2.Mnesia.数据库管理系统(DBMS 2、开始.Mnesia 2.1.首次启动.Mnesia 2.2.一个示例 3、构建.Mnesia.数据库 3.1.定义模式 3.2.数据模型 3.3.启动.Mnesia 3.4.创建新表 4、事务和...
1. **关于 Mnesia** Mnesia 的设计目标是结合关系型数据库的易用性和面向对象数据库的灵活性,同时考虑到 Erlang 的并发特性和容错能力。它支持多种数据类型,如记录、键值对等,并且可以处理复杂的查询操作。...
3. **紧密集成Erlang**:Mnesia与Erlang编程语言紧密集成,允许开发者使用Erlang函数直接操作数据库,从而简化了开发流程并提高了效率。 4. **事务处理**:Mnesia支持原子性、一致性、隔离性和持久性(ACID)事务,...
1.1 关于 Mnesia . . .. . .. . . .. . 4 1.2 Mnesia 数据库管理系统( DBMS ) . . .. . . .. . 4 2 、开始 Mnesia . . .. . .. . . .. . 7 2.1 首次启动 Mnesia . . .. . .. . .. . 7 2.2 一个示例 . . .. . ....
在事务和上下文访问方面,Mnesia提供了事务属性定义、锁机制、脏操作、记录名与表名映射、作业概念、嵌套事务、模式匹配、迭代等高级功能,支持复杂的数据库操作。 Mnesia的系统信息部分涵盖了数据库配置数据、内核...
Mnesia 是一个分布式数据库管理系统,它是 Erlang 语言环境的一部分,专门设计用于在分布式系统中存储和查询数据。随着业务需求的增长,单个 Mnesia 表的大小和性能可能会成为瓶颈。为了解决这个问题,Mnesia 提供了...
- Mnesia 支持软实时操作,这意味着虽然它不能像硬实时系统那样提供严格的响应时间保证,但它能够在大部分情况下满足实时响应的需求。 **4. 与Erlang紧密结合** - Mnesia 是用Erlang编写的,并且与Erlang语言...
Mnesia是一个分布式数据库管理系统,适合于电信和其它需要持续运行和具备软实时特性的Erlang应用,越来越受关注和使用,但是目前Mnesia资料却不多,很多都只有官方的用户指南。下面的内容将着重说明 如何做 Mnesia ...
“mnesia_pg:Postgres后端通过mnesia_ext到Mnesia” 这个标题揭示了一个项目,它的目标是将PostgreSQL数据库作为Erlang的Mnesia分布式数据库系统的一个后端。Mnesia_ext是Mnesia的一个扩展,它允许添加自定义的数据...
### Mnesia概述与关键知识点 #### 一、Mnesia数据库管理系统简介 Mnesia是一个专为电信应用设计的分布式、容错数据库管理系统(DBMS)。它由爱立信公司的计算机科学实验室开发,旨在解决传统商用数据库管理系统...
Mnesia支持事务操作,确保数据的一致性和完整性。事务可以是读写事务或只读事务,且可以设置为同步或异步执行,以平衡性能和安全性。 6. **模式匹配**: 在查询Mnesia数据库时,可以使用Erlang或Elixir的模式匹配...
Mnesia数据库对于您的可用内存而言开始变得太大了? 对于ram_copies和disc_copies ,整个表都保留在内存中,因此数据大小受可用RAM的限制。 对于disc_only_copies ,由于后端dets缘故,每个表限制为2 GB。 cachet...
Mnesiam使Mnesia数据库的群集变得容易。 可以在上找到模块文档。 安装 该软件包可以通过添加安装mnesiam你在依赖列表mix.exs : def deps do [{ :mnesiam , " ~> 0.1.1 " }] end 在您的应用程序之前,请确保已...