Предположим, что у нас есть N узлов erlang, на которых запущено одно и то же приложение. Я хочу поделиться таблицей мнезии T1 со всеми N узлами, в чем я не вижу проблем. Однако я хочу поделиться другой таблицей мнезии T2 с парами узлов. Я имею в виду, что содержимое T2 будет идентичным и реплицируется только на / с парой общего доступа. Другими словами, мне нужно N / 2 различного содержимого для таблицы T2. Возможно ли это с помощью мнезии, а не с переименованием T2 для каждой отдельной пары узлов?
Репликация / совместное использование таблиц Mnesia
Ответы (2)
Одна таблица - это всегда одна таблица, независимо от того, с каким количеством узлов вы ее используете. Если вы хотите, чтобы пары узлов разделяли таблицу, вам нужно будет создать уникальную таблицу для каждой пары узлов.
Однако вы можете использовать одни и те же настройки (записи и т. Д.) Для всех этих таблиц, поэтому для этого не должно быть так много работы.
Это можно сделать с помощью фрагментации таблицы mnesia, если использовать поведение обратного вызова mnesia_frag_hash
. Это позволяет вам управлять распределением ключей, и было бы возможно построить ключи так, чтобы обратный вызов мог определять, какую пару узлов (и, следовательно, какой фрагмент) следует использовать.
Работает ли это в вашем конкретном случае или нет, зависит от ваших шаблонов доступа и набора данных. Скорее всего, это довольно запутанный подход, и вам будет лучше, если вместо этого просто использовать другие имена таблиц.