mnesia データベースを erlang 内に配置する標準的な場所はありますか? 現時点では、priv ディレクトリに配置しています。
2 に答える
デフォルトでは、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")).
まさにその目的のために。
私の知る限り、スキーマを作成すると、すべてのノードがそのルートディレクトリにスキーマディレクトリを作成します。
したがって、これはデフォルトの場所と見なすことができると思います。
何らかの理由で、アプリケーションと一緒にスキーマを含める必要がある場合は、privフォルダーはアプリケーション固有のファイルに使用されることになってcode:priv_dir/1
おり、関数から簡単にアクセスできるため、問題ないはずです。