Задавайте вопросы, мы ответим
Вы не зашли.
Начинаю писать сайт знакомств и не знаю где хранить переписку пользователей. Создать таблицу в БД, куда писать текст ,пользователя, дату ,но если сообщений будет 10 000 или больше, работа с таблицей будет долгой. Можно в файл записывать, но что писать текс сообщения, а как выводить их потом по датам.
Во общем хотелось бы услашать мнения опытных программистов и людей , которые уже сталкивались с подобной проблемой или тех, кто знает , как это реализовано на таких сайтах, как mamba.ru
Неактивен
denisOg написал:
Создать таблицу в БД, куда писать текст ,пользователя, дату ,но если сообщений будет 10 000 или больше, работа с таблицей будет долгой.
Откда такие цифры?
С такой проблемой не сталкивался, но открыл базу форума phpbb и вижу, что для личных сообщений используется 2 таблицы: в одной текст сообщения, в другой - все остальное (от кого, кому, когда и т.д.)
Неактивен
Интересно, зачем. Я был делал в одной
Неактивен
Так сам текст сообщения нужен редко. Гораздо чаще необходимо сформировать список отправленных или входящих сообщений для конкретного пользователя.
Неактивен
vasya написал:
denisOg написал:
Создать таблицу в БД, куда писать текст ,пользователя, дату ,но если сообщений будет 10 000 или больше, работа с таблицей будет долгой.
Откда такие цифры?
С такой проблемой не сталкивался, но открыл базу форума phpbb и вижу, что для личных сообщений используется 2 таблицы: в одной текст сообщения, в другой - все остальное (от кого, кому, когда и т.д.)
А Вы думаете на сайте знакомств не будет 10 000 сообщений? Я думаю со временем будет.
В общем решил хранить сообщения в 1 таблице
_______________________________________________________________________
| | | | | | | | | |
| id | id_to | id_from | text | time | mod_to | mod_from | id_from_let| param |
| | | | | | | | | |
id_to - id кому
id_from - id откого
text -текст
time -время
mod_to состояние письма у получателя(если 1 то отображается сообщение, если 0-то не отображается("пользователь его удалил"))
mod_from тоже самое что и mod_to только у отправителя.
если mod_to и mod_from равны 0 то я письмо удаляю из Таблицы.
id_from_let-id предыдущего письма в переписке. нужно для того, что бы отображать историю переписки.
param - доп опция письма(может включать и не буду).
Как такая таблица для переписки, Вам, господа?)
Неактивен
denisOg написал:
А Вы думаете на сайте знакомств не будет 10 000 сообщений? Я думаю со временем будет.
Я спрашивал - почему вы решили, что именно при 10000 начнутся тормоза, а не при 1000 или 1000000?
denisOg написал:
Как такая таблица для переписки, Вам, господа?)
Как минимум нужен ещё заголовок сообщения.
Многое зависит от того какие запросы вы будете выполнять. Например, как вы собираетесь формировать историю переписки? Запросами в цикле?
Неактивен
vasya написал:
denisOg написал:
А Вы думаете на сайте знакомств не будет 10 000 сообщений? Я думаю со временем будет.
Я спрашивал - почему вы решили, что именно при 10000 начнутся тормоза, а не при 1000 или 1000000?
denisOg написал:
Как такая таблица для переписки, Вам, господа?)
Как минимум нужен ещё заголовок сообщения.
Многое зависит от того какие запросы вы будете выполнять. Например, как вы собираетесь формировать историю переписки? Запросами в цикле?
Насчет тормозов -не работал с таблицами, где есть 100000-он записей, но думаю теоретически, могут быть тормоза.
Насчет заголовка-сделаю.
Также наверно нужно поле для (новое/прочитанное письмо.)
А историю думаю выбирать циклом, цепочкой. В каждом письме будет поле(id_from_let) в котором указывается id предыдущего письма(последнего письма из выбранной истории переписки).
Первое письмо имеет это значение "0". Вот и выбираю письма по id о тех пор, пока id предыдущего не равно "0"
А вообще какие есть еще варианты по формированию историй? Может более легкие, быстрые.
Отредактированно denisOg (17.03.2010 00:01:45)
Неактивен
paulus написал:
Интересно, зачем. Я был делал в одной
Я бы тоже, пока таблица не такая большая.
Но см. http://sqlinfo.ru/forum/viewtopic.php?id=2383
Неактивен