Какую архитектуру БД выбрать для чата аналогичного вконтакте?

Всем привет!

Посоветуйте архитектуру БД для чата с историей.

Есть таблица user, поля:

  • userId - уникальный id для каждого пользователя в системе
  • name - имя пользователя

Каждый пользователь может начать диалог с другим пользователем, нужно хранить переписку (текст, дата отправки) и количество непрочитанных сообщений. Между любыми двумя пользователями может быть только один чат. Чаты приватные, не групповые (макс 2 человека). Хранить последние 1000 сообщений.

Можно добавить в черный список собеседника (игнор).

Нужно эффективно, за один запрос получить все чаты (собеседников) для конкретного пользователя (за исключением игнорируемых собеседников), сортировка - сначала непрочитанные сообщения, затем по дате последнего обновления.

1 ответов