Home > Erlang探索 > dets在64位系统还是有可耻的2G限制

dets在64位系统还是有可耻的2G限制

October 10th, 2009

原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: dets在64位系统还是有可耻的2G限制

原本以为在 64位操作系统下 文件的读写指针都改成64位的 避免了2G的限制。经过测试 disk_log和file都支持超过2G的数据文件,但是 dets还是可耻的失败了。 经过查看源码 有2个问题:

1. key segment的问题。 dets在设计的时候 是针对32位的 那么它的空间限制就是2G, 所以在计算最大的段的数的最大的偏移时候 干脆在代码里面写死了2G。

2. 偏移的问题。 每个key对应的value在dets_v9文件格式中的偏移值是用 <> 这样的格式来表示的。 所以如果改变成64位 那么文件格式就完全不兼容了。

结论: dets支持2G以上没戏了, 而且同样影响到mnesia.

Post Footer automatically generated by wp-posturl plugin for wordpress.

Categories: Erlang探索 Tags:
  1. November 6th, 2012 at 17:43 | #1

    可以看看tcerl,是tokyocabinet的erlang port, 应用程序只需稍微几行修改就可以使用新引擎。

    https://code.google.com/p/tcerl/

    不过我在FREEBSD编译有问题,似乎作者没做移植方面的考虑。没测试过LINUX,应该是可以的。

    Yu Feng Reply:

    tcerl主要的问题是他不支持ets的虚拟机那些指令,所以无法做到和ets的api完全兼容,这个是硬伤。。。

  2. piboyeliu
    May 10th, 2013 at 15:21 | #2

    ets 没有2G限制吧。 现在 dets 还是没有改?

  3. piboyeliu
    May 10th, 2013 at 15:33 | #3
Comments are closed.