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 2011[1] )
Escrito em Erlang
Sistema operativo multiplataforma
Gênero(s) Sistema de gerenciamento de banco de dados relacional
Licença MPL modificada
Página oficial erlang.org.

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 dados[2] .

Características[editar | editar código-fonte]

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 problemas[3] [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 normal[3] [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ário[4] .

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 | editar código-fonte]

O daemon de Extensible Messaging and Presence Protocol ejabberd é implementado em Erlang e utiliza o Mnesia como base de dados interna[6] . 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 banco de dados é um esboço. Você pode ajudar a Wikipédia expandindo-o.