第十五章 ETS 和 DETS 大量数据的存储机制
ETS 和 DETS是Erlang用于高效存储大量Erlang数据条目的系统模块,ETS是Erlang Term Storage 的缩写,而
DETS是Disk Ets的缩写,它们提供大型的“键 - 值” 搜索表,ETS所不同的是留在内存,DETS驻留在磁盘上。
1. 创建:ets : new(name, [Opt]). name是一个原子, Opts是表的类型
插入:insert(Tablename, X) X可以是一个元组或者元组的列表。在ETS和DETS中,insert的参数和行为都一样
查找:lookup(Tablename, Key), 其返回的结果是匹配Key的元组列表。返回元组是因为可以有多个元组使用相同的 键,如果没有匹配,则返回一个空列表。
释放:用完一个表,可以调用dets:close(TableId) 或 ets:delete(TableId)来告诉系统释放这个表。
2.表的类型,总共有4种:set 、ordered set、bag、duplicate bag 和 private 、public 、protected、 named_table、{keypos, K}
set: 表中每一个元组的键值都不能相同。
ordered set: 在Set的基础上,元组会进行排序。
bag: 多个元组可以用相同的键值,但不能有两个完全相同的元组。
duplicate bag:不仅多个元组可以有相同的键值,同一个元组也可以在表中出现多次。
3. ETS小程序
start() ->
lists:foreach( fun test_ets/1, [set, ordered_set, bag, duplicate_bag]).
test_ets(Mode) ->
TableId = ets:new(test, [Mode]),
ets:insert(TableId, {a, 1}),
List = ets:tab2list(TableId),
io:format("~-13W => ~p~n", [Mode, List]),
ets:delete(TableId).
第十六章 OTP概述 【框架】 —Erlang的进化
OTP即Open Telecom Platform 电信开放平台, 它是一个应用程序操作系统,包括了大量库和程序用来构建大规模的分布式容错系统。OTP的设计目标是用来构造容错系统。
OTP最核心的概念是行为,一个行为封装某种常见的行为模式,这些行为可以理解为某种应用程序框架,可以通过回调模块来定制这些框架。
首先来仔细研究行为中的一种—gen_server。
(1)用Erlang写一个小的客户/服务器程序。
(2)慢慢抽离这个程序的通用部分,并增加一些特性。
1.