Erlang - mnesia数据库的标准位置

时间:2010-06-30 13:44:07

标签: erlang mnesia

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

2 个答案:

答案 0 :(得分:6)

默认情况下,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")).

正是出于这个目的。

答案 1 :(得分:0)

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

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

如果由于某种原因,您必须将模式与您的应用程序一起包含,那么,我想 priv 文件夹应该没问题,因为it is supposed to be used for application specific files并且可以通过code:priv_dir/1功能。