Erlang: 2 базы данных на 2 веб-сервера? - PullRequest
1 голос
/ 12 марта 2010

Я создал систему блогов с php + postgresql. Теперь я хочу добавить веб-чат (в РЕАЛЬНОМ ВРЕМЕНИ для миллионов пользователей одновременно), где каждое сообщение сохраняется в базе данных.

Я думаю использовать Erlang + Mnesia на другом веб-сервере для этой проблемы.

Таблица сообщения будет выглядеть так:

message_id, user_id, сообщение, дата

user_id должен быть связан с таблицей пользователей в базе данных Postgresql на другом веб-сервере.

Как я могу это сделать без потери производительности?

Если у вас есть другие креативные решения, скажите, пожалуйста;).

Ответы [ 3 ]

1 голос
/ 12 марта 2010

Я не уверен, почему вы хотите сохранить каждое отдельное сообщение в базе данных, но Mnesia не кажется особенно хорошим выбором для этого. Mnesia - это скорее распределенное хранилище значений ключей, которое вы можете использовать для поддержания состояния вашего приложения, когда вам нужно хранить «табличные данные» и запрашивать их простым и средним способом.

Я слышал, что для больших объемов текста он хорош, у него есть функции полнотекстового поиска и т. Д., Которые, как говорят, эффективны, возможно, вы захотите посмотреть на них:

Страница проекта Apache Lucene

Кроме этого, использование erlang в качестве chatserver, использование mnesia для хранения всех остальных состояний звучит как хорошая идея. Вы могли бы написать клиент javascript, который использует что-то вроде JSONP (для преодоления проблемы между доменами) и mochiweb Erlang-сайт для веб-сервера.

Написание остальной части основной системы чата должно быть довольно простым, забавная часть, так сказать:)

0 голосов
/ 16 марта 2010

Этот проект использует postgresql с большим успехом.

http://zotonic.com/

Возможно, вы захотите использовать тот же код для доступа к базе данных postgresql.

0 голосов
/ 13 марта 2010

Mnesia, безусловно, может сделать то, что вы предлагаете, но если вы уже настроили postgres, есть ли причина, по которой вы не хотите этим пользоваться? Это может быть проще, чем создание целой отдельной службы, и если вы хотите, чтобы erlang запустил службу чата, у него есть драйверы postgres.

...