Как лучше всего организовать обмен сообщениями на сайте (почта)?

Torio

Guest
Как лучше всего организовать обмен сообщениями на сайте (почта)?

Подскажите, пожалуйста, как лучше всего организовать внутреннюю почту на сайте?
Где хранить сообщения пользователей лучше всего: в одной большой таблице MySql или на каждого пользователя создавать свою таблицу (число пользователей может достигнуть несколько тысяч)?
Меня беспокоит скорость обращения к БД если таблица будет одна. А на каждого пользователя создавать свою - целесообразно ли это?
Или вообще это как-нибудь решается без помощи MySql?
 

my_php

Новичок
знаю что бд мускл работает быстро и поддерживает около 10 млн записей
 

Torio

Guest
Автор оригинала: my_php
знаю что бд мускл работает быстро и поддерживает около 10 млн записей
Насколько быстро?

Вот меня и интересует, допустим, пользователей 10000 и у каждого по 10-50 сообщений (не все стирают старые и прочитанные), то сколько времени потребуется, чтоб перебрать всю эту БД?

-~{}~ 30.05.05 03:54:

Решил сделать все водной таблице. Может, пока не закончил, кто-нибудь меня остановит? :)
 

Paxan

Новичёк
Две таблицы: первая - пользователи, вторая - сообщения. Про скорость не волнуйся - сделай индексы и всё у тебя получится.
 

Torio

Guest
Автор оригинала: Paxan
Две таблицы: первая - пользователи, вторая - сообщения. Про скорость не волнуйся - сделай индексы и всё у тебя получится.
то есть как на стандартном форуме или в гостевой? но тогда 2 запроса: один на автора и получателя, а второй на сообщение, а так один! Это не лучше разве, если нет, то почему (правда важно знать, не просто так спрашиваю)?

(просто ждал-ждал ответа и не дождался - начал делать, а переделывать жалко, но пока еще можно!)
 

Paxan

Новичёк
ничего страшного в двух запросах нет
а не лучше потому, что у тебя получится криво спроектированная база
 

Torio

Guest
Автор оригинала: Paxan
ничего страшного в двух запросах нет
а не лучше потому, что у тебя получится криво спроектированная база
Так у меня и так в двух таблицах...
(пользователи отдельно)
Просто я спрашивал о том, надо ли заводить на каждого юзера отдельную таблицу с его сообщениями. Теперь понял, что не надо. Всем спасибо. Сделал в двух. :)
 

SelenIT

IT-лунатик :)
...но тогда 2 запроса: один на автора и получателя, а второй на сообщение, а так один!
В чем проблема выбрать все, что нужно, за один запрос (hint: JOIN)? Хотя действительно не всегда один большой запрос быстрее двух маленьких...
 

Torio

Guest
Проблемы больше нет.
таблица след вида:
id_post, name, text, date, author, adressee, status, hideautor, hideadressee, pk id_post type=myisam. (синтаксис вольный - лень печатать весь запрос).

За один запрос выбираются все строки где автор - получатель, за второй - все строки где автор отправитель. Если один из участников разговора удаляет сообщение, ему его не показывают (hide...), status нужен, чтоб автор и получатель згали, какие сообщения прочитаны, какие нет.

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

Всем спасибо, тему можно считать закрытой. :)
 
Сверху