是否有将 mnesia 数据库放在 erlang 中的标准位置?目前我把它放在 priv 目录中。
问问题
2797 次
2 回答
6
默认情况下,Mnesia 将Mnesia.<node name>
在模拟器进程当前目录的子目录中创建模式。如果这不是您想要的,您需要做的就是设置 Mnesia 的dir
应用程序变量,例如
application:set_env(mnesia, dir, "/path/to/db").
至于放置数据库的位置:这取决于您的部署方案。由于也可以使用发布配置文件或命令行参数设置应用程序变量,因此您可以延迟该决定,直到您发布(或安装在您自己的服务器上)。为了在生产中使用,应该使用像/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")).
正是为了这个目的。
于 2010-06-30T21:22:39.087 回答
0
据我所知,当您创建架构时,每个节点都会在其根目录中创建一个架构目录。
因此,我猜这可以被认为是默认位置。
如果由于某种原因,您必须在应用程序中包含一个模式,那么我猜priv文件夹应该没问题,因为它应该用于特定于应用程序的文件code:priv_dir/1
,并且可以通过该函数轻松访问。
于 2010-06-30T17:11:09.130 回答