Mnesia
数据库,在计算机的世界里,我们要开发一个APP,亦或者是制作一个小程序,还是说要编写一个多用户游戏,制作一个新网站,或者创建一个在线支付系统,都需要数据库(DataBase)以及数据库管理系统(Database Management System,简称DBMS)。Erlang理所当然也给我们提供了响应的配套系统,本文旨在分享笔者学习和使用erlang数据库mnesia时的经验和学习过程。
数据库与数据库表的创建
数据库
Mnesia数据库是标准Erlang分发套装的一部分。将它配置为内存复制后,就能在两个物理隔离的节点上实现快速的容错式数据存储。它还支持事务,并有自己的查询语言。数据表既可以保存在内存里(为了速度),也可以保存在磁盘上(为了持久性)。所以相应的,我们使用数据库也十分的便捷:
mnesia:create_schema() 创建mnesia数据库 node()表示创建在当前节点,因为笔者之前已经创建过了,所以返回了当前节点已存在的信息
mnesia:start() 启动数据库,启动之前一定要先创建节点!
mnesia:info() 用于打印当前数据库的信息,配置信息等
可以看到生成的对应数据库结构文件
数据库表
接下来我们创建数据库表:
创建表的时候一定要确保mnesia服务处于running状态
建表函数如图:
使用 mnesia:create_table() 即可创建数据库表
在数据库中查询信息
全部查询
通过qlc与mnesia:table的组合即可查询所有的数据,需要注意的是qlc:q一定要引入lib,即一定要有 -include_lib(“stdlib/include/qlc.hrl”). 否则会报qlc undefine导致编译不通过
选择查询
如果我们只需要某些字段的时候就可以使用下面这种形式
使用了记录的点语法来拿到对应的数据(顺带一提,元组中提取对应数据的方式是索引)
条件查询
因为erlang中语句的值为最后一个句子,即X#shop.quantity<250的值,当值为true时,会被提取出来创建新的列表,所以可以通过这种方式来做到条件查询,筛选出我们想要的元素。