ETS
键值存储,查找时间为常量。
四种不同的类型
集合(set)
相同的key-value元组只能出现一次。
包(bag)
每种key-value元组组合只能出现一次,但是同一个key可以出现多次。
重复包(duplicate bag)
允许重复的元组。
有序集合(ordered set)
相同的key-value元组只能出现一次,但是可以按key的顺序访问各个元组。
访问有序集合(ordered set)类型中的元素需要消耗表长度的对数级别的时间(oLog n),访问其余类型的元素只需要消耗常量级别的时间。
表权限
public
允许任何进程访问(读写)。
private
只有拥有该表的进程才能访问。
protected
任何进程都可以读,只有拥有该表的进程才能写入。
其它参数
{keypos, N}
创建表的时候可以通过 {keypos, N} 指定键取自那个位置,对存储记录record非常的有用。
named_table
如果存在此选项,则以表的名称注册该表,然后在后续的操作使用该表名称而不是表的标识符。要获取指定标的标识符,可以使用 whereis/1。
{write_concurrency, boolean()}
默认为false。这种情况下,对表的写入修改的操作获得独占访问,阻塞对同一表的任何并发访问。如果设置为true,则表将优化为并发写访问。
{read_concurrency, boolean()}
默认为false。如果设置为true,则该表将优化为并发读访问。
compressed
压缩,如果存在此选项,那么将以更紧凑的格式存储表数据,以消耗更少的内存。但是,这会使表操作变慢。特别是需要查找整个对象(如match,select)这种操作,速度会慢很多,关键元素不会被压缩。