Как создать мнезию в эликсире?

Как создать :mnesia столик в эликсире? Есть ли способ добавить индексы при создании?

Например, я хочу создать таблицу User с несколькими атрибутами.

2 ответа

Решение

Вот как это сделать:

:mnesia.start
:mnesia.create_table(
    User, 
   [{:disc_copies, [node()]}, 
     attributes: [:id, :name, :job], 
     index: [:name, :job]
   ])

Обратите внимание, что первый атрибут будет проиндексирован по умолчанию. Для получения дополнительной информации посетите http://elixirschool.com/en/lessons/specifics/mnesia/

Вам также необходимо создать схему перед созданием таблицы. Обратите внимание, что первый атрибут будет проиндексирован на узле? по умолчанию. Для получения дополнительной информации посетите elixirschool.com/en/lessons/specifics/mnesia/#starting-mnesia

Работа с интерфейсом Erlang Mnesia в Elixir может быстро стать утомительной. Другой вариант заключается в использовании библиотеки, как Memento, Amnesia или же EctoMnesia,

Вот как бы вы определили таблицу в Memento:

defmodule MyApp.User do
  use Memento.Table, attributes: [:id, :name, :email], index: [:email]
ennd

и создайте это:

Memento.Table.create!(MyApp.User)

Полное раскрытие: я автор Memento.

Другие вопросы по тегам