Pergunta

Eu tenho um servidor Ejabberd com uma boa quantidade de módulos personalizados em execução. Eu tenho várias tabelas de mnesia e sei que elas podem ser facilmente copiadas entre nós, sem nenhuma alteração no código. Eu queria saber se há uma maneira semelhante com as tabelas do ETS?

Idealmente, seria bom poder ter várias máquinas funcionando exatamente com os mesmos dados de mnesia e ETS, sem ter que converter minhas tabelas de ETs em mesas de mnesia. (E assim, reescrevendo uma boa quantidade de código.)

Por mais que eu tivesse feito um RPC: ligue para as tabelas do ETS para cada nó, mas não tinha certeza do impacto que isso teria no desempenho.

Se alguém tiver alguma resposta, por favor me avise.

Foi útil?

Solução

Não, o conteúdo da tabela do ETS não pode ser replicado para você.

Replicação (e segurança da transação) é o recurso que o aplicativo de banco de dados MNESIA introduzindo, sua implementação usa o ETS para tabelas ram_only.

Outras dicas

Você pode RPC: ligue nas tabelas do ETS no nó distante.

Mas o objetivo de mnesia está resolvendo o tipo de problema que você está enfrentando: replicação

Converter seu código em mnesia é um bom investimento para o futuro. E embora arriscado, você sempre pode usar mnesia:ets() para minimizar a alteração do código.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top