私はErlangで作られたサーバーアプリケーションを持っています。その中には、写真に関する情報を保存している記憶媒体テーブル があります。 「すべてが プロセスです」の精神で、gen_server
モジュールでそのテーブルをラップすることにしました。つまり、テーブルに直接アクセスするのは gen_server
モジュールだけです。 を照会し、そのテーブルに情報を追加するには、そのプロセス (登録された名前を持つ)にメッセージを送信します。その考えは、複数のクライアントがそのテーブルの情報を照会する処理を行うことです。gen_serverを使用してmnesiaテーブルをカプセル化しますか?
これはうまくいきますが、gen_server
モジュールには状態がありません。それには が必要ですすべては、mnesiaテーブルに格納されています。だから、もしgen_server
がおそらく なら、そのテーブルをカプセル化するための最良のモデルではないのだろうか?
私は単にそれをプロセスにしてはならず、代わりにそのモジュールの関数を通してテーブル をカプセル化するだけですか?このモジュールのバグの場合、 は、呼び出し元のプロセスがクラッシュする原因となります。これは、 という単一のクライアントにのみ影響するためです。これは、今度は、 gen_server
プロセスにクラッシュし、誰もがテーブルにアクセスできない状態になります( までスーパーバイザが再起動します)。
ご迷惑をおかけしますが、何卒ご了承ください。