【问题标题】:Erlang - Standard location of mnesia databaseErlang - mnesia 数据库的标准位置
【发布时间】:2011-03-10 03:41:50
【问题描述】:

有没有一个标准的地方可以将 mnesia 数据库放在 erlang 中?目前我把它放在 priv 目录中。

【问题讨论】:

    标签: erlang mnesia


    【解决方案1】:

    默认情况下,Mnesia 将在模拟器进程当前目录的名为Mnesia.<node name> 的子目录中创建模式。 如果这不是您想要的,您只需将 Mnesia 的 dir 应用程序变量设置为类似

    application:set_env(mnesia, dir, "/path/to/db").
    

    至于放置数据库的位置:这取决于您的部署方案。自申请以来 也可以使用release config filescommand line arguments 设置变量,您可以延迟 在您发货(或安装在您自己的服务器上)之前做出决定。为了在生产中使用,应该使用像 /var/lib/<your application>/mnesia-<node name>(在 unix 上)这样的标准目录。

    为了玩转,我建议使用代码根目录下的专用目录(而不是 priv 目录)并在应用程序的启动部分中设置该位置。 在我的宠物项目中,我经常使用诸如

    之类的代码
    Root = filename:absname_join(filename:dirname(?FILE), ".."),
    application:set_env(mnesia, dir, filename:join(Root, "db")).
    

    正是为了这个目的。

    【讨论】:

      【解决方案2】:

      据我所知,当您创建架构时,每个节点都会在其根目录中创建一个架构目录。

      因此,我猜这可以被认为是默认位置。

      如果由于某种原因,您必须在应用程序中包含架构,那么我想 priv 文件夹应该没问题,因为 it is supposed to be used for application specific files 并且可以通过 @987654322 轻松访问@函数。

      【讨论】:

        猜你喜欢
        • 2012-01-10
        • 1970-01-01
        • 2023-02-11
        • 2016-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-15
        • 2011-06-06
        相关资源
        最近更新 更多