4

Erlang 一直是许多“新时代”(非常快速和容错)消息传递系统的一个很好的应用程序。示例可以是RabbitMQejabberdWhatsApp for Mobile等 无论消息系统是如何构建的,它都需要知道正在进行的会话、谁登录等,我认为IN-MEMORY对于此类系统来说,保存数据是不可避免的。

对于 Erlang,可能的最大值是多少,或者允许的最大值是多少,ETS table或者官方建议的最大记录数是mnesia RAM table多少?是否存在已知的特定表大小,如果超过则会使整个 VM 崩溃?只要底层操作系统允许,做ETS Tables或增长到任何数量?Mnesia RAM Tables我听说过Mnesia Table Limit2 or 4GB,但我认为这是用于磁盘表的。

需要在内存中处理大量数据的未来应用程序的典型示例是OLAP SystemsReal Time analyticsSocial Gaming这条线的思考激发了这个问题。

4

1 回答 1

6

mnesia 是 ETS 和 DETS 表的包装层。对于 32 位系统,ETS 表的最大值约为 3.5GB。对于 64 位系统,最大值要高得多,因此从技术上讲,它受到操作系统可用 RAM 的限制。对于 DETS(这是非常愚蠢的)限制是 2GB。

我没有其他键值存储系统的任何基准测试,但请记住,ETS 直接存储 Erlang 术语而无需任何编码/解码。

于 2012-10-11T16:22:11.153 回答