Mnesia имеет уведомления о событиях. Возможно иметь процесс (gen_server), который подписывается на события mnesia. Эти события подразделяются на категории: события таблицы, системные события и другие. Прочитайте документацию mnesia в части, касающейся событий. Фактически процесс может сообщать о событиях с помощью обработчика событий mnesia, вызывая: mnesia:report_event(Event)
. Весь процесс, подписанный на события mnesia, получит это сообщение.
Mnesia будет сообщать в режиме реального времени информацию обо всех транзакциях на столе подписанным процессам. Могут быть прочитаны, записаны или удалены транзакции, и процесс в его цикле может соответствовать типу события, в котором он может быть заинтересован. Существуют подробные и простые события таблицы. Я лично нашел события очень полезными. Вы должны быть в состоянии получить детали из документации.
О событиях. Теперь в таблицах mnesia хранятся записи того же типа. Доступ к этой информации можно получить, позвонив по номеру mnesia:table_info(Table_name::atom(),attributes)
. Применяя индексы к таблице мнезий, он будет принимать любое поле из этих атрибутов, если оно не является первым полем записи (обычно называемым «первичным ключом»). Эти индексы лучше применять при создании таблицы, чем во время выполнения из-за ряд причин. Рассмотрим фрагмент кода ниже
-record(employee,{id,first_name,other_name,sex,age,job}).
install(Nodes)->
mnesia:create_schema(Nodes),
mnesia:start(),
mnesia:create_table(employee,[{index,[age,sex,first_name,job]},<br> {attributes,record_info(fields,employee)}]),
mnesia:stop(),
ok.
если я хорошо понял ваш вопрос, то теперь я могу сказать, что у сотрудника таблицы есть столбцы: индекс возраста, пола, имени, другого имени и задания, а также все API-интерфейсы mnesia для поиска записей на основе индексированных атрибутов, например, для работы. mnesia:index_read/3 or mnesia:index_match_object/2 or mnesia:index_match_object/4
. удачи
/joshmuza@gmail.com