【发布时间】:2010-12-18 14:41:08
【问题描述】:
我只需要一个 Erlang 中的大型持久查找表,dets 似乎就是这样,尽管我需要一个明确的答案:
- 表中二进制文件的总大小可以有多大。
- 每个条目可以有多大
- 第一个问题的答案小于100G怎么办
【问题讨论】:
我只需要一个 Erlang 中的大型持久查找表,dets 似乎就是这样,尽管我需要一个明确的答案:
【问题讨论】:
这是一个 RTFM 问题。如DETS manual第二段直接引用:
Dets 文件的大小不能超过 2 GB。如果需要更大的表,可以使用 Mnesia 的分表。
【讨论】:
一种显而易见的方法,一旦想到,就是在多个 dets 文件上散列 dets 条目。
当一个文件达到上限阈值时,通过将存储桶拆分为新创建的 dets 文件,线性哈希应该使其动态增长。
还有一些端口驱动程序可以让您使用 sleepycat/berkely db 或 tokyo tyrrant。这些数据库的文件限制远高于 2Gb。
使用 mnesia 分段 dic_copies 可以克服这些限制,前提是您提前知道要创建多少个片段
http://www.trapexit.org/Mnesia_Table_Fragmentation
【讨论】: