где хранить темы чата, для повышения производительности и упрощения управления? - PullRequest
0 голосов
/ 28 августа 2011

Я создаю функцию чата на веб-сайте asp.net mvc, что-то вроде чека stackoverflow.

У меня есть таблица в БД для пользователей и групп чатов.

Мой вопросгде сохранить эту информацию:

  • История чата ', которую необходимо очищать каждые 3 дня'.

  • статус пользователя «подключен, отключен или отключен».

  • В настоящее время пользователь пишет сообщение ...

И еще некоторая информация, подобная этой, очень быстро меняется, когда многие пользователи общаются.
Можно ли хранить все эти данные на одном и том же сайте?Или я должен создавать разные таблицы вне таблицы пользователей?Или я должен идти с файлами XML?
Если файлы XML являются вашим выбором, вы можете подсказать мне, как организовать созданные файлы XML и как они будут выглядеть.

1 Ответ

1 голос
/ 28 августа 2011

Я бы держался подальше от файлов, в основном потому, что очень трудно управлять параллелизмом файлов при работе с несколькими модулями обновления (которые могут возникнуть, если у вас есть, скажем, веб-серверы с балансировкой нагрузки).

База данных - это хорошая идея, в зависимости от вашего масштаба (реляционные базы данных на хорошем оборудовании масштабируются до сотен, если не тысяч одновременных обновлений, но после этого часто падают с обрыва). Если вы не ожидаете, что в сети одновременно будут сотни пользователей, база данных с клиентами, использующими опрос AJAX или Comet-соединения , вероятно, является правильным решением. И не стоит сбрасывать со счетов тот факт, что почти каждый программист, которого вы можете нанять, знает, как работать с базой данных.

Другими параметрами, которые вы можете посмотреть, являются очереди сообщений, в соответствии с которыми у каждого клиента есть очередь сообщений на стороне сервера, которая периодически проверяется, снова используя опрос AJAX или соединения Comet . Очереди хороши тем, что вам не нужно отслеживать, какие сообщения клиент уже видел - вы просто берете все, что есть в очереди. Очереди с поддержкой тем также являются хорошим способом для создания состояния в режиме онлайн / офлайн.

Наконец, некоторые базы данных NoSQL ( CouchDB , MongoDB ) обеспечивают очень хорошее масштабирование путем разделения на несколько машин и хранят иерархические данные, как это делает файл XML (на самом деле они используют JSON хранить свои данные), так что поток беседы будет естественным там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...