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文件格式中的偏移值是用 <
结论: dets支持2G以上没戏了, 而且同样影响到mnesia.
Post Footer automatically generated by wp-posturl plugin for wordpress.
Categories: Erlang探索
可以看看tcerl,是tokyocabinet的erlang port, 应用程序只需稍微几行修改就可以使用新引擎。
https://code.google.com/p/tcerl/
不过我在FREEBSD编译有问题,似乎作者没做移植方面的考虑。没测试过LINUX,应该是可以的。
Yu Feng Reply:
November 6th, 2012 at 5:47 pm
tcerl主要的问题是他不支持ets的虚拟机那些指令,所以无法做到和ets的api完全兼容,这个是硬伤。。。
ets 没有2G限制吧。 现在 dets 还是没有改?
https://github.com/wambo/Erlang-DETS-64bit
这个项目怎么样?