X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Подскажите как лучше реализовать
Bartle96
Bartle96
Topic Starter сообщение 30.10.2012, 9:19; Ответить: Bartle96
Сообщение #1


Собираюсь на своем сайте сделать возможность отправлять личные сообщения
Подскажите как организовать БД лучше:

Способ 1:
При новом диалоге создается таблица БД например с именем id1_to_id7
И в ней сохраняется история сообщений пользователя id1 с пользователем id7
И если у пользователя много диалогов то создается много таблиц

Способ 2:
При регистрации пользователя создается таблица messages_id1
С полями id to texe date new

И вся история сообщений (исходящих) данного пользователя там сохраняется. В итоге будет как то так:

1 id7 Привет 2012-10-29 14:12:25 0
2 id2 Как ты?? 2012-10-30 09:02:58 1


При загрузки диалога с помощью способа 1 будет происходить быстрее
Просто будут выведены все поля

При способе 2 нужно будет выбрать только те строки которые нужны
(если диалог с пользователем id2 то выводится только его сообщения)

Скажите что лучше 1 или 2 способ
Можете предложить свой
И скажите сильно ли нагружается sql при сортировке (WHERE (`id` = '2'))
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Arks
Arks
сообщение 30.10.2012, 12:08; Ответить: Arks
Сообщение #2


MyIsam merge с вариантом v1...

(Bartle96 @ 30.10.2012, 12:19) *
сильно ли нагружается sql при сортировке (WHERE (`id` = '2'))

нет, но sql сильно нагружается после того как пользователи на форумах называют WHERE сортировкой...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Anonym
Anonym
сообщение 30.10.2012, 12:10; Ответить: Anonym
Сообщение #3


Зачем такие извращения? Я просто делал таблицу authorname, authorid, message, date
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Bartle96
Bartle96
Topic Starter сообщение 30.10.2012, 14:23; Ответить: Bartle96
Сообщение #4


(Anonym @ 30.10.2012, 15:10) *
Зачем такие извращения? Я просто делал таблицу authorname, authorid, message, date

А можно поподробнее. Каждому пользователю создается такая таблица?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
r3ntg3n
r3ntg3n
сообщение 30.10.2012, 16:23; Ответить: r3ntg3n
Сообщение #5


(Arks @ 30.10.2012, 15:08) *
MyIsam merge с вариантом v1...
А завести всю переписку в одной таблице с id'ами собеседников религия не позволяет? Вы предлагаете для любого зарегистрировавшегося пользователя варганить новую таблицу в БД? Шардинг, не, не слышал?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 30.10.2012, 16:25; Ответить: alexdrob
Сообщение #6


(r3ntg3n @ 30.10.2012, 19:23) *
Вы предлагаете для любого зарегистрировавшегося пользователя варганить новую таблицу в БД?

Нет не для пользователя таблицу. А для польхователя много таблиц. Для каждой новой переписки таблицу :)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
r3ntg3n
r3ntg3n
сообщение 30.10.2012, 16:26; Ответить: r3ntg3n
Сообщение #7


(alexdrob @ 30.10.2012, 19:25) *
Нет не для пользователя таблицу. А для польхователя много таблиц. Для каждой новой переписки таблицу :)
Да это же ЙАZZ тогда базе приснится...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Bartle96
Bartle96
Topic Starter сообщение 30.10.2012, 18:03; Ответить: Bartle96
Сообщение #8


(r3ntg3n @ 30.10.2012, 19:23) *
А завести всю переписку в одной таблице с id'ами собеседников религия не позволяет? Вы предлагаете для любого зарегистрировавшегося пользователя варганить новую таблицу в БД? Шардинг, не, не слышал?

То есть вы хотите сказать что на сайте будет одна таблица например: message
C полями например:
id sender recipient text date

И все сообщения всех пользователей будут там?
Все пользователи будут к ней обращаться?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
LifeUP
LifeUP
сообщение 30.10.2012, 18:25; Ответить: LifeUP
Сообщение #9


ещё поле с группой, чтобы сообщения не были в куче а каждая переписка это новая группа
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
r3ntg3n
r3ntg3n
сообщение 30.10.2012, 19:04; Ответить: r3ntg3n
Сообщение #10


(Bartle96 @ 30.10.2012, 21:03) *
То есть вы хотите сказать что на сайте будет одна таблица
Да, именно это я хочу сказать. В итоге таблицу можно шардить - разбросить частями на несколько серверов, что позволит снизить нагрузку. Правда, придется писать еще обертку, которая будет определять на каком храниться история переписки какого-то пользователя. На практике таблицу "режут", например, по id пользователя, допустим, отправителя. И уже в зависимости от значения этого атрибута опрашивают необходимый сервер БД, на котором лежит часть таблицы переписки.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Большие ставки для кликов в Я.Директ. Как удешевить?
2 rownong27 1126 26.3.2024, 14:13
автор: knezevolk
Открытая тема (нет новых ответов) Как вы бросили работу и перешли на заработок с сайтов?
12 uahomka 2300 25.3.2024, 6:52
автор: Skyworker
Открытая тема (нет новых ответов) Как отозвать банковский платеж фрилансеру?
28 metvekot 3923 25.3.2024, 6:34
автор: Skyworker
Открытая тема (нет новых ответов) Как вывести деньги в Украине с заблокированного Юмани ?
23 freeax 3653 24.3.2024, 20:55
автор: Liudmila
Открытая тема (нет новых ответов) Создать видеоканал лучше в ютуб или телеграм?
10 uahomka 1813 24.3.2024, 4:21
автор: Alexand3r


 



RSS Текстовая версия Сейчас: 29.3.2024, 19:42
Дизайн