Mnesia - Mnesia

Mnesia
Autor oryginału (s) Joe Armstrong, Robert Virding Dan Gudmundsson i inni
Twórca (y) Ericsson
Wersja stabilna
4.15.4 / 19 czerwiec 2018 ( 19.06.2018 )
Napisane w Erlang
System operacyjny Cross-platform
Platforma Cross-platform
Rodzaj Relacyjny system zarządzania bazą danych
Licencja Apache License 2.0 (od 18,0 OTP)
Stronie internetowej WWW .erlang .org / doc / man / mnesia .html
Lyme (software bundle) oparty jest na Erlang i składa Mnesia . To jest całkowicie złożona z wolnego i oprogramowania open source

Mnesia jest rozprowadzany , miękka w czasie rzeczywistym system zarządzania bazami danych napisany w języku programowania Erlang . Jest on rozprowadzany jako część Telecom platformie Open .

Opis

Jak z Erlang, Mnesia został opracowany przez firmę Ericsson miękkiego czasie rzeczywistym rozproszonej i wysokiej niezawodności pracy obliczeniowej związanej telekomunikacyjnych . To nie miało być oparte na ogólnej biurowego przetwarzania danych systemu zarządzania bazami danych , ani zastąpić SQL systemy -na. Zamiast Mnesia istnieje wspierać Erlang, gdzie DBMS-jak wytrwałość jest wymagane. To ma więcej wspólnego z niezabudowany DBMS, takich jak Berkeley DB niż z dowolnym serwerem bazy danych SQL.

model bazy danych

„Rz” w tabelach są reprezentowane jako rekordy, które zawierają istotną wartość i pole danych. To pole danych może z kolei być krotka zawierająca strukturę danych Erlang dowolnej złożoności.

relacyjne funkcje

Model jest relacyjna baza danych, ale nie jest to, co ktoś zaznajomiony z SQL może spodziewać. Baza danych zawiera tabele. Relacje między nimi są modelowane jako innych tabelach.

Kluczową cechą podejścia wysokiej dostępności Mnesia jest to, że tabele mogą być skonfigurowane w schemacie i przeniósł się między węzłami, a nie tylko wtedy, gdy baza danych jest nadal działa, ale nawet wtedy, gdy operacje zapisu są nadal w toku.

Kodowanie

Język zapytań od Mnesia jest sama Erlang, zamiast SQL . Pozwala ona na łatwe reprezentacji transakcji jako naturalną cechę Erlang, pozwalając programistom wykorzystać jeden język w całej aplikacji.

transakcje

Erlang jest język funkcjonalny . Mnesia opiera się na tym, aby uzyskać ACID transakcji wsparcie. Blok funkcjonalny, który prowadzony jest jako transakcja jest powszechne Erlang konstrukt nazywany Object funkcjonalna (lub zabawy ) i jest wywoływana przez pojedynczego sprawozdania Mnesia mnesia:transaction(F). Może to prowadzić do wyraźniejszego kodu źródłowego niż sparowany BEGIN/ COMMITskładni SQL, a więc unika jego problem niezamkniętych transakcji w ramach procedury.

Ponownie w wyniku funkcjonalnego charakteru Erlang transakcje gniazdowania jest prosta. Możliwe jest również, aby rozpowszechniać transakcje na wielu węzłach (tj oddzielnych serwerach). Semantyka wykorzystaniem transakcji w ten sposób pozostaje spójna, co ułatwia pisanie kodu biblioteki, który działa jednakowo w każdym kontekście.

Ogólny styl kodowania dla Mnesia będą zawsze wykorzystywać transakcje. Ze względu na wydajność, jak również wspiera celowe „ brudnych operacji ”, które uniemożliwią transakcje. Są zagrozić niepodzielność i izolacyjne właściwości ACID , ale oferują około 10 x większą przepustowość. Ponadto istnieją także alternatywne w pamięci, chociaż te tracą trwałość właściwości ACID .

Sprawne wykonanie

Mnesia stanowi część LYME aplikacji internetowych stosie. Jest to podobne do LAMP , ale w oparciu o Erlang. Wdrożenie w Erlang przynosi korzyści efektywności ze względu na wykorzystanie pojedynczej maszyny wirtualnej w całej aplikacji. LYME korzysta z tego, skoro frambezja serwer jest również zaimplementowana w Erlang.

Przestrzeń adresowa jest dzielona (choć tak bezpiecznie, pod Erlang) między kodu i danych, w tym tabel Mnesia użytkownika.

Początki i licencjonowanie

Mnesia i Erlang zostały opracowane przez Ericsson Computer Science Laboratory. Zostały one wydane jako oprogramowania open source . Mnesia jest zwolniony na podstawie pochodnej licencji Mozilla Public License . Od OTP 18,0 one są publikowane zgodnie z open source Apache License 2.0 . Wersje przed OTP 18,0 opublikowane zostały w ramach open source Erlang Licencji Publicznej .

ejabberd

Mnesia jest również opcja osadzony w Erlang opartej Jabber demona, ejabberd .

Zobacz też

Referencje