SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 15.03.2010 02:22:42

denisOg
Участник
Зарегистрирован: 20.11.2009
Сообщений: 15

Как лучше хранить переписку сообщениями на сайте.

Начинаю писать сайт знакомств и не знаю где хранить переписку пользователей. Создать таблицу в БД, куда писать текст ,пользователя, дату ,но если сообщений будет 10 000 или больше, работа с таблицей будет долгой. Можно в файл записывать, но что писать текс сообщения, а как выводить их потом по датам.
Во общем хотелось бы услашать мнения опытных программистов и людей , которые уже сталкивались с подобной проблемой или тех, кто знает , как это реализовано на таких сайтах, как mamba.ru

Неактивен

 

#2 15.03.2010 02:39:17

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Как лучше хранить переписку сообщениями на сайте.

denisOg написал:

Создать таблицу в БД, куда писать текст ,пользователя, дату ,но если сообщений будет 10 000 или больше, работа с таблицей будет долгой.

Откда такие цифры?

С такой проблемой не сталкивался, но открыл базу форума phpbb и вижу, что для личных сообщений используется 2 таблицы: в одной текст сообщения, в другой - все остальное (от кого, кому, когда и т.д.)

Неактивен

 

#3 15.03.2010 13:16:41

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Как лучше хранить переписку сообщениями на сайте.

Интересно, зачем. Я был делал в одной smile

Неактивен

 

#4 15.03.2010 13:28:05

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Как лучше хранить переписку сообщениями на сайте.

Так сам текст сообщения нужен редко. Гораздо чаще необходимо сформировать список отправленных или входящих сообщений для конкретного пользователя.

Неактивен

 

#5 15.03.2010 23:30:47

denisOg
Участник
Зарегистрирован: 20.11.2009
Сообщений: 15

Re: Как лучше хранить переписку сообщениями на сайте.

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 - доп опция письма(может включать и не буду).

Как такая таблица для переписки, Вам, господа?)

Неактивен

 

#6 16.03.2010 00:03:04

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Как лучше хранить переписку сообщениями на сайте.

denisOg написал:

А Вы думаете на сайте знакомств не будет 10 000 сообщений? Я думаю со временем будет.

Я спрашивал - почему вы решили, что именно при 10000 начнутся тормоза, а не при 1000 или 1000000?

denisOg написал:

Как такая таблица для переписки, Вам, господа?)

Как минимум нужен ещё заголовок сообщения.

Многое зависит от того какие запросы вы будете выполнять. Например, как вы собираетесь формировать историю переписки? Запросами в цикле?

Неактивен

 

#7 16.03.2010 23:57:08

denisOg
Участник
Зарегистрирован: 20.11.2009
Сообщений: 15

Re: Как лучше хранить переписку сообщениями на сайте.

vasya написал:

denisOg написал:

А Вы думаете на сайте знакомств не будет 10 000 сообщений? Я думаю со временем будет.

Я спрашивал - почему вы решили, что именно при 10000 начнутся тормоза, а не при 1000 или 1000000?

denisOg написал:

Как такая таблица для переписки, Вам, господа?)

Как минимум нужен ещё заголовок сообщения.

Многое зависит от того какие запросы вы будете выполнять. Например, как вы собираетесь формировать историю переписки? Запросами в цикле?

Насчет тормозов -не работал с таблицами, где есть 100000-он записей, но думаю теоретически, могут быть тормоза.

Насчет заголовка-сделаю. 
Также наверно нужно поле для (новое/прочитанное письмо.)

А историю думаю выбирать циклом, цепочкой. В каждом письме будет поле(id_from_let) в котором указывается id предыдущего письма(последнего письма из выбранной истории переписки).
Первое письмо имеет это значение "0".  Вот и выбираю письма по id о тех пор,  пока id предыдущего не равно "0"

А вообще какие есть еще варианты по формированию историй? Может более легкие, быстрые.

Отредактированно denisOg (17.03.2010 00:01:45)

Неактивен

 

#8 17.03.2010 00:55:14

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: Как лучше хранить переписку сообщениями на сайте.

paulus написал:

Интересно, зачем. Я был делал в одной

Я бы тоже, пока таблица не такая большая.
Но см. http://sqlinfo.ru/forum/viewtopic.php?id=2383

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson