Mnesia - Википедия - Mnesia

Mnesia
Оригинальный автор (ы)Джо Армстронг, Роберт Вирдинг, Дэн Гудмундссон и другие
Разработчики)Ericsson
Стабильный выпуск
4.15.4 / 19 июня 2018 г. (2018-06-19)
Написано вErlang
Операционная системаКроссплатформенность
ПлатформаКроссплатформенность
ТипРеляционный Система управления базами данных
ЛицензияЛицензия Apache 2.0 (начиная с OTP 18.0)
Интернет сайтwww.erlang.org/ doc/человек/ mnesia.html

Mnesia это распределен, мягкое в реальном времени система управления базами данных написано в Язык программирования Erlang.[1] Распространяется как часть Открытая телекоммуникационная платформа.

Описание

Как и Erlang, Mnesia была разработана Ericsson для мягкого реального времени распределен и высокая доступность вычислительная работа, связанная с телекоммуникации. Он не задумывался как офисный обработка данных система управления базами данных, ни заменить SQL -системы. Вместо этого существует Mnesia для поддержки Erlang, где СУБД-подобные упорство необходимо.[2] Он имеет больше общего со встраиваемыми СУБД, такими как Berkeley DB чем с любым сервером базы данных SQL.

Модель базы данных

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

Реляционные особенности

Модель базы данных является реляционной, но это не то, что может ожидать кто-то, знакомый с SQL. База данных содержит таблицы. Отношения между ними моделируются как другие таблицы.[3]

Ключевой особенностью подхода Mnesia к обеспечению высокой доступности является то, что таблицы можно реконфигурировать в схеме и перемещать между узлами, не только во время работы базы данных, но даже во время выполнения операций записи.

Кодирование

В язык запросов Mnesia - это сам Эрланг, а не SQL.[4] Он позволяет легко представлять транзакции как естественную особенность Erlang, позволяя разработчикам использовать единый язык во всем приложении.

Сделки

Erlang - это функциональный язык. Mnesia опирается на это, чтобы получить КИСЛОТА сделка поддерживать. Функциональный блок, который запускается как транзакция, представляет собой обычную конструкцию Erlang, называемую Функциональный объект (или же Весело)[5] и называется единственным заявлением Mnesia mnesia: транзакция (F). Это может привести к более ясному исходному коду, чем парный НАЧИНАТЬ / СОВЕРШИТЬ синтаксис SQL и, таким образом, позволяет избежать проблемы незакрытых транзакций внутри процедуры.

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

Общий стиль кодирования для Mnesia всегда будет использовать транзакции. По соображениям производительности он также поддерживает преднамеренное "грязные операции"которые позволяют избежать транзакций. Они ставят под угрозу атомарность и изоляция свойства КИСЛОТА, но предлагают примерно в 10 раз большую пропускную способность.[6] Кроме того, есть альтернативы в памяти, хотя они теряют долговечность собственностью КИСЛОТА.

Эффективное исполнение

Mnesia является частью ЛАЙМ стек веб-приложений. Это похоже на НАПОЛЬНАЯ ЛАМПА, но на основе Erlang. Реализация на Erlang дает преимущество в эффективности за счет использования одного виртуальная машина во всем приложении. LYME использует это, поскольку Фрамбезия веб-сервер также реализован на Erlang.

Адресное пространство используется совместно (хотя и безопасно в Erlang) между кодом и данными, включая данные таблицы Mnesia.[1][7]

Происхождение и лицензирование

Mnesia и Erlang были разработаны Лабораторией компьютерных наук Эрикссон. Они были выпущены как программное обеспечение с открытым исходным кодом. Mnesia выпускается под производной версией Общественная лицензия Mozilla.[8] Начиная с OTP 18.0 они публикуются по открытым источникам Лицензия Apache 2.0. Версии до OTP 18.0 были опубликованы с открытым исходным кодом Общественная лицензия Erlang.[9]

Ejabberd

Mnesia также является вариантом, встроенным в основанный на Erlang Джаббер демон Ejabberd.[10]

Смотрите также

Рекомендации

  1. ^ а б Хокан Маттссон; Ханс Нильссон; Клас Викстром (1999). «Mnesia - надежная распределенная СУБД для телекоммуникационных приложений» (PDF).
  2. ^ «Цель Мнесии». Проект Erlang с открытым исходным кодом.
  3. ^ "Руководство по началу работы с Mnesia". Проект Erlang с открытым исходным кодом.
  4. ^ "Справочное руководство Mnesia (версия 4.4.5)". Проект Erlang с открытым исходным кодом.
  5. ^ «6.17 Веселые выражения». Проект Erlang с открытым исходным кодом.
  6. ^ Гэвин Террилл (20 августа 2007 г.). «Erlang's Mnesia - распределенная СУБД для высокомасштабируемых приложений». InfoQ.
  7. ^ «Основы перформанса Mnesia». Архивировано из оригинал на 2012-12-02. Получено 2008-09-25.
  8. ^ "Об Эрланге". Проект Erlang с открытым исходным кодом.
  9. ^ «Общественная лицензия Erlang, версия 1.1». Проект Erlang с открытым исходным кодом.
  10. ^ "домашняя страница проекта ejabberd".