Как в Mnesia реализуются концепции «общепринятого мнения»? Ссылочная целостность, репликация, высокая емкость - PullRequest
3 голосов
/ 06 февраля 2012

Я хочу выучить функциональный язык, и Mnesia кажется «убийственным приложением», достаточным для меня, чтобы выучить Erlang. Сначала я хочу прояснить некоторые понятия.

Как Mnesia обеспечивает ссылочную целостность в отношениях? Старые статьи говорят, что это не применяется на уровне данных. Это изменилось сейчас? Или Erlang и Mnesia предоставляют функции, которые позволяют нам писать корректно и корректно поддерживаемый код для обеспечения ссылочной целостности? Даже для транзитивных отношений через n таблиц?

Поддерживает ли язык запросов специальные запросы , если не считать полнотекстового?

А как насчет распределенных систем большой емкости ? Существует ограничение в 4ГБ, верно? Как я могу записать 10 (или более) миллионов строк в базу данных? И будет ли он автоматически распространяться на другие узлы, чтобы он стал high-Availability ? Это имеет отношение к фрагментации; Я хочу знать, является ли это оперативной концепцией, о которой мне нужно беспокоиться каждый день.

Может ли он легко настраиваться так, чтобы он выполнял репликацию в физических местоположениях , подобно настройке MySQL master-slave?

1 Ответ

4 голосов
/ 06 февраля 2012

это несколько вопросов:

  1. Ссылочная целостность - нет, Mnesia не сохраняет ссылочную целостность в разных таблицах. Mnesia - это только к / v хранилище, но она обеспечивает атомарные транзакции даже между таблицами. Таким образом, вы должны сохранять ссылочную целостность самостоятельно, но mnesia помогает вам записывать транзакции как функции и позволяет также использовать вложенные транзакции. Mnesia поддерживает максимальную ссылочную целостность между таблицей и индексом; -)
  2. Специальные запросы - нет, для mnesia это не работает, но модуль qlc помогает вам в этой задаче.
  3. Полный текст - нет никакой поддержки этого из коробки. Способность Mnesia писать транзакции на языке приложения (Erlang) помогает вам в этом, но вы должны сами придумать решение.
  4. Высокая емкость - есть фрагментированные таблицы, предназначенные для больших объемов данных.
  5. Высокая доступность - для этого существует поддержка реплики таблиц. (Существует также поддержка реплики фрагментов таблицы.)
  6. Master-slave - mnesia поддерживает репликацию master-master из коробки. Если вам нужна репликация master-slave, вам нужно развернуть свои собственные решения с поддержкой журнала транзакций. (См. mnesia:subscribe/1 и Обработка событий Mnesia .)
...