Таблицы Erlang Ets между узлами
Вопрос
У меня есть сервер ejabberd с большим количеством работающих пользовательских модулей.У меня есть несколько таблиц мнезии, и я знаю, что их можно легко скопировать между узлами без каких-либо изменений в коде.Мне было интересно, есть ли аналогичный способ с таблицами ets?
В идеале было бы неплохо иметь возможность иметь несколько машин, работающих с одинаковыми данными mnesia и ets, без необходимости конвертировать мои таблицы ets в таблицы mnesia.(И, таким образом, переписывание большого количества кода.)
Хотя у меня был вызов rpc:call для таблиц ets для каждого узла, но я не был уверен, какое влияние это окажет на производительность.
Если у кого-то есть ответы, пожалуйста, дайте мне знать.
Решение
Нет, содержимое таблицы ETS не может быть воспроизведено для вас.
Репликация (и безопасность транзакций) - это функция, которую вводит приложение базы данных MNESIA, ее реализация использует ETS для таблиц RAM_ONLY.
Другие советы
Вы можете использовать rpc:call для таблиц ets на удаленном узле.
Но весь смысл мнезии заключается в решении той проблемы, с которой вы столкнулись: репликация
Преобразование вашего кода в mnesia — хорошая инвестиция в будущее.И хотя это рискованно, вы всегда можете использовать mnesia:ets()
для минимизации изменения кода.