Мы разрабатываем схему работы системы. Проблема в том, что у них есть набор элементов с вычисленным значением для каждого элемента. Скажем, например, вам нравятся игроки в nba, и есть определенный набор игроков, о которых вы показали предпочтения.Кэширование вычисленных результатов для каждого пользователя - имеет ли таблица, предназначенную для каждого пользователя, смысл?
Примерами могут служить:
- количество игр
- подборам
- забил
- помогает
- -й минуте за игру
- игроков, что другие ваши друзья, как
- вероятность торгуются - вам часто нужны игроки, которые e будет торговаться
В nba около 500 игроков. С точки зрения производительности запрос является непомерно высоким - бросая предпочтения других людей и т. Д. Мы думали о альтернативных подходах. Один из подходов - это NoSQL, где каждый пользователь получает документ каждого игрока. Честно говоря, это похоже на слишком много unkowns, поскольку у меня есть нулевой опыт. Другой подход заключается в том, что каждый человек в системе получит таблицу, посвященную им. Возможно, выпишите определение таблицы через cron на ночной основе, и когда пользователь войдет в систему, выполните инструкцию create table, а затем запросите выделенный запрос. Это звучит очень уродливо для меня (хотя это возможно). У нас также может быть одна таблица, в которой каждый пользователь имеет строку для каждого игрока. Я бы предпочел не предполагать, что вся система отключена от объединения. Похоже, что он запрашивает офф-лайн, и мы можем измерить 1000 игроков против этих разных параметров.
Есть ли другие идеи, которые мне не хватает? Я не хочу ничего слишком эзотерического - желательно просто MySQL и Python. Был бы использовать InnoDB и не очень беспокоиться о разделении таблиц на каждую базу данных на главную проблему.
Были бы оценены любые другие идеи или опыт реального слова? Я уверен, что это было решено много раз.
ТНХ
Это слишком расплывчато. Если вы избегаете объединения и индексации, вы можете получить высокую производительность даже из большой базы данных MySQL. Если ваша служба является хитом, и вам нужно тонны производительности, вы можете сгруппировать MySQL, так что это не тупик. Существует множество стратегий ускорения запросов. – joel3000
Я согласен, что это расплывчато; кластеризация только для чтения имеет смысл, но немного ищет альтернативы, прежде чем сделать этот шаг. Предыдущий DBA полностью сбросил мяч на установку кластера, и с тех пор я не решаюсь использовать его. – timpone