Jump to content

Мнесия

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

Mnesia — это распределенная написанная реального времени, программная система управления базами данных на языке программирования Erlang . [1] Распространяется в рамках Open Telecom Platform .

Описание

[ редактировать ]

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

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

[ редактировать ]

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

Типы серверной части

[ редактировать ]

В Mnesia есть три встроенных типа таблиц: ram_copies, disk_copies и disk_only_copies.

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

Копии_дисков

[ редактировать ]

Данные находятся в памяти, но также сохраняются на диске, поддерживаемом disk_log. Disc_copies поддерживались таблицами Dets до 30 сентября 2001 года, с выпуском Erlang R7B-4. [3]

Disc_only_copies

[ редактировать ]

Данные хранятся только на диске и поддерживаются Dets (дисковая версия ETS). [4] Формат файла Dets использует 32-битные целые числа со знаком для смещений файлов и имеет ограничение в 2 ГБ, как и Disc_only_copies. [3]

Серверные плагины

[ редактировать ]

Из-за ограничений, наложенных Dets предложил поддержку других плагинов бэкэнда. , Ульф Вигер [5] и они были добавлены к Мнесии. Кларна добавила LevelDB. бэкэнд-плагин [6] в то время как Aeternity добавила внутренний плагин RocksDB . [7]

Реляционные функции

[ редактировать ]

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

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

Кодирование

[ редактировать ]

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

Транзакции

[ редактировать ]

Эрланг — функциональный язык . Mnesia использует это для получения ACID поддержки транзакций . Функциональный блок, который запускается как транзакция, представляет собой обычную конструкцию Erlang, называемую функциональным объектом (или Fun ). [10] и вызывается единственным оператором Mnesia mnesia:transaction(F). Это может привести к более четкому исходному коду, чем парный BEGIN / COMMIT синтаксис SQL и таким образом позволяет избежать проблемы незакрытых транзакций внутри процедуры.

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

Общий стиль кодирования для Mnesia всегда будет использовать транзакции. По соображениям производительности он также поддерживает намеренные « грязные операции », которые позволяют избежать транзакций. Они ухудшают атомарность и изоляционные свойства ACID , но обеспечивают примерно в 10 раз большую пропускную способность. [11] Кроме того, существуют альтернативы в памяти, хотя они теряют долговечности свойство ACID .

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

[ редактировать ]

Mnesia является частью стека веб-приложений LYME . Это похоже на LAMP , но основано на Erlang. Реализация на Erlang обеспечивает повышение эффективности за счет использования одной виртуальной машины во всем приложении. LYME использует это, поскольку веб-сервер Yaws также реализован на Erlang.

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

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

[ редактировать ]

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

еджабберд

[ редактировать ]

Mnesia также является опцией, встроенной в демон Jabber на основе Erlang , ejabberd . [15]

См. также

[ редактировать ]
  1. ^ Jump up to: а б Хокан Маттссон; Ханс Нильссон; Клаас Викстрем (1999). «Mnesia — распределенная надежная СУБД для телекоммуникационных приложений» (PDF) . Архивировано из оригинала (PDF) 22 сентября 2021 г. Проверено 25 сентября 2008 г.
  2. ^ «Цель Мнезии» . Проект Erlang с открытым исходным кодом.
  3. ^ Jump up to: а б «Эрланг — Вопросы по базе данных Mnesia» . www.erlang.org . Проверено 5 ноября 2021 г.
  4. ^ «Эрланг — Справочное руководство по Mnesia» . www.erlang.org . Проверено 5 ноября 2021 г.
  5. ^ mnesia_rocksdb , вечность, 18 октября 2021 г. , получено 5 ноября 2021 г.
  6. ^ mnesia_leveldb , Klarna AB, 3 ноября 2021 г. , получено 5 ноября 2021 г.
  7. ^ mnesia_rocksdb , вечность, 18 октября 2021 г. , получено 5 ноября 2021 г.
  8. ^ «Руководство по началу работы с Mnesia» . Проект Erlang с открытым исходным кодом.
  9. ^ «Справочное руководство Mnesia (v 4.4.5)» . Проект Erlang с открытым исходным кодом.
  10. ^ «6.17 Веселые выражения» . Проект Erlang с открытым исходным кодом.
  11. ^ Гэвин Террилл (20 августа 2007 г.). «Mnesia Erlang — распределенная СУБД для высокомасштабируемых приложений» . ИнфоQ .
  12. ^ «Основы производительности Mnesia» . Архивировано из оригинала 02 декабря 2012 г. Проверено 25 сентября 2008 г.
  13. ^ «Об Эрланге» . Проект Erlang с открытым исходным кодом.
  14. ^ «Общественная лицензия Erlang, версия 1.1» . Проект Erlang с открытым исходным кодом.
  15. ^ «Домашняя страница проекта ejabberd» .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 63769e529c9aa7028f999b428a765a78__1715865600
URL1:https://arc.ask3.ru/arc/aa/63/78/63769e529c9aa7028f999b428a765a78.html
Заголовок, (Title) документа по адресу, URL1:
Mnesia - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)