LINUX.ORG.RU

Поиск друзей.

 , ,


0

3

Для каждого пользователя создается своя база, в которой есть friends табличка с одним столбцом user.

user
1
2
3

В этом столбце хранятся ключи на пользователей, которые хранятся в основной таблице.

id | username | ...
1      Tom
2      Max
3      Kate
4      Sara
5       I

Я пользователь с id 5 и мои друзья Tom, Max, Kate. Теперь я хочу найти среди списка друзей Катю, то есть мне нужно делать join.

Таблиц друзей много и держать их все в одной базе я считаю не хорошо. Поэтому я разбил их на базы user_1, user_2, user_n. Теперь я не могу сделать join на таблицу с другой базы и нужно делать 2 запроса - что не хорошо. Как избежать?

Я решил отказаться создать таблицу с друзьями всех пользователь формата:

my_id | friend_id
5          1
5          2 
5          3
2          4
Так как число пользователей и друзей неограничено - таблица начинает быстро расти, да и основная таблица быстро растет.

В качестве решения вижу такое: перекопировать имена с основой таблицы в таблицу друзей, но если пользователь меняет имя, то начинается хаос. Или все таки 2 запроса в разные базы?

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

А с разными базами не начинает?

zz ★★★★ ()
Ответ на: комментарий от henewuge

Ладно, это похоже зашло слишком далеко. Чувак, тебя на%±№ли.

hateyoufeel ★★★★★ ()
Ответ на: комментарий от zz

я не хочу видеть базу в которой несколько тысяч таблиц friens_(id)

henewuge ()
Ответ на: комментарий от hateyoufeel

«ты будешь тащить это клеймо позора до конца своих дней.»

Лучше для каждого пользователя своя база.

henewuge ()
Ответ на: комментарий от hateyoufeel

Например, если кроме друзей я захочу хранить еще кое-что для каждого пользователя. Если одна база, то или много таблиц friends_(id), something_(id) (кто-то такое видел?) или же один очень большие таблицы, что так же не хорошо.

henewuge ()

Да ты извращенец. Где тег «костыли»?

crutch_master ★★★★★ ()
Ответ на: комментарий от henewuge

Если одна база, то или много таблиц friends_(id), something_(id) (кто-то такое видел?) или же один очень большие таблицы, что так же не хорошо.

Прими разупорин в виде https://ru.wikipedia.org/wiki/Реляционная_модель_данных и https://ru.wikipedia.org/wiki/Нормальная_форма

nanonymous ()

Это зашло слишком далеко. Я уже не понимаю, кто здесь тролль и есть ли тут тролли вообще.

heilkitty ★★ ()
Ответ на: комментарий от henewuge

Я прозреваю, следующим шагом будет по контейнеру с DBMS на пользователя. Потом по физическому серверу на пользователя. Потом по кластеру на пользователя. Потом по датацентру на пользователя. Потом...

hateyoufeel ★★★★★ ()
Последнее исправление: hateyoufeel (всего исправлений: 1)

каждого пользователя создается своя база

Это такая шутка белых, которую мы, нигеры, не понимаем?

winlook38 ★★ ()

Вот что NoSQL и JSON с молодежью делает. hint: таблица в базе и ДОЛЖНА расти и содержать миллиарды записей. Для этого она и создаётся.

Shadow ★★★★★ ()
Последнее исправление: Shadow (всего исправлений: 1)

Почитай про реляционную модель и нормальную форму для начала.

peregrine ★★★★★ ()
Ответ на: комментарий от peregrine

в некоторых случаях отказываются от нормализации с целью скорости

henewuge ()

всё_очен_плохо.jpg

плакал твой курсач :(

melkor217 ★★★★★ ()
Ответ на: комментарий от henewuge

Отказываются, но делают это с умом, а не как ты. Тебе бы сначала привести все в нормальную форму (на самом деле на этом тебе можно и закончить); увидеть (даже в расчетах можно это увидеть), что оно будет тупить; денормализовать (денормализуешь в РСУБД, перейдешь на монгу или будешь юзать монгу на кеширующий фронтенд к РСУБД - не важно, главное не как в ОП).

winlook38 ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.