标签: mnesia

ejabberd:检查Mnesia桌子?

我正在挖掘ejabberd,但我无法找到检查其Mnesia桌子的方法.

是否有类似MySQL shell来检查表?

erlang mnesia ejabberd

5
推荐指数
1
解决办法
3246
查看次数

当mnesia从程序中停止时,停止Erlang app会挂起

我遇到了一个问题,我不能在我的程序中停止mnesia而不会导致应用程序挂起.

我现在正在我的erlang应用程序中进行mnesia原型设计.

在我的jaus_app.erl文件中,start()调用:

{atomic, ok} = mnesia:load_textfile("priv/mnesia_prototype.txt")
Run Code Online (Sandbox Code Playgroud)

我的stop()函数调用:

mnesia:dump_to_textfile("priv/mnesia_prototype_res.txt"),
mnesia:stop(),
Run Code Online (Sandbox Code Playgroud)

当我注释掉这些行并从erlang提示符启动和停止mnesia时,我能够干净地停止我的应用程序.

我不应该在完全成熟的erlang应用程序中使用这些原型函数吗?

肯.

erlang mnesia

5
推荐指数
1
解决办法
491
查看次数

Erlang和JavaScript MD5摘要匹配

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

MD5("muzaaya") = "00e081abefbbbf72b2d5258196a9b6d0"

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

Eshell V5.8.4  (abort with ^G)
1> erlang:md5("muzaaya").
<<0,224,129,171,239,187,191,114,178,213,37,129,150,169,
  182,208>>
2>

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

javascript erlang yaws mnesia

5
推荐指数
1
解决办法
2120
查看次数

mnesia:wait_for_tables/2,我真的明白了吗?

我现在已经使用了mnesia一段时间了.我必须承认,我觉得我并不完全理解mnesia的概念:wait_for_tables/2.引用下面的文档说:

Some applications need to wait for certain tables to be accessible in order to do
useful work. mnesia:wait_for_tables/2 hangs until all tables in the Tab List are
accessible, or until timeout is reached.
现在,对于我开发的所有应用程序,我必须在启动后端时调用它.在上面的文档中,上下文"Some applications"没有很好地扩展,这就是我的问题所在.

这些是我的想法:
1.等待这种方法意味着我们正在加载mnesia表,从Disc到RAM(Disc_copies的情况)
2.我个人认为,如果我的应用程序只包含RAM (ram_copies)表,那么我不需要这个我的代码中的方法.现在,我认为如果我只有disc_only_copies,我也不需要这个功能.
3.此外,我在从网络加载mnesia表时需要此功能,尤其是当我的表被复制时,所以我的应用程序需要等待启动时​​的mnesia才能使这些表准备好.但这仍然只适用于类型表,disc_copies为什么完全在Disc上运行或完全在RAM中运行的应用程序需要等待并加载表?

问题:
帮助和检查我的想法1,2和3.一般来说,只有在处理mnesia表类型时才需要此功能:disc_copies因为这种类型与光盘和RAM上的数据复制有关吗?

如果我的表都是碎片,(我总是为每个片段调用此方法以确保mnesia为我的应用程序做好准备),我是否必须调用每个片段的方法?是ATOMIC或Transactional的方法,如果我在mnesia事务中调用它(意味着如果我单独指定基表,mnesia将自动加载所有表片段)?我的碎片的表格类型对此功能也有影响吗?

erlang mnesia

5
推荐指数
1
解决办法
1440
查看次数

在mnesia中限制某个键下记录数的惯用方法是什么?

我使用mnesia为用户存储数据,记录是一个结构像的包

{ username, field1, filed2, timestamp }
Run Code Online (Sandbox Code Playgroud)

为了不让数据库爆炸,我想对属于某个用户的记录数设置一个限制,比如说,如果一个用户的记录数达到500,那么在a之前删除时间戳最旧的记录插入新记录。

有没有一种有效的方法来做到这一点?

提前致谢。

erlang mnesia limit

5
推荐指数
1
解决办法
190
查看次数

从不同节点访问分布式mnesia数据库

我有一个包含不同表的mnesia数据库.

我希望能够从不同的Linux终端访问表.

我有一个调用的函数add_record,这需要几个参数,说nameid.我想能够add_record打开node1add record打开,node2但我想从不同的位置更新同一个表.

我读了几个来源,我发现的唯一一件事就是我应该使用net_adm:ping(node2).但不知何故,我无法从表中访问数据.

database erlang distributed mnesia

5
推荐指数
1
解决办法
1563
查看次数

Web 服务器对高客户端轮询率的容忍度:Cowboy 与 Yaws Web 服务器

我一直在构建一个实时通知系统。它\xe2\x80\x99是Web应用程序的一部分,但事件一发生就必须被看到。长轮询不是一个选择,因为当没有可用事件时,Web 服务器保持连接的成本很高,因此我不得不进行短暂的轮询。

\n\n

每个客户端每隔 2 秒访问一次 Web 服务器(这是一个相当高的速率)。当事件可用时,它们会以 JSON 形式发送到 JavaScript 客户端。现在,这需要服务器设置来处理大量的短期连接。我已经使用 Yaws Web 服务器实现了一个这样的系统。然而,因为 Yaws 启动了相当多的其他服务,所以感觉很重,当连接超过 30,000 时,连接开始被拒绝或中止(可能是因为我在与 Yaws 运行相同的 Erlang VM 中运行一些 ETS 表 [分离这些可能需要rpc:call/4,这\xe2\x80\x94我担心\xe2\x80\x94会增加延迟])。我知道需要进行一些特定于操作系统的调整,并且这些调整已经完成。

\n\n

如果很容易将多个 Yaws 实例集群起来,这就不成问题了。在雅司病中,我使用了一些 appmod,并且我以 REST 方式做事。我在想 Cowboy Web 服务器可能会增强这里的功能。我以前没用过Cowboy,但我用过Misultin。看看 Cowboy,它是一个成熟的 OTP 应用程序,它似乎很容易集群,并且是轻量级的,可能会增加整个系统可以处理的客户端数量。存储位于 Mnesia 上,我可以轻松分配它以添加更多节点(可能通过复制),以便每个 Mnesia 实例前面都有一个 Cowboy 实例。

\n\n

我的问题是:

\n\n
    \n
  1. 我的猜测是否正确,如果我从 Yaws 切换到 Cowboy,我可能会显着提高性能?

  2. \n
  3. 雅司病有一个干净的 APIAppmods通过#arg{}记录。Cowboy 有相当于这两件事的东西吗(请举例说明)?

  4. \n
  5. Cowboy处理文件上传吗?如果是这样,您认为在频繁上传文件的情况下使用哪种服务器(Yaws 或 Cowboy)更好?说明如何使用 Cowboy 完成文件上传。

  6. \n
  7. 可以在同一台机器上运行多个 Yaws 实例。您认为为每个服务器(物理机)创建许多 Yaws 实例并将客户端负载分布在这些实例上会有帮助吗?这样做我需要知道什么?

  8. \n
  9. 当我设置 …

erlang yaws mnesia http cowboy

5
推荐指数
1
解决办法
4055
查看次数

“原始”脏操作和 mnesia:async_transaction 中的脏操作有什么区别

在传递给 mnesia:async_dirty() 的函数中执行的一系列 mnesia:dirty_ 命令与那些“原始”执行的完全相同的事务之间有什么区别?

即,这样做有什么区别:

mnesia:dirty_write({table, Rec1}),
mnesia:dirty_write({table, Rec1}),
mnesia:dirty_write({table, Rec1})
Run Code Online (Sandbox Code Playgroud)

F = fun() ->
        mnesia:dirty_write({table, Rec1}),
        mnesia:dirty_write({table, Rec1}),
        mnesia:dirty_write({table, Rec1})
   end,

   mnesia:async_dirty(F)
Run Code Online (Sandbox Code Playgroud)

谢谢

erlang mnesia

5
推荐指数
1
解决办法
416
查看次数

如何查看ejabberd的Mnesia数据库

我想访问ejabberd服务器的Mnesia数据库,但我不知道如何读取、写入和更新数据,有没有办法可以做到这一点。我可以将数据库更改为 MySQL 而不是 Mnesia。我试过这个

{odbc_server, {mysql, "localhost", "xmpp_db", "root", "**********"}}. 
Run Code Online (Sandbox Code Playgroud)

这里的“xmpp_db”是我为ejabberd创建的数据库的名称,但我没有看到xmpp_db有任何变化。我应该在“xmpp_db”中创建任何表吗?但问题是我的表和字段的名称是什么。我也用过

ejabberdctl dump /tmp/ejabberd.db.txt 
Run Code Online (Sandbox Code Playgroud)

命令,但这只是为了读取数据(数据格式非常粗略,很难理解)。有什么方法可以对 Mnesia 数据库执行读取、写入和更新操作。

我们将不胜感激您的帮助。

mnesia ejabberd

5
推荐指数
1
解决办法
6516
查看次数

什么是Mnesia复制策略?

  1. Mnesia使用什么策略来定义将存储特定表副本的节点?
  2. 我可以强制Mnesia为每个表使用特定数量的副本吗?可以动态更改此数字吗?
  3. 是否有任何资源(除了源代码之外)都具有Mnesia内部算法的详细说明(而不仅仅是概述)?

erlang mnesia

4
推荐指数
1
解决办法
1156
查看次数

标签 统计

mnesia ×10

erlang ×9

ejabberd ×2

yaws ×2

cowboy ×1

database ×1

distributed ×1

http ×1

javascript ×1

limit ×1