Mnesia 的桌子位于哪里?

发布于 2024-08-28 05:38:14 字数 795 浏览 7 评论 0原文

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

据我了解,Mnesia 中的表可以位于(参见 Mnesia 中的内存消耗 ):

  • ram_copies - 表存储在 ets 中,因此没有 ACID 中的持久性。
  • disc_copies - 表位于 etsdets 中,因此表不能大于可用内存?如果表有碎片,数据库不能大于可用内存吗?
  • disc_only_copies - 表位于 dets,因此内存中没有缓存并且性能较差。并且表的大小受限于dets的大小,否则表必须被分段。

因此,如果我想要从 RAM 读取的性能和写入磁盘的持久性,那么与 MySQL 或 PostgreSQL 等传统 RDBMS 相比,表的大小非常有限。

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

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

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

I try to compare Mnesia with more traditional databases.

As I understand it tables in Mnesia can be located to (see Memory consumption in Mnesia):

  • ram_copies - tables are stored in ets, so no durability as in ACID.
  • disc_copies - tables are located to ets and dets, so the table can not be bigger than the available memory? And if the table are fragmented, the database can not be bigger than the available memory?
  • disc_only_copies - tables are located dets, so no caching in memory and worse performance. And the size of the table are limited to the size of dets or the table has to be fragmented.

So if I want the performance of doing reads from RAM and the durability of writes to disc, then the size of the tables are very limited compared to a traditional RDBMS like MySQL or PostgreSQL.

I know that Mnesia aren't meant to replace traditional RDBMS:s, but can it be used as a big RDBMS or do I have to look for another database?

The server I will use is a VPS with limited amount of memory, around 512MB, but I want good database performance.

Are disc_copies and the other types of tables in Mnesia so limited as I have understood? Can´t the database be partially on memory and a full copy on disc?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

披肩女神 2024-09-04 05:38:14

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

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

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

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

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

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

11.5 Mnesia 可以存储多少数据?

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

实际上,你的机器会变慢
在你到达这里之前要爬一段路
限制。

最后,Mnesia 表可能是碎片化的。 此处那里

这些是我的2p。

The storage capacity of the Mnesia database for the different types of tables has been discussed in this previous SO question:

What is the storage capacity of a Mnesia database?

where a great answer is already available.

Obviously (but I guess you've already seen it) the official doc is available at:

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

Also, reading from the Mnesia FAQ:

11.5 How much data can be stored in Mnesia?

Dets uses 32 bit integers for file
offsets, so the largest possible
mnesia table (for now) is 4Gb.

In practice your machine will slow to
a crawl way before you reach this
limit.

Finally, Mnesia tables can be fragmented. This is discussed here and there.

These are my 2p.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文