`
mryufeng
  • 浏览: 982081 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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

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

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


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


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


分享到:
评论
9 楼 mryufeng 2009-11-30  
tc当然可以 设计的时候就是考虑64位的
8 楼 smiletuna 2009-11-30  
tc可以超过2G in 64 bit..

我的vector data曾经单文件 超过5G..不过性能很差就是了
7 楼 mryufeng 2009-11-30  
cryolite 写道
mryufeng 写道
mnesia的存储用的是ets和dets 当然有问题了。看到邮件列表的人在讨论这个问题。 有人提议说 干脆用tt来做底层存储。 我也赞同。


找到这个讨论的地址了:http://www.erlang.org/cgi-bin/ezmlm-cgi?4:sss:47828:200911:aielfgbhpmkpdcoonbcl#b

讨论很有含金量,
- Tokyo Cabinet has slightly different recovery
   characteristics than dets. This may make a
   difference in some crash recovery situations.
   That is, TC gets its speed partly from making
   use of memory-mapped IO, so more data is likely
   to get lost in some failure situations. TC is
   supposedly also more sensitive to corrupted files
   than dets, since it doesn't 'repair' the file
   like dets does.

里面还提到disc_copies可以突破2GB的限制(不过被内存的大小限制,其实也好不了多少)

谁说可以突破2G 人家说的是fragment, dets文件写死了是32位的offset.
6 楼 cryolite 2009-11-29  
mryufeng 写道
mnesia的存储用的是ets和dets 当然有问题了。看到邮件列表的人在讨论这个问题。 有人提议说 干脆用tt来做底层存储。 我也赞同。


找到这个讨论的地址了:http://www.erlang.org/cgi-bin/ezmlm-cgi?4:sss:47828:200911:aielfgbhpmkpdcoonbcl#b

讨论很有含金量,
- Tokyo Cabinet has slightly different recovery
   characteristics than dets. This may make a
   difference in some crash recovery situations.
   That is, TC gets its speed partly from making
   use of memory-mapped IO, so more data is likely
   to get lost in some failure situations. TC is
   supposedly also more sensitive to corrupted files
   than dets, since it doesn't 'repair' the file
   like dets does.

里面还提到disc_copies可以突破2GB的限制(不过被内存的大小限制,其实也好不了多少)
5 楼 cryolite 2009-11-29  
mryufeng 写道
mnesia的存储用的是ets和dets 当然有问题了。看到邮件列表的人在讨论这个问题。 有人提议说 干脆用tt来做底层存储。 我也赞同。


真是比较期待,他们打算怎么做呢?
mnesiaex只是一个实验产品吧,而且更新也不频繁,不过mnesia本身最近几个版本的修改也不频繁。
4 楼 mryufeng 2009-11-25  
mnesia的存储用的是ets和dets 当然有问题了。看到邮件列表的人在讨论这个问题。 有人提议说 干脆用tt来做底层存储。 我也赞同。
3 楼 linkerlin 2009-11-25  
mnesia也有问题????
2 楼 mryufeng 2009-10-07  
mnesiaex是用tc来代替 dets做永久存储。
1 楼 cryolite 2009-10-07  
too bad, mnesiaex也不能完全替代mnesia吧

相关推荐

    erlang test 生成 dets

    DETs通常被用作轻量级数据库或缓存系统,特别是在需要高并发读写操作且数据量适中的场景下。 描述中的“NULL”可能意味着没有提供具体的实现细节,但我们可以通过一般的Erlang测试和DETS操作来探讨相关知识。 在...

    ets和Dets

    Dets在并发访问控制上也有一定的限制,比如只支持单个写入者,但可以有多个读者同时工作。 在实际项目中,ETS和Dets的选择通常取决于应用场景的需求。对于临时、高速访问且对数据丢失无敏感的应用,可以优先考虑...

    dets.git.io

    ## dets.git.io 每日费用追踪系统 我们正在开发一个名为“每日费用跟踪系统”的Web应用程序,该应用程序用于以更有效和可管理的方式管理应用程序用户的日常费用。 通过使用此应用程序,我们可以减少他们日常支出的...

    Erlang6大数据存储方式总结

    在Erlang中,处理大数据存储有多种方式,其中包括ETS(Erlang Term Storage)、DETS(Distributed Erlang Term Storage)、Mnesia以及MySQL等。下面将对这些存储方式进行详细解析。 1. ETS(Erlang Term Storage) ...

    otp_win64_25.0.4.rar

    描述中的内容简洁,只给出了文件名,没有提供额外信息,但我们可以理解这应该是一个可以直接运行的Windows安装程序(otp_win64_25.0.4.exe),用于在64位Windows操作系统上安装Erlang OTP的25.0.4版本。 在Erlang ...

    Apartment_Manager1.zip

    《基于wxPython+MySQL实现宿舍人脸检测识别系统》 在当今科技日新月异的时代,人脸识别技术已经被广泛应用到各个领域,其中包括宿舍管理。本项目"Apartment_Manager1.zip"就是一个结合了wxPython图形用户界面库和...

    Erlang程序设计(第2版)1

    【Erlang程序设计(第2版)】是由Erlang之父Joe Armstrong撰写的一本经典著作,专注于介绍Erlang编程语言在并发、分布式和容错系统中的应用。本书适用于初学者和有一定经验的Erlang程序员。作者在书中讨论了如何利用...

    kaggle-chest-xray-abnormalities

    我的解决方案在1277名参与者中获得了37位。 主要任务是构建一种算法,可以为放射科医生提供有关准确识别和定位胸部X射线检查结果的第二种意见。 数据:15000胸部X射线dicoms。 标签-bbox的14类异常。 〜4400 dicoms...

    erlang深度分析.pdf

    Erlang遵循“让它失败”原则(Let It Crash),这种设计哲学鼓励系统在出现故障时自动重启,而不是进入不稳定状态。 #### 18. 开发环境和版本控制 Erlang通过内置工具和集成开发环境(IDE)支持便捷的代码管理。...

    inside Erlang VM3

    - **DETS**:持久化数据库,支持将数据保存到磁盘,但单个文件大小限制为2GB。 - **Mnesia**:分布式数据库,具备高度的可扩展性和容错性,所有读写操作都发生在内存中。 #### 稳定性和移植性 - **稳定性**:Erlang...

    Erlang程序设计第二版

    而DETS是一个磁盘上的持久化存储系统,它允许在磁盘上存储大量的数据,提供了更稳定的存储方案。这些存储机制为构建复杂的系统提供了强有力的工具。 《Erlang程序设计第二版》是面向Erlang初学者和中级水平程序员的...

    Erlang深度分析

    Erlang的IO系统设计得非常高效,无论是处理磁盘IO还是网络IO,都有相应的机制保证高效的并发处理。这一点在构建大规模网络服务时尤其重要。 #### 6. Erlang的新增特性和模块 ##### 6.1 Percept并发性能调测模块 ...

    erlang程序设计中文版

    出版社和作者对电子书的传播和复制都有明确的规定和限制。这是为了保护作者的知识产权,确保他们的创作得到应有的回报,同时也保证了内容的合法性和质量。 本书的电子版由图灵社区提供,并且可以在多种设备上使用...

    Linux下python与C++使用dlib实现人脸检测.pdf

    检测到的人脸位置通过`dets[Max].left()`, `dets[Max].top()`, `dets[Max].width()`, `dets[Max].height()`获取,并在图像上画出矩形。 5. **版本差异**:不同的dlib版本可能会导致轻微的位置差异,但通常对检测...

    erlang 深度分析

    - **Dets RAM File模式**: 类似于Dets,但只在内存中存储数据。 - **Dets vs. ETS**: 根据应用场景选择合适的数据存储方式。 #### 20. Erlang函数调用新语法 - **概念**: R12B版本引入的新函数调用语法。 - **优点*...

    Efficiency Guide (erlang)

    在设计高性能系统时,应谨慎使用定时器。 ##### 1.3.3 `list_to_atom/1`函数 将列表转换为原子(`list_to_atom/1`)在某些情况下可能效率不高。如果频繁进行此类转换,应考虑预先定义原子或将此操作放在初始化阶段...

    对象视图在oracle9i中实现RDBMS与ORDBMS联系的重要作用.pdf

    对象视图在此过程中起到了桥梁的作用,使得两种不同类型的数据库系统能够相互交互。 面向对象关系数据库的核心在于其对象类型。Oracle 9i支持多种对象类型,包括抽象数据类型、可变数组、嵌套表、对象表和对象视图...

    cachet:Mnesia的内存光盘分派器

    对于disc_only_copies ,由于后端dets缘故,每个表限制为2 GB。 cachet将插入您的mnesia数据库并通过侦听数据库上的事件来工作。 您的主应用程序供稿数据库不必重写。 您的使用数据库的客户端可能需要一些代码更改...

    Erlang程序设计(第二版)及源码

    书中兼顾了顺序编程、并发编程和分布式编程,重点介绍如何编写并发和分布式的Erlang程序以及如何在多核CPU上自动加速程序,并深入地讨论了开发Erlang应用中至关重要的文件和网络编程、OTP、ETS和DETS等主题。...

Global site tag (gtag.js) - Google Analytics