Mnesia

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
Mnesia
Desenvolvedor Ericsson
Plataforma multiplataforma
Versão estável 4.6 (14 de dezembro de 20111 )
Escrito em Erlang
Sistema Operacional multiplataforma
Gênero(s) Sistema de gerenciamento de banco de dados relacional
Licença MPL modificada
Página oficial erlang.org
Portal das Tecnologias de informação

Mnesia é um sistema de gerenciamento de banco de dados distribuído e em tempo real escrito na linguagem Erlang. Mnesia é parte da Open Telecom Plataform e foi desenvolvido para dar suporte ao Erlang fornecendo aos aplicativos uma forma de persistência de forma semelhante a um banco de dados2 .

Características [editar]

Por ter surgido em um ambiente voltado para telecomunicações possui características distintas dos demais sistemas de gerenciamento de banco de dados. A primeira é que o sistema executa no mesmo espaço de memória do processo cliente, tornando desnecessários esquemas de serialização dos dados ou conversão para outros formatos tornando a passagem de dados uma simples troca de ponteiros. A própria linguagem Erlang propicia o isolamento necessário para evitar que aplicativos corrompam os dados do sistema em caso de problemas3 4 .

Outra característica é a tolerância a falhas mesmo frente a replicação das informações distribuídas entre os vários nós. Mnesia também possibilita a mudança nos esquemas sem a necessidade de parar as aplicações, bem como realizar atividades de backup e replicação em segundo plano permitindo que os aplicativos continuem acessando e modificando as tabelas. Além disso é possível usar dados complexos que não estejam na primeira forma normal3 4 .

Mnesia suporta transações ACID, mas também oferece recursos para fazer operações exclusiamente na memória caso seja possível abrir mão do requisito de durabilidade. Além disso é possível saltar o gerente de transações e usar travas leves para evitar a sobrecarga em caso de operações críticas pois em sistemas de telecomunicações as tabelas em geral são mais lidas que alteradas, portanto transações podem se tornar um peso desnecessário4 .

As consultas são expressas na forma de list comprehension. Por exemplo, para listar os nomes das pessoas com mais de Num filhos escreve-se a consulta na forma: query [P.nome || P < table(pessoas), length(P.filhos) > Num] end.3 5 .

Uso [editar]

O daemon de Extensible Messaging and Presence Protocol ejabberd é implementado em Erlang e utiliza o Mnesia como base de dados interna6 . A pilha de aplicação web LYME (Linux, Yaws, Mnesia e Erlang) utiliza o Mnesia e se beneficia pelo fato da aplicação e o banco de dados executarem todos sobre a mesma máquina virtual.

Referências


Ícone de esboço Este artigo sobre Software é um esboço. Você pode ajudar a Wikipédia expandindo-o.