У меня есть серверное приложение, сделанное в Erlang. В нем у меня есть таблица mnesia , которая хранит некоторую информацию о фотографиях. В духе «все это процесс », я решил обернуть эту таблицу в модуле gen_server
, так что модуль gen_server
является единственным, который напрямую обращается к таблице. Запрос и добавление информации в эту таблицу выполняется путем отправки сообщений этому процессу (у которого есть зарегистрированное имя). Идея состоит в том, что будет несколько клиентов обрабатывать информацию из этой таблицы.Использование gen_server для инкапсуляции таблицы mnesia?
Это работает просто отлично, но что gen_server
модуль не имеет состояния. Все, что требуется , хранится в таблице mnesia. Итак, интересно, может ли gen_server
не лучшая модель для инкапсуляции этой таблицы?
Должен ли я просто не делать это процессом, а вместо этого инкапсулировать таблицу через функции в этом модуле? В случае ошибки в этом модуле, что приведет к сбою процесса вызова, что, я думаю, может быть лучше, потому что это повлияет только на одного клиента, а не на то, что это приведет к тому, что процесс будет авария, оставив всех без доступа к таблице (до супервизор перезапустит ее).
Любой ввод очень ценится.