|
|
|
Связь многие ко многим. Способ организации.
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, уважаемые знатоки. Предположим: есть сайт с базой фильмов и базой пользователей, которые могут ставить оценку каждому фильму. Очевидно, что в БД придется создать таблицы user , film и user_film для организации связи многие ко многим . Вот тут-то и возникает мой вопрос: не будет ли проблемой то, что промежуточная таблица (user_film) будет расти с "огромной скоростью"? Ведь, если представим, что в таблице user 10 000 пользователей, а в таблице film 10 000 фильмов и каждый пользователь поставит оценку каждому фильму, то промежуточная база user_film будет иметь 100 000 000 записей. А дальше - больше. Не будет ли это сказываться на производительности? И существуют ли альтернативные способы организовать связь многие ко многим . Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2014, 00:00:54 |
|
||
|
Связь многие ко многим. Способ организации.
|
|||
|---|---|---|---|
|
#18+
murtukov, На одном известном сайте о кино (можно даже сказать ведущем сайте) была такая акция "100 000 000-я оценка". В реальном времени отслеживали, счетчик там был, циферки бежали, Apple iPad Mini разыграли и т. д. Было это в конце 2013-го года. Сайт на тот момент уже существовал 10 лет. Там к тому моменту 3 млн. пользователей было зарегистрировано. Это так - информация для размышлений на тему "когда у тебя в базе будет 100 000 000 оценок" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2014, 01:02:53 |
|
||
|
Связь многие ко многим. Способ организации.
|
|||
|---|---|---|---|
|
#18+
Ну вот допустим такой день настал. Что делают в таких ситуациях? Позволить таблице разрастаться дальше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2014, 01:20:05 |
|
||
|
Связь многие ко многим. Способ организации.
|
|||
|---|---|---|---|
|
#18+
а почему нет? она весить сколько будет? метр-два? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2014, 01:29:26 |
|
||
|
Связь многие ко многим. Способ организации.
|
|||
|---|---|---|---|
|
#18+
Я не знаю, почему нет, в том то и дело. У меня нет опыта в этом. Так, значит, дело в размере файла, а не в количестве записей? Просто, я тут прикинул, что при каждой загрузке страницы с фильмом из таблицы user_film будет считываться большое количество записей. Если фильм оценило 1000 человек, то при каждой загрузке страницы с фильмом будет считываться 1000 записей. Это нормально? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2014, 01:38:51 |
|
||
|
Связь многие ко многим. Способ организации.
|
|||
|---|---|---|---|
|
#18+
murtukovЯ не знаю, почему нет, в том то и дело. У меня нет опыта в этом. Так, значит, дело в размере файла, а не в количестве записей? Просто, я тут прикинул, что при каждой загрузке страницы с фильмом из таблицы user_film будет считываться большое количество записей. Если фильм оценило 1000 человек, то при каждой загрузке страницы с фильмом будет считываться 1000 записей. Это нормально? Оценку следует выдавать из таблицы user_film в суммарном виде, так как нормальный человек не сможет переварить ваших тысячу оценок, а вот если скажем напротив филима будет указано что его круто заценило 700 человек, то тут уже проще ориетнироваться какую оценку этому филиму поставить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2014, 09:40:15 |
|
||
|
Связь многие ко многим. Способ организации.
|
|||
|---|---|---|---|
|
#18+
murtukovВот тут-то и возникает мой вопрос: не будет ли проблемой то, что промежуточная таблица (user_film) будет расти с "огромной скоростью"? Нет, не будет. murtukov Ведь, если представим, что в таблице user 10 000 пользователей, а в таблице film 10 000 фильмов и каждый пользователь поставит оценку каждому фильму, то промежуточная база user_film будет иметь 100 000 000 записей. А дальше - больше. Не будет ли это сказываться на производительности? Ключевым является то, что НЕ КАЖДЫЙ пользователь будет давать оценку, и НЕ КАЖДОМУ фильму. Также ключевым является создание индексов. Индексы решают проблему производительности при доступе к таким большим наборам. murtukovИ существуют ли альтернативные способы организовать связь многие ко многим . Нет. Это наверное самый главный довод. Довод номер 0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2014, 10:38:00 |
|
||
|
Связь многие ко многим. Способ организации.
|
|||
|---|---|---|---|
|
#18+
murtukovНу вот допустим такой день настал. Что делают в таких ситуациях? Позволить таблице разрастаться дальше? Ну, если уже совсем будет невмогогу -- просто удали пару миллионов старых оценок. Я тебя уверяю, никто не заметит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2014, 10:39:10 |
|
||
|
Связь многие ко многим. Способ организации.
|
|||
|---|---|---|---|
|
#18+
murtukovЯ не знаю, почему нет, в том то и дело. У меня нет опыта в этом. Так, значит, дело в размере файла, а не в количестве записей? Дело наоборот не в размере файла, а в количестве записей. Размер файла будет влиять лишь на твою способность это приложение держать, т.е. будет оно работать или нет (влезет на диск или нет). Кол-во записей влияет на то, как быстро это будет происходит. Индексы дают логарифмическую сложность поиска от кол-ва записей. murtukovПросто, я тут прикинул, что при каждой загрузке страницы с фильмом из таблицы user_film будет считываться большое количество записей. Если фильм оценило 1000 человек, то при каждой загрузке страницы с фильмом будет считываться 1000 записей. Это нормально? Это не нормально. Но не по соображениям производительности. Просто напросто 1000 оценок никому не нужны. даже 100 не нужны. Нужны 2-5 как максимум. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2014, 10:42:31 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38840146&tid=1833773]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
122ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 400ms |

| 0 / 0 |
