Tengo una aplicación de servidor hecha en Erlang. En él tengo una tabla de mnesia que almacena cierta información en las fotos. En el espíritu de "todo es un proceso ", decidí envolver esa tabla en un módulo gen_server
, de modo que el módulo gen_server
es el único que accede directamente a la tabla. Consultar y agregar información a esa tabla se realiza mediante el envío de mensajes a ese proceso (que tiene un nombre registrado). La idea es que habrá varios procesos de clientes que consulten información de esa tabla.¿Usando gen_server para encapsular una tabla de mnesia?
Esto funciona bien, pero el módulo gen_server
no tiene estado. Todo lo que requiere se almacena en la tabla de mnesia. Entonces, me pregunto si un gen_server
es quizás ¿no es el mejor modelo para encapsular esa tabla?
¿Debo simplemente no hacer un proceso, y en su lugar solo encapsular la tabla a través de las funciones en ese módulo? En caso de un error en ese módulo, ese haría que el proceso de llamada fallara, lo cual creo que podría ser mejor, porque solo afectaría a un único cliente, en lugar de ahora, cuando causaría el proceso gen_server
bloqueo, dejando a todos sin acceso a la mesa (hasta que el supervisor lo reinicie).
Cualquier entrada es muy apreciada.