Я не уверен, почему вы хотите сохранить каждое отдельное сообщение в базе данных, но Mnesia не кажется особенно хорошим выбором для этого. Mnesia - это скорее распределенное хранилище значений ключей, которое вы можете использовать для поддержания состояния вашего приложения, когда вам нужно хранить «табличные данные» и запрашивать их простым и средним способом.
Я слышал, что для больших объемов текста он хорош, у него есть функции полнотекстового поиска и т. Д., Которые, как говорят, эффективны, возможно, вы захотите посмотреть на них:
Страница проекта Apache Lucene
Кроме этого, использование erlang в качестве chatserver, использование mnesia для хранения всех остальных состояний звучит как хорошая идея. Вы могли бы написать клиент javascript, который использует что-то вроде JSONP (для преодоления проблемы между доменами) и mochiweb Erlang-сайт для веб-сервера.
Написание остальной части основной системы чата должно быть довольно простым, забавная часть, так сказать:)