我尝试将Mnesia与更传统的数据库进行比较.
据我所知,Mnesia中的表可以找到(参见Mnesia的内存消耗):
ram_copies- 存储表ets,因此没有ACID中的持久性.disc_copies- 表位于ets和dets,所以表不能大于可用内存?如果表是碎片,数据库不能大于可用内存?disc_only_copies- 表位于dets,因此内存中没有缓存,性能更差.并且表的大小限制为大小dets或表必须分段.因此,如果我想要从RAM执行读取的性能以及写入磁盘的持久性,那么与传统的RDBMS(如MySQL或PostgreSQL)相比,表的大小非常有限.
我知道Mnesia并不是要取代传统的RDBMS:s,但它可以用作大型RDBMS还是我必须寻找另一个数据库?
我将使用的服务器是内存有限的VPS,大约512MB,但我想要良好的数据库性能.
disc_copiesMnesia中的其他类型的表格是否如我所理解的那样有限?数据库不能部分在内存和光盘上的完整副本吗?
Mnesia 数据库对于不同类型表的存储容量已在之前的 SO 问题中讨论过:
已经有一个很好的答案了。
显然(但我想你已经看过了)官方文档位于:
http://www.erlang.org/doc/man/mnesia.html
另外,阅读Mnesia 常见问题解答:
11.5 Mnesia 可以存储多少数据?
Dets 使用 32 位整数作为文件偏移量,因此最大可能的 mnesia 表(目前)是 4Gb。
实际上,在达到此限制之前,您的机器会慢得像爬行一样。
这些是我的2p。