Estoy construyendo un servidor erlang. Los usuarios envían solicitudes HTTP al servidor para actualizar su estado. El proceso de solicitud http en el servidor guarda el mensaje de estado del usuario en la memoria. Cada minuto, el servidor envía todos los mensajes a un servidor remoto y borra la memoria. Si un usuario actualiza su estado varias veces en un minuto, el último mensaje anula el anterior. Es importante que, entre leer todos los mensajes y borrarlos, ningún otro proceso pueda escribir un mensaje de estado.gen_server con una tabla dict vs mnesia vs ets
¿Cuál es la mejor manera de implementarlo?
gen_server with a dict. La clave será el ID de usuario. dict: store/3 actualizará o creará el estado. Gen_server resuelve el problema de 'transacción'.
mnesia table with ram_copies. Manejar transacciones y no necesito implementar gen_server. ¿Hay demasiada sobrecarga con esta solución?
tabla ETS que es más liviana y tiene gen_server. ¿Es posible hacer la transacción en ETS? Para bloquear la mesa entre leer todos los mensajes y borrarlos?
Gracias
Esto ha sido discutido en las preguntas de Erlang-lista de correo. – rvirding
Y aquí hay un enlace a la discusión, para aquellos como yo que encontraron stackoverflow primero: http://erlang.2086793.n4.nabble.com/gen-server-with-a-dict-vs-mnesia-table-vs- ets-td2119064.html – JoelPM