最近学习erlang,在erlang中天然集成了一个分布式数据库名字叫mnesia,因为数据库天然就和erlang的元组,记录无缝结合,并且具有良好的分布式特性,能够自动地在几个erlang节点上实现数据复制,效果有点像zookeeper的节点集群,而且mnesia还支持数据库事务特性,所以mnesia在erlang应用中使用得非常频繁。
要在本地创建一个mnesia数据库,并且要实现插入,查询功能需要实现以下这几步:
1.启动erlang节点:
erl -mnesia dir '"d://tmp//mnesia"' -sname mynode
以上这个d://tmp//mnesia目录是存放mnesia数据库的schema数据的,当然这个目录也可以不指定,那么mnesia数据库启动之后将把数据库的schema中的数据放在内存中,如果下次节点重启之后,之前数据库中创建的表结构数据就消失了。
2.接下来就是在erl shell中本地初始化一个空的mnesia数据库
mnesia:create_schema([node()]).
从参数上是一个节点列表,所以其实需要的话,可以在参数列表上设置多个erlang节点,就能在多个erlang节点上同时创建mnesia数据库了。
3.启动mnesia数据库
初始化完成了mnesia数据库schema之后,接下来就可以启动mneisa数据库了。
mnesia:start().
至此,一个空的mneisa已经创建启动成功了,我们可以调用mnesia:info(). 查看当前mnesia数据库的一些状态,结果如下:
---> Processes holding locks <--- ---> Processes waiting for locks <--- ---> Participant transactions <--- ---> Coordinator transactions <--- ---> Uncertain transactions <--- ---> Active tables <--- schema : with 1 records occupying 432 words of mem ===> System info in version "4.4.14", debug level = none <=== opt_disc. Directory "d:/tmp/mnesiaa" is NOT used. use fallback at restart = false running db nodes = ['mynode@aliyun-18097n'] stopped db nodes = [] master node tables = [] remote = [] ram_copies = [schema] disc_copies = [] disc_only_copies = [] [{'mynode@aliyun-18097n',ram_copies}] = [schema] 2 transactions committed, 0 aborted, 0 restarted, 0 logged to disc 0 held locks, 0 in queue; 0 local transactions, 0 remote 0 transactions waits for other nodes: [] ok
从[{'mynode@aliyun-18097n',ram_copies}] = [schema] 这行上来看当前数据库中只有一个数据库的schema表。
接下来是要在空的数据库中创建表格,并且执行CRUD的操作,请看下一篇博客:http://mozhenghua.iteye.com/admin/blogs/1885918
相关推荐
Mnesia是一个分布式数据库管理系统(DBMS),适合于电信和其它需要持续运行和具备软实时特性的Erlang应用。 目 录 1 、介绍 . . .. . .. . . .. . 4 1.1 关于 Mnesia . . .. . .. . . .. . 4 1.2 Mnesia ...
在查询Mnesia数据库时,可以使用Erlang或Elixir的模式匹配功能,这提供了强大的查询能力,同时也保持了代码的简洁性。 7. **故障恢复和容错**: Mnesia通过复制数据来实现容错。当一个节点失败时,其他节点可以...
通过《Mnesia用户手册》,读者将能够全面了解如何创建、操作和管理Mnesia数据库,包括数据模型设计、查询优化、故障恢复策略以及最佳实践。这份手册是每个Erlang开发者在处理分布式数据库需求时的宝贵资源。
3.4.创建新表 4、事务和其他上下文存取 4.1.事务属性 4.2.锁 4.3.脏操作 4.4.记录名与表 4.5.作业(Activity)概念和多种存取上下文 4.6.嵌套事务 4.7.模式匹配 4.8.迭代 5、其它.Mnesia.特性 ...
Mnesia 是一个强大的分布式数据库管理系统(DBMS),专门为Erlang编程语言设计,特别适用于需要高可用性、持续运行和软实时特性的电信和其他关键业务应用。这个系统允许在多个节点间同步数据,提供了一种在分布式...
- **结合Mnesia与SNMP**:描述了如何使用简单网络管理协议(SNMP)监控Mnesia数据库的状态。 - **错误信息与回调接口** - **Mnesia错误信息**:提供了Mnesia常见错误及其解决方案的列表。 - **备份回调函数接口*...
Ecto支持多种数据库,如PostgreSQL、MySQL等,而ecto_mnesia就是为Mnesia数据库提供支持的适配器。 **Mnesia数据库** Mnesia是Erlang的标准数据库系统,设计用于实时系统和高并发环境。它支持记录和表的存储,提供...
Mnesia 是一个分布式数据库管理系统,它是 Erlang 语言环境的一部分,专门设计用于在分布式系统中存储和查询数据。随着业务需求的增长,单个 Mnesia 表的大小和性能可能会成为瓶颈。为了解决这个问题,Mnesia 提供了...
Mnesia提供了丰富的API函数来管理数据库,包括创建、删除表,插入、更新和删除记录,以及执行查询等。这些函数以Erlang的函数调用形式存在,易于理解和使用。 **7. 高可用性与容错** Mnesia的复制和故障恢复机制是...
Symbian也支持其他数据库,如Mnesia和Palm SQL,但SQLite因其开源、高效和易用性而成为首选。 1. **SQLite在Symbian中的应用**:SQLite在Symbian上的实现是通过一个本地化的库,名为sqlite3.dll,它提供了API供...
"指的是一个名为"Mnesiac"的工具或库,它简化了Erlang的Mnesia数据库系统的集群操作。Mnesia是OTP(开放电信平台)的一部分,是一个分布式、事务性的数据库管理系统,常用于实时系统。Mnesiac的出现,尤其是对于...
在本教程中,我们将深入探讨如何使用Elixir编程语言、Phoenix框架和Mnesia数据库来创建一个链接缩短器服务。这个服务允许用户输入长URL,并返回一个简短的、可自定义的链接,当访问这个短链接时,会重定向到原始的长...
模式匹配和守卫:程序结构的基础通过递归,字符串,列表和更高级的Delixir处理的核心-order函数创建进程,在它们之间发送消息,并将模式匹配应用于传入消息使用Erlang Term Storage(ETS)和Mnesia数据库存储和操作...
例如,通过AMNESIA,你可以直接创建、读取、更新和删除(CRUD)数据库记录,而无需编写SQL查询。 AMNESIA支持多种关系数据库,包括MySQL、PostgreSQL、SQLite等,这为开发者提供了灵活性,可以根据项目需求选择合适...
Erlang的Mnesia数据库是一个可扩展的、非关系型、事务性数据库,它作为内存中的数据存储,提供了非常快的读写能力。虽然它不适用于大型数据存储,但在需要快速读写的系统中非常有用。Erlang的表存储功能是用于持久化...
Symbian是一个曾经广泛使用的智能手机操作系统,它为开发者提供了丰富的平台来创建各种应用,包括数据库应用。本文将深入探讨Symbian S60平台上DBMS的使用,以及"DBMS.rar_dbms_symbian_symbian DBMS"这个压缩包中...
Erlang提供了多种数据库连接库,如Mnesia(Erlang内置的分布式数据库)或者其他第三方库如MySQL、PostgreSQL的驱动,用于存储和检索游戏数据。 6. **游戏源码分析**:对于初学者来说,分析游戏服务器的源码可以帮助...
在系统环境变量中添加RABBITMQ_NODE_IP_ADDRESS和RABBITMQ_MNESIA_BASE,前者指定RabbitMQ服务器的IP地址,后者指定了Mnesia数据库的存储位置。Mnesia是Erlang的一个分布式数据库管理系统,RabbitMQ使用它来存储队列...
4. **Mnesia数据库**:Mnesia是OTP的一部分,是一个分布式事务型数据库,支持实时查询和高可用性。 5. **公共应用程序接口(API)**:OTP提供了一系列标准库,如加密、SSL、HTTP服务器、XML解析等,简化了开发工作...