Erlang: trabalho distribuído em uma matriz

Estou trabalhando em um projeto em que temos uma matriz de átomos que funciona como um hash. Sempre que um usuário se conecta ao servidor, um determinado valor é hash e esse hash é usado como um índice para pesquisar o elemento na matriz e retornar esse elemento. "Forças externas" (que são tratadas por um servidor gen de longa execução) são capazes de alterar esse array, então não posso simplesmente codificá-lo. Meu problema é como "hospedar" essa matriz.

Minha primeira implementação foi um gen_server simples, que mantinha uma cópia da matriz e a enviava a quem pedisse. O processo que solicita isso pode percorrê-lo e obter o índice desejado. Essa implementação tinha uma quantidade excessiva de memória sendo usada, o que eu atribuí ao fato de haver tantas cópias dessa mesma matriz flutuand

Minha implementação atual possui um servidor gen_server central que lida com o estado dessa matriz e filhos que lidam com as solicitações reais. Quando o estado muda, o gen_server central atualiza os filhos. Quando um processo deseja encontrar o resultado do hash, ele envia seu número de índice para o gen_server central, que encaminha a solicitação para um dos filhos. O filho percorre sua lista "local" e envia o átomo resultante de volta ao processo origina

O problema com a implementação atual é que ela fica atolada no tráfego intenso. Tentei usar mais e mais filhos, mas tenho certeza de que o gen_server central é o gargal

lguém tem alguma idéia de uma solução melhor para o meu problem

EDIT:% s / matriz / lista / g

questionAnswers(4)

yourAnswerToTheQuestion