问题标签 [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 回答
988 浏览

transactions - Erlang Mnesia 嵌套事务中止

我有以下代码:

我得到这个错误:

我可以跑

但由于表名分散在几个节点上,我认为我必须使用 mnesia_frag 模块。

我究竟做错了什么 ?它怎么会是正确的?谢谢你。

0 投票
2 回答
854 浏览

database - 从 mnesia 中选择随机记录

我有一个 mnesia 表t,其中包含具有单个字段的记录x。如何从中选择随机xt

为了避免整个数学学究的过程:我不关心随机数生成的细节,我只是希望我的结果每次都不一样。

谢谢,
-tjw

0 投票
1 回答
758 浏览

erlang - 这是为多客户端应用程序构建 Erlang 网络服务器的正确方法吗?

我正在使用 Erlang 为多人棋盘游戏构建一个小型网络服务器。此网络服务器使用 Mnesia DB 的本地实例来存储每个连接的客户端应用程序的会话。在本地 Mnesia 中存储的每个客户端的记录(会话)中,我存储了客户端的 PID 和 NODE(客户端登录的节点)。

我计划将此网络服务器部署在至少 2 个连接的服务器(节点 A 和 B)上。因此,为了允许在节点 A 上登录的客户端 A 搜索(向 Mnesia 查询)在节点 B 上登录的客户端 B,我将 Mnesia 会话表从节点 A 复制到节点 B,反之亦然.

Client A 查询到 Client B 的 PID 和 NODE 后,Client A 和 B 就可以直接通信了。

这是在两个不同 Erlang 节点上登录的两个客户端应用程序之间建立连接的正确方法吗?

0 投票
1 回答
996 浏览

erlang - 我们如何有效地处理对 mnesia 记录的时间相关限制?

我正在将记录写入 mnesia,这些记录应仅在允许的时间(24 小时)内保存。24 小时后,在用户修改其中的一部分之前,系统应自动删除它们。例如,为用户提供免费通话时间(用于语音通话),他们应该在给定时间内使用这些通话时间。如果他们不使用它,24 小时后,系统应该从用户记录中删除这些资源预留。

现在,这引入了计时器。记录结构的一个示例是:

记录中的计时器对象很重要,因为万一用户在超时(或超时)之前最终使用了保留的资源,系统可以调用timer:cancel/1以解除该对象的计时器服务器。现在的问题是,我有两种方法可以处理这些记录上的计时器:

选项 1:在事务中处理的计时器

关于上述选项。

Mnesia 文档说事务可能会被 tm 管理器重复(由于某种原因)直到它们成功,因此当您放置io:format/2与写入或读取无关的代码或任何其他代码时,它可能会被执行多次。这句话让我在这一点上停顿了一下,想了一种方法来处理它自己的事务之外的计时器,所以我修改了代码如下:

选项 2:在事务之外处理的计时器

处理预订超时的代码:

现在我认为在选项 2 中,通过将计时器处理代码排除在外,我会更安全,即使 mnesia_tm 由于其原因重新执行事务,这段代码也不会运行两次(我避免有多个计时器对象针对同一个记录)。

问题1:这两种实现中哪一种是正确的?和/或错误?告诉我(也)他们俩是否都错了

问题 2:模块定时器,它是否非常适合处理生产中的大量定时器作业?

问题 3:与运行在 mnesia 之上的 Sean Hinde 的timer_mn-1.1相比,timer 模块(可能在 Ets 表之上运行)在生产中的能力(实际上)是否更弱?(我问这个是因为在本身使用 mnesia 的系统上使用 Sean Hinde 的 timer_mn 在架构更改、节点问题等方面似乎是一个问题)

如果有人有另一种方法来处理与 mnesia 相关的计时器问题,请告诉我thanx 伙计们......

0 投票
1 回答
2257 浏览

erlang - mnesia 与 DCD/DCL 一起工作

我炸毁了我的ejabberd。我真的无法弄清楚是什么坏了。无论如何,稍后会看看。我需要的是我的名单。一切都应该存储在 mnesia 数据库中。

我想提取我的联系人(请记住,我无法启动我的 ejabberd,erl 正在工作)

我将如何以最好的方式做到这一点?我从来没有使用过 erlang,也没有使用过 mnesia。我怀疑我的名单在文件 roster.DCD 中。

目前将该文件的内容转储到文本文件中就足够了......

欢迎任何帮助:-)

最诚挚的问候

0 投票
1 回答
522 浏览

erlang - 如何简化流程或启动分布式mnesia

目前我正在开发一个游戏服务器,我的架构是每个游戏服务器在第一次启动时都会实例化一个 mnesia db。假设我想创建第二个节点,我的计划只是将相同的游戏服务器部署到第二个节点。

我的问题是:我希望我的游戏服务器的第二次部署将自动检测第一个节点上的 mnesia 实例,复制其数据库模式并成为第一个节点的集群。

我在http://code.google.com/p/schemafinder/上检查了 schemafinder 项目,我想实现它是如何做到的,但它似乎很复杂。

如果有人愿意给我一些启发,我将不胜感激。

提前致谢

0 投票
1 回答
219 浏览

erlang - 对氮气监听 IP 地址感到困惑

我在 Windows 7 Home Premium、HP Pavilion Entertainment PC 笔记本电脑上运行 Nitrogen 2.0.X。氮气以 inets 开头,我未能更改或指定网络服务器的 IP 地址。一旦它启动,它会告诉我去我的浏览器并点击http://localhost:8000下面的 shell 输出:

在几乎所有可用的浏览器中点击链接都表明找不到该页面。当我向模拟器询问端口时,这是它的输出:

我有一个强烈的想法,这inet6_tcp意味着它使用IPv6whileinet_tcp意味着IPv4,对此不太确定。但总而言之,我无法连接到我的氮气。以下是正在运行的应用程序

http://localhost:8000鉴于上述观察,有人可以解释为什么我无法通过浏览器访问我的本地氮框架吗?而且,我怎样才能从我的浏览器连接到它?

0 投票
1 回答
649 浏览

erlang - 创建多个具有相同列的 Mnesia 表

我想在 Mnesia 中创建以下模式。有三个表,称为 t1、t2 和 t3,每个表都存储以下记录的元素:

我尝试使用以下方法创建表:

然后使用以下行编写一些内容(P 和 E 有值):

但我遇到了错误的类型错误。(相关命令已传递给事务,因此这不是同步问题。)

Mnesia 的所有教科书示例都展示了如何为不同的记录创建不同的表。有人可以回复一个为同一记录创建不同表的示例吗?

0 投票
5 回答
2250 浏览

javascript - Erlang 和 JavaScript MD5 摘要匹配

在此处测试 MD5 的 Javascript 实现:http://www.webtoolkit.info/javascript-md5.html给出以下输出:

转到我的 erlang shell,并计算相同值的 MD5,我得到:

我如何比较两者?如果 JavaScript 前端应用程序的 MD5 结果来自我的 Erlang 后端,我希望能够比较两个摘要。如何将 Javascript MD5 摘要与 Erlang 匹配?

0 投票
1 回答
166 浏览

erlang - OTP14B02 配置错误

我尝试在 OpenSolaris 上安装 OTP14B02,但在调用时出现以下错误./configure

什么可能导致这个问题,我该如何克服它?