Sto costruendo un server erlang. Gli utenti inviano richieste HTTP al server per aggiornare il loro stato. Il processo di richiesta http sul server salva il messaggio di stato dell'utente in memoria. Ogni minuto il server invia tutti i messaggi a un server remoto e cancella la memoria. Se un utente aggiorna il suo stato più volte in un minuto, l'ultimo messaggio sovrascrive quello precedente. È importante che tra la lettura di tutti i messaggi e la loro eliminazione nessun altro processo possa scrivere un messaggio di stato.gen_server con una tabella dict vs mnesia vs ets
Qual è il modo migliore per implementarlo?
gen_server con un dett. La chiave sarà l'ID utente. dict: store/3 aggiornerà o creerà lo stato. Gen_server risolve il problema della "transazione".
tabella mnesia con ram_copies. Gestire le transazioni e non ho bisogno di implementare un gen_server. C'è troppo sovraccarico con questa soluzione?
Tabella ETS che è più leggera e ha un gen_server. È possibile fare la transazione in ETS? Bloccare la tabella tra leggere tutti i messaggi e cancellarli?
Grazie
Questo è stato discusso sulle Erlang-domande mailing-list. – rvirding
Ed ecco un link alla discussione, per quelli come me che hanno trovato prima stackoverflow: http://erlang.2086793.n4.nabble.com/gen-server-with-a-dict-vs-mnesia-table-vs- ETS-td2119064.html – JoelPM