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