Erlang是许多“新时代”(淫秽快速和容错)消息系统的良好应用程序。示例可以是RabbitMQ,ejabberd,WhatsApp for Mobile e.t.c.无论消息传递系统是如何构建的,它都需要知道正在进行的会话,登录的用户,e.t.c。我认为对于这样的系统来说,保持数据IN-MEMORY
是不可避免的。
对于Erlang,可能的最大值是多少,或者允许的最大值是多少?ETS table
或mnesia RAM table
中官方建议的最大记录数是多少?是否存在特定的表大小,如果超过则会导致整个VM崩溃?只要基础操作系统允许,ETS Tables
或Mnesia RAM Tables
是否会增长到任何数量?我听说过Mnesia Table Limit
2 or 4GB
,但我认为这是针对磁盘表的。
一个需要处理大量数据的未来应用程序的典型示例-MEMORY是OLAP Systems
,Real Time analytics
,Social Gaming
等在这方面的思考激发了这个问题。
答案 0 :(得分:6)
mnesia是ETS和DETS表的包装层。对于32位系统,ETS表的最大值约为3.5GB。对于64位系统,最大值要多得多,因此从技术上讲,它受OS可用RAM的限制。对于DETS(并且非常愚蠢),限制为2GB。
我没有与其他键值存储系统的任何基准测试,但请记住,ETS直接存储Erlang术语而不进行任何编码/解码。