Репликация / совместное использование таблиц Mnesia

Предположим, что у нас есть N узлов erlang, на которых запущено одно и то же приложение. Я хочу поделиться таблицей мнезии T1 со всеми N узлами, в чем я не вижу проблем. Однако я хочу поделиться другой таблицей мнезии T2 с парами узлов. Я имею в виду, что содержимое T2 будет идентичным и реплицируется только на / с парой общего доступа. Другими словами, мне нужно N / 2 различного содержимого для таблицы T2. Возможно ли это с помощью мнезии, а не с переименованием T2 для каждой отдельной пары узлов?


person Haldun    schedule 23.09.2008    source источник


Ответы (2)


Одна таблица - это всегда одна таблица, независимо от того, с каким количеством узлов вы ее используете. Если вы хотите, чтобы пары узлов разделяли таблицу, вам нужно будет создать уникальную таблицу для каждой пары узлов.

Однако вы можете использовать одни и те же настройки (записи и т. Д.) Для всех этих таблиц, поэтому для этого не должно быть так много работы.

person Adam Lindberg    schedule 23.09.2008

Это можно сделать с помощью фрагментации таблицы mnesia, если использовать поведение обратного вызова mnesia_frag_hash. Это позволяет вам управлять распределением ключей, и было бы возможно построить ключи так, чтобы обратный вызов мог определять, какую пару узлов (и, следовательно, какой фрагмент) следует использовать.

Работает ли это в вашем конкретном случае или нет, зависит от ваших шаблонов доступа и набора данных. Скорее всего, это довольно запутанный подход, и вам будет лучше, если вместо этого просто использовать другие имена таблиц.

person uwiger    schedule 23.09.2008