
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
28.04.2014, 00:27:27
|
|||
|---|---|---|---|
|
|||
Промежуточная таблица для связки "многие ко многим" |
|||
|
#18+
Здравствуйте, в БД новичок. Интересует такой вопрос: допустим есть таблица пользователей users. Необходимо реализовать возможность добавления пользователям в друзья других пользователей. Для этого мне посоветовали создать ещё одну таблицу relations с полями id1, id2, status. Например пользователь 111 (я) отправляю запрос на добавление в друзья пользователю 222. Тогда в таблице relations добавляется запись: id1 | id2 | status 111 222 0 Когда другой пользователь подтвердить запрос, добиватся ещё одна строка: id1 | id2 | status 111 222 1 222 111 1 Получится что таблица relations будет во много раз больше чем таблица users. Если в базе будет 1 млн пользователей, и у каждого из них по 100 друзей, то в таблице relations будет 200000000 записей. Будет ли это сильно тормозить БД? Или имеется более рациональный способ организовать систему добавления в друзья? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.04.2014, 00:38:28
|
|||
|---|---|---|---|
Промежуточная таблица для связки "многие ко многим" |
|||
|
#18+
murtukovЕсли в базе будет 1 млн пользователей, и у каждого из них по 100 друзей, то в таблице relations будет 200000000 записей. Будет ли это сильно тормозить БД? Или имеется более рациональный способ организовать систему добавления в друзья?Не нужно заниматься преждевременной оптимизацией. Вот когда будете приближаться к таким величинам, тогда и будет надо думать над этим. А пока обычной таблицы-связки вполне достаточно. Я, правда, не понял, зачем тут поле status, но это уже дело хозяйское... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.04.2014, 00:52:58
|
|||
|---|---|---|---|
|
|||
Промежуточная таблица для связки "многие ко многим" |
|||
|
#18+
miksoft, а если у меня уже сейчас 1 млн пользователей? Как быть? Лучше заранее все оптимизировать, чем потом исправлять. Даже если не так, ответьте пожалуйста на вопрос, если у вас есть ответ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.04.2014, 08:23:13
|
|||
|---|---|---|---|
Промежуточная таблица для связки "многие ко многим" |
|||
|
#18+
murtukovНапример пользователь 111 (я) отправляю запрос на добавление в друзья пользователю 222. Тогда в таблице relations добавляется запись: id1 | id2 | status 111 222 0 Когда другой пользователь подтвердить запрос, добиватся ещё одна строка: id1 | id2 | status 111 222 1 222 111 1А зачем добавлять ещё строку? Статус поменять на единицу и всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.04.2014, 08:55:16
|
|||
|---|---|---|---|
Промежуточная таблица для связки "многие ко многим" |
|||
|
#18+
murtukovЕсли в базе будет 1 млн пользователейНе будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.04.2014, 10:11:30
|
|||
|---|---|---|---|
Промежуточная таблица для связки "многие ко многим" |
|||
|
#18+
кстати даmurtukovа если у меня уже сейчас 1 млн пользователей?то вы можете позволить себе нанять специалиста для решения этой задачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.04.2014, 11:19:54
|
|||
|---|---|---|---|
Промежуточная таблица для связки "многие ко многим" |
|||
|
#18+
murtukovmiksoft, а если у меня уже сейчас 1 млн пользователей?То у вас уже наняты пара квалифицированных DBA и несколько программистов. murtukovКак быть?Спросить у них. Но, поскольку их у вас нет, то попытайтесь исходя из текущей нагрузки и посещаемости экстраполировать рост нагрузки в будущее. Но не слишком далекое. Например, на год. murtukovЛучше заранее все оптимизировать, чем потом исправлять.Нет, преждевременная оптимизация - это зло. murtukovДаже если не так, ответьте пожалуйста на вопрос, если у вас есть ответ.Например, существуют кластера и шардинг. Существует разделение северов по ролям (веб-фронтенд, веб-бэкенд, БД и т.п.) В любом случае, когда у вас реально будет миллион пользователей, то одна сабжевая табличка будет лишь одной, далеко не самой острой, проблемой из множества. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.04.2014, 11:45:03
|
|||
|---|---|---|---|
Промежуточная таблица для связки "многие ко многим" |
|||
|
#18+
murtukov, Будет ли это сильно тормозить БД? Нет. Или имеется более рациональный способ организовать систему добавления в друзья? Нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.07.2015, 13:15:26
|
|||
|---|---|---|---|
|
|||
Промежуточная таблица для связки "многие ко многим" |
|||
|
#18+
Один из вариантов это оптимизировать, разбивка на таблицы по каждому пользователю со ссылками на таблицы друзей в этих таблицах id1|id2|table|staus 111|222|222_friends|1 id1|id2|table|status 222|111|111_friends|0 Получается если у обоих статус = 1 все ок - друзья, в противном случае тот у кого 1 подписчик или отправлен запрос в друзья ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=47&mobile=1&tid=1832920]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 275ms |
| total: | 401ms |

| 0 / 0 |
