Mnesia

Бесплатно
Открытый исходный код
Windows
macOS
Linux

Сайт: www.erlang.org/doc/man/mnesia.html

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

Архитектура Mnesia организована вокруг понятий таблиц и нод; таблицы могут быть реплицированы между нодами кластера с гибкой конфигурацией хранения (memory, disc_copies и др.). Система предоставляет встроенные механизмы транзакций с атомарностью и согласованностью данных в рамках одного кластера, а также средства динамической реконфигурации схемы и управления репликами без значительных простоев. Mnesia применяется в задачах, где важны низкая задержка доступа, высокая доступность и простота интеграции с Erlang-приложениями.

  • Встроенность в Erlang/OTP: реализована как библиотека, использующая модель процессов Erlang и обеспечивающая прозрачный API для языка.
  • Распределённость: распределённые таблицы и репликация между нодами для обеспечения доступности и масштабирования.
  • Транзакции: поддержка атомарных транзакций с откатом и сериализацией операций в пределах кластера.
  • Хранение в памяти и на диске: выбор режимов хранения для таблиц — быстрый доступ в памяти и долговременное хранение на диске.
  • Динамическая схема: возможность добавлять и удалять таблицы и реплики во время работы системы без остановки всего кластера.
  • Отказоустойчивость: механизмы репликации и восстановление после сбоев нод с сохранением согласованности данных.
  • Интеграция с OTP-паттернами: совместимость с супервизорами, gen_server и другими абстракциями OTP для построения устойчивых приложений.
  • Гибкие ключи и индексы: поддержка различных типов таблиц (set, bag, duplicate_bag) и индексации полей для ускорения поиска.
  • Механизмы сохранения и восстановления: снапшоты и логирование для обеспечения персистентности и восстановления после перезапуска.
  • Поддержка кластеризации: автоматизация обмена метаданными о схеме и состоянии реплик в распределённой среде.
Подробнее