Ho un'applicazione server realizzata in Erlang. In esso ho una tabella mnesia che memorizza alcune informazioni sulle foto. Nello spirito di "tutto è un processo " ho deciso di avvolgere quella tabella in un modulo gen_server
, in modo che il modulo gen_server
sia l'unico che accede direttamente alla tabella. La query e l'aggiunta di informazioni a tale tabella vengono effettuate inviando messaggi a tale processo (che ha un nome registrato). L'idea è che ci saranno diversi processi client che richiedono informazioni da quella tabella.Utilizzare gen_server per incapsulare una tabella mnesia?
Questo funziona bene, ma quello modulo gen_server
non ha stato. Tutto ciò che richiede è memorizzato nella tabella mnesia. Quindi, mi chiedo se uno gen_server
è forse il non il miglior modello per incapsulare quella tabella?
Dovrei semplicemente non renderlo un processo, e invece incapsulare solo la tabella attraverso le funzioni in quel modulo? In caso di un errore in quel modulo, quello causerebbe l'arresto anomalo del processo chiamante, che penso potrebbe essere migliore, perché riguarderebbe solo un singolo client, al contrario di adesso, quando causerebbe il processo gen_server
crash, lasciando tutti senza accesso al tavolo (fino al il supervisore lo riavvia).
Qualsiasi input è molto apprezzato.