mysql

12
AM
На сайте с 12.09.2007
Offline
47
#11
_savit:
это самый неправильный способ хранения друзей! текстовые столбцы неограниченной длинны это вообще не гуд для производительности.

нужна отдельная связывающая таблица

и как вы джойнить будете храня друзей в текстовом поле?

При таком случае про поиск, и, например, друзья друзей, можно забыть. И, кстати, в чем проблема сделать индексы в таблице друзей, ну миллион записей, ну два, ну три... чего такого, радуйтесь, когда у вас будет такая активность на сайте.

С уважением, Морозов Андрей, разработчик проекта eTXT.ru (http://www.etxt.ru/?r=morozov), icq 55377667
vinnipuh
На сайте с 25.11.2010
Offline
4
#12

Ну, таблица связей — единственный верный вариант на мой взгляд.

Всегда постараюсь помочь советом :-) А ещё Вы можете заказать у меня разработку PHP-скриптов (/ru/forum/572825) :-)
S
На сайте с 14.04.2008
Offline
60
#13
_savit:
это самый неправильный способ хранения друзей! текстовые столбцы неограниченной длинны это вообще не гуд для производительности.
нужна отдельная связывающая таблица
и как вы джойнить будете храня друзей в текстовом поле?

Вы говорите с точки зрения классическое реляционной модели. К вашему сведению, при проектировании высоко нагруженных систем, работающих с БД, почти всегда сознательно закладываются те или иные отклонения от "классики".

В данном случае вполне может быть выгодно, иметь 3 текстовых поля - друзья, в друзьях, друзья друзей - а логическую целостность обеспечить на уровне программного кода.

Потому что в данном случае всегда нужно одновременно работать только с одной записью. А выбрать одну запись по айдишнику из таблицы с индексом + explode/implode + изменить два поля не трогая индекса будет быстрее, нежели вставить пяток затрагивающих индекс строк в таблицу с миллионом строк... Мне так представляется, по крайней мере.

O
На сайте с 07.02.2010
Offline
38
#14

как же быть

_savit
На сайте с 19.03.2006
Offline
135
#15
seraphim:
Вы говорите с точки зрения классическое реляционной модели. К вашему сведению, при проектировании высоко нагруженных систем, работающих с БД, почти всегда сознательно закладываются те или иные отклонения от "классики".

В данном случае вполне может быть выгодно, иметь 3 текстовых поля - друзья, в друзьях, друзья друзей - а логическую целостность обеспечить на уровне программного кода.

Потому что в данном случае всегда нужно одновременно работать только с одной записью. А выбрать одну запись по айдишнику из таблицы с индексом + explode/implode + изменить два поля не трогая индекса будет быстрее, нежели вставить пяток затрагивающих индекс строк в таблицу с миллионом строк... Мне так представляется, по крайней мере.

про сознательную денормализацию я в курсе, но это на мой взгляд не тот случай когда она нужна

В высоконагруженных проектах большие таблицы обычно разбивают на несколько. Например друзья юзеров с id меньше 1 миллиона хранятся в одной таблице, с id от 1 до 2 миллионов в другой. Критерий в миллион просто для примера, это совсем не большое количество данных.

https://vk-botovod.ru - комбайн ВКонтакте, мультимессенджер, эмулятор жизни аккаунтов
banshee(oleg)
На сайте с 12.08.2007
Offline
140
#16

Таблица

user_id

friend_id

+ индексы

единственный реальный вариант. и миллион записей это фигня.

S
На сайте с 14.04.2008
Offline
60
#17
okmonster:
как же быть

Для начала корректно описать задачу. Ответ на вопрос "как хранить данные" зависит от того, как вы собираетесь их использовать.

WT
На сайте с 08.10.2010
Offline
17
#18
banshee(oleg):
Таблица
user_id
friend_id
+ индексы
единственный реальный вариант. и миллион записей это фигня.

+1

А вариант (id, "список друзей через запятую") не самый удобны для дальнейшей обработки

За еду не работаю, зарабатываю здесь (http://www.sape.ru/r.amStvLXttk.php) Работа для ленивых - продвигай сайты автоматически (http://seopult.ru/ref.php?ref=1f6f897913cc593f)
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий