问题标签 [mnesia]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1017 浏览

erlang - 如何仅从/向 mnesia 备份/恢复单个表?

我有一些带有 disc_only_copies 类型的大表。现在我需要将短节点名称更改为长但不能使用 RAM 限制...

我可以部分使用备份/恢复数据库(逐个表)吗?

0 投票
1 回答
2798 浏览

erlang - Mnesia 聚类

如果我将 2 个节点聚集在一起,从我的实验和在线阅读中我了解到节点 A 将像一个“主”节点,如果我想要的话,节点 B 会复制这些表。(否则它只会远程访问它们。)

如果节点 B 出现故障会发生什么?它是否只是重新复制自上次以来已更改的数据?

如果节点 A 出现故障,也会发生什么。Node B 还能用吗?如果是这样,如果节点 B 上的数据发生更改,节点 A 是否会将其复制到自身?到目前为止,我的理解是节点 A 并不关心节点 B 说什么,但有人请告诉我我错了。

0 投票
2 回答
1307 浏览

erlang - 帮助我了解 mnesia (NoSQL) 建模

在我寻求理解 Mnesia 的过程中,我仍然在努力思考关系方面的问题。所以我会把我的挣扎放在这里,并寻求解决它们的最佳方法。

一对多关系 假设我有一群人,

现在,我知道我可以将电话定义为始终保存为列表,因此人们可以有多个电话号码,我想这就是这样做的方法(是吗?然后我将如何反过来查找,比如说,找到一个数字的名字?)

多对多关系 现在让我们假设我有多个可以放入人员的组。组名没有任何意义,它们只是名称;这个概念是“unix 系统组”或“标签”。天真地,我会将这个成员资格建模为一个 proplist,比如

例如,作为上面“联系人”记录中的一个字段。如果我希望能够根据组名快速查找组的所有成员,并且还希望能够查找个人注册的所有组,那么在 mnesia 中对此进行建模的最佳方法是什么?当然,我也可以将其建模为仅包含组标识符的列表。对于与 mnesia 一起使用,对此进行建模的最佳方法是什么?

如果这个问题很愚蠢,我很抱歉。有很多关于 mnesia 的文档,但它缺乏(IMO)一些整体使用的好例子。

0 投票
1 回答
379 浏览

erlang - Erlang:MNesia:实现冗余?

我有一个使用 Erlang / MNesia 开发的应用程序,我正在尝试为 MNesia 实现冗余。

我想在运行时动态添加 - 删除节点并为每个新加入节点处理表同步。

使用 Erlang 和 MNesia 实现这一点的最佳方法是什么?

谢谢。

0 投票
1 回答
679 浏览

database - 关于mnesia分布的问题

我有两个运行 mnesia 的节点。我在节点 1上创建了模式和一些表,并mnesia:add_table_copy节点 2上使用将表从节点 1 复制到节点 2

一切正常,直到我调用q()node 1然后q()调用node 2。我发现当我再次启动节点 1时,mnesia:wait_for_tables([sometable], infinity)不会返回。只有当我再次启动节点 2时它才会返回。

有没有办法来解决这个问题?这是一个问题,因为如果节点 2关闭,我将无法再次启动节点 1 。

0 投票
3 回答
703 浏览

events - Mnesia 事件的排序

我们正在开发一个应用程序,其中分布式系统中不同节点上的多个进程订阅 mnesia 事件。该表是从其中一个节点上的一个进程写入的。

然而,不确定我们是否可以确保按照与桌面上的操作相同的顺序接收事件。

例如:

如果我们有时在 write 事件之后得到 delete 事件,我们的设计将无法工作,我们将不得不创建一些其他类型的通知机制。

另外,对不同表(来自同一进程)的操作怎么样?

我们能否确保总是先从 tab1 获取事件,然后再从 tab2 获取事件?在所有进程和所有节点上?

0 投票
3 回答
3639 浏览

ejabberd - How to stop ejabberd from using mnesia

I'm trying to establish a procedure for restoring my database from a crashed server to a new server. My server is running Ejabberd as an XMPP server, and I configured it to use postgresql instead of mnesia - or so I thought.

My procedure goes something like "dump the contents of the original DB, run the new server, restore the contents of the DBs using psql, then run the system". However, when I try running Ejabberd again I get a crash:

Here I was thinking that my system is running on PostgreSQL, while it seems I was still using Mnesia. I have several questions:

  1. How can I make sure mnesia is not being used?
  2. How can I divert all the ejabberd activities to PGSQL?

This is the modules part in my ejabberd.cfg file:

What am I missing?

I am assuming the crash is due to the mnesia DB being used by Ejabberd, and since it's out of sync with the PGSQL DB, it cannot operate correctly - but maybe I'm totally off track here, and would love some direction.

EDIT: One problem solved. Since I'm using amazon cloud, I needed to hardcode the ERLANG_NODE so it won't be defined by the hostname (which changes on reboot). This got my ejabberd running, but still I wish to stop using mnesia, and I wonder what part of ejabberd is still using it and how can I found it.

0 投票
1 回答
296 浏览

erlang - 如何可视化 Mnesia 模式?

是否有任何可用的工具/脚本来可视化 Erlang Mnesia 模式?

理想情况下,它应该生成要使用 Graphviz 或任何其他类似软件读取的.dot 文件。

0 投票
1 回答
204 浏览

erlang - 如何在 mnesia 中启动表?

我有一种情况,其中一张桌子的大小为 2G,之后我无法使用这张桌子,

'mynode@localhost' 5> mnesia:dirty_first(my_table). ** 退出:{aborted,{badarg,[my_table]}} **

我知道我需要应用碎片,但如何在运行时执行它?主要问题是 - 如何启动 my_table 以在运行时减小其大小?(我的意思是没有重新启动mnesia)

0 投票
2 回答
692 浏览

erlang - 读取键是元组且搜索条件包含“_”下划线的记忆表

我有一个第 3 或第 4 范式 mnesia 数据库,有问题的表应该是键/值哈希,但是,架构师将键和值放在记录的键部分。

它看起来像:

所以问题是......如果我只知道发票号码,我是否仍然可以同时从数据库中获取数据,就好像发票是唯一的键而不是元组一样?