Mnesia
| 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
- ↑ Mnesia Reference Manual. Página visitada em 14 de janeiro de 2012.
- ↑ Introduction. Mnesia Reference Manual. Página visitada em 14 de janeiro de 2012.
- ↑ a b c Gavin Terrel (20 de agosto de 2007). Erlang's Mnesia - a distributed DBMS for highly scalable apps. InfoQ. Página visitada em 14 de janeiro de 2012.
- ↑ a b c Håkan Mattsson, Hans Nilsson, Claes Wikstrom (1999). Mnesia - A Distributed Robust DBMS for Telecommunications Applications. Página visitada em 14 de janeiro de 2012.
- ↑ Getting started with Mnesia (19 de setembro de 2007). Página visitada em 14 de janeiro de 2012.
- ↑ Migrate database to another host. ejabberd. Página visitada em 14 de janeiro de 2012.