【问题标题】:How big can Erlang DETS be and what to do if its too small?Erlang DETS 可以有多大,如果太小怎么办?
【发布时间】:2010-12-18 14:41:08
【问题描述】:

我只需要一个 Erlang 中的大型持久查找表,dets 似乎就是这样,尽管我需要一个明确的答案:

  • 表中二进制文件的总大小可以有多大。
  • 每个条目可以有多大
  • 第一个问题的答案小于100G怎么办​​

【问题讨论】:

    标签: erlang dets


    【解决方案1】:

    这是一个 RTFM 问题。如DETS manual第二段直接引用:

    Dets 文件的大小不能超过 2 GB。如果需要更大的表,可以使用 Mnesia 的分表。

    【讨论】:

    • 除非它的 64 位 erlang 或其他浮动的异常之一。这就是我在这里问的原因。
    • dets 仍然有 64 位光束的限制,它是文件格式。
    【解决方案2】:

    一种显而易见的方法,一旦想到,就是在多个 dets 文件上散列 dets 条目。

    当一个文件达到上限阈值时,通过将存储桶拆分为新创建的 dets 文件,线性哈希应该使其动态增长。

    还有一些端口驱动程序可以让您使用 sleepycat/berkely db 或 tokyo tyrrant。这些数据库的文件限制远高于 2Gb。

    【解决方案3】:

    使用 mnesia 分段 dic_copies 可以克服这些限制,前提是您提前知道要创建多少个片段
    http://www.trapexit.org/Mnesia_Table_Fragmentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-28
      • 1970-01-01
      • 2012-10-09
      • 1970-01-01
      • 2011-06-09
      相关资源
      最近更新 更多