问题标签 [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.
erlang - 如何仅从/向 mnesia 备份/恢复单个表?
我有一些带有 disc_only_copies 类型的大表。现在我需要将短节点名称更改为长但不能使用 RAM 限制...
我可以部分使用备份/恢复数据库(逐个表)吗?
erlang - Mnesia 聚类
如果我将 2 个节点聚集在一起,从我的实验和在线阅读中我了解到节点 A 将像一个“主”节点,如果我想要的话,节点 B 会复制这些表。(否则它只会远程访问它们。)
如果节点 B 出现故障会发生什么?它是否只是重新复制自上次以来已更改的数据?
如果节点 A 出现故障,也会发生什么。Node B 还能用吗?如果是这样,如果节点 B 上的数据发生更改,节点 A 是否会将其复制到自身?到目前为止,我的理解是节点 A 并不关心节点 B 说什么,但有人请告诉我我错了。
erlang - 帮助我了解 mnesia (NoSQL) 建模
在我寻求理解 Mnesia 的过程中,我仍然在努力思考关系方面的问题。所以我会把我的挣扎放在这里,并寻求解决它们的最佳方法。
一对多关系 假设我有一群人,
现在,我知道我可以将电话定义为始终保存为列表,因此人们可以有多个电话号码,我想这就是这样做的方法(是吗?然后我将如何反过来查找,比如说,找到一个数字的名字?)。
多对多关系 现在让我们假设我有多个可以放入人员的组。组名没有任何意义,它们只是名称;这个概念是“unix 系统组”或“标签”。天真地,我会将这个成员资格建模为一个 proplist,比如
例如,作为上面“联系人”记录中的一个字段。如果我希望能够根据组名快速查找组的所有成员,并且还希望能够查找个人注册的所有组,那么在 mnesia 中对此进行建模的最佳方法是什么?当然,我也可以将其建模为仅包含组标识符的列表。对于与 mnesia 一起使用,对此进行建模的最佳方法是什么?
如果这个问题很愚蠢,我很抱歉。有很多关于 mnesia 的文档,但它缺乏(IMO)一些整体使用的好例子。
erlang - Erlang:MNesia:实现冗余?
我有一个使用 Erlang / MNesia 开发的应用程序,我正在尝试为 MNesia 实现冗余。
我想在运行时动态添加 - 删除节点并为每个新加入节点处理表同步。
使用 Erlang 和 MNesia 实现这一点的最佳方法是什么?
谢谢。
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 。
events - Mnesia 事件的排序
我们正在开发一个应用程序,其中分布式系统中不同节点上的多个进程订阅 mnesia 事件。该表是从其中一个节点上的一个进程写入的。
然而,不确定我们是否可以确保按照与桌面上的操作相同的顺序接收事件。
例如:
如果我们有时在 write 事件之后得到 delete 事件,我们的设计将无法工作,我们将不得不创建一些其他类型的通知机制。
另外,对不同表(来自同一进程)的操作怎么样?
我们能否确保总是先从 tab1 获取事件,然后再从 tab2 获取事件?在所有进程和所有节点上?
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:
- How can I make sure mnesia is not being used?
- 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.
erlang - 如何可视化 Mnesia 模式?
是否有任何可用的工具/脚本来可视化 Erlang Mnesia 模式?
理想情况下,它应该生成要使用 Graphviz 或任何其他类似软件读取的.dot 文件。
erlang - 如何在 mnesia 中启动表?
我有一种情况,其中一张桌子的大小为 2G,之后我无法使用这张桌子,
'mynode@localhost' 5> mnesia:dirty_first(my_table). ** 退出:{aborted,{badarg,[my_table]}} **
我知道我需要应用碎片,但如何在运行时执行它?主要问题是 - 如何启动 my_table 以在运行时减小其大小?(我的意思是没有重新启动mnesia)
erlang - 读取键是元组且搜索条件包含“_”下划线的记忆表
我有一个第 3 或第 4 范式 mnesia 数据库,有问题的表应该是键/值哈希,但是,架构师将键和值放在记录的键部分。
它看起来像:
所以问题是......如果我只知道发票号码,我是否仍然可以同时从数据库中获取数据,就好像发票是唯一的键而不是元组一样?