26、Erlang 数据存储:ETS、DETS 与 Mnesia 数据库

Erlang 数据存储:ETS、DETS 与 Mnesia 数据库

1. ETS 与 DETS 基础

ETS(Erlang Term Storage)表用于在内存中存储元组,而 DETS(Disk ETS)则提供了在磁盘上存储 Erlang 元组的功能。DETS 文件最大为 2GB,使用前必须打开,使用完毕后应正确关闭,否则下次打开时会自动修复,而修复可能需要较长时间。

DETS 表与 ETS 表具有不同的共享属性。打开 DETS 表时,必须为其指定一个全局名称。如果两个或多个本地进程以相同的名称和选项打开 DETS 表,它们将共享该表,该表将保持打开状态,直到所有进程关闭该表(或崩溃)。

2. 示例:文件名索引

我们要创建一个基于磁盘的表,将文件名映射为整数,反之亦然。为此,我们定义 filename2index 函数及其逆函数 index2filename

为实现这一点,我们创建一个 DETS 表,并使用三种不同类型的元组填充它:
- {free, N} :N 是表中第一个可用的索引。当我们在表中输入新文件名时,它将被分配索引 N。
- {FileNameBin, K} :FileNameBin(二进制)已被分配索引 K。
- {K, FileNameBin} :K(整数)表示文件 FilenameBin。

每次添加新文件时,会向表中添加两个条目:一个是文件到索引的条目,另一个是索引到文件的反向条目,这是出于效率考虑。在构建 ETS

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值