Mnesia的桌子在哪里?

Jon*_*nas 6 erlang mnesia

我尝试将Mnesia与更传统的数据库进行比较.

据我所知,Mnesia中的表可以找到(参见Mnesia的内存消耗):

  • ram_copies- 存储表ets,因此没有ACID中的持久性.
  • disc_copies- 表位于etsdets,所以表不能大于可用内存?如果表是碎片,数据库不能大于可用内存?
  • disc_only_copies- 表位于dets,因此内存中没有缓存,性能更差.并且表的大小限制为大小dets或表必须分段.

因此,如果我想要从RAM执行读取的性能以及写入磁盘的持久性,那么与传统的RDBMS(如MySQL或PostgreSQL)相比,表的大小非常有限.

我知道Mnesia并不是要取代传统的RDBMS:s,但它可以用作大型RDBMS还是我必须寻找另一个数据库?

我将使用的服务器是内存有限的VPS,大约512MB,但我想要良好的数据库性能.

disc_copiesMnesia中的其他类型的表格是否如我所理解的那样有限?数据库不能部分在内存和光盘上的完整副本吗?

Rob*_*loi 2

Mnesia 数据库对于不同类型表的存储容量已在之前的 SO 问题中讨论过:

Mnesia 数据库的存储容量是多少?

已经有一个很好的答案了。

显然(但我想你已经看过了)官方文档位于:

http://www.erlang.org/doc/man/mnesia.html

另外,阅读Mnesia 常见问题解答

11.5 Mnesia 可以存储多少数据?

Dets 使用 32 位整数作为文件偏移量,因此最大可能的 mnesia 表(目前)是 4Gb。

实际上,在达到此限制之前,您的机器会慢得像爬行一样。

最后,Mnesia 表可以是碎片化的。这一点到处都有讨论。

这些是我的2p。