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

start [/forum/topic.php?fid=47&tid=1832920]: |
0ms |
get settings: |
7ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
64ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 333ms |

| 0 / 0 |
