@AlekseyNechaev

Как лучше спроектировать базу данных?

Здравствуйте. Подскажите, как лучше спроектировать базу данных. Есть таблица 'Пользователи' и таблица 'Предметы пользователей'. Предметов примерно 19 видов. Т.е. у пользователя может быть 19 предметов. Над этими предметами пользователь часто совершает действия (покупает, продает, выигрывает, повышает уровень предмета...). Т.е. постоянно надо изменять поле 'Количество предмета' в таблице 'Предметы пользователя'. Мне кажется это будет проходить медленно. Например 1млн пользователей, получается 19млн предметов. Постоянно, обновлять ее, мне кажется не вариант. Как лучше спроектировать? Использовать шардинг? Или может хранить как-то списком?
  • Вопрос задан
  • 3040 просмотров
Пригласить эксперта
Ответы на вопрос 3
Cyapa
@Cyapa
Я думаю, будет хорош горизонтальный шардинг таблицы "Предметы пользователей" с критерием шардинга по ID пользователя.
Хотя, на мой взгляд, 19кк записей это маловато для шардинга.
Ответ написан
Комментировать
@svd71_1
помоему нужно проектировать не базу, а логику работы. У вас одновременно будет выполняться "обновление" всех 1мил. пользователей? Для нормального сервера базы данных 1мил. записей это мелочь, обработает достаточно быстро. Тем более выполнит агрегатные операции, как подсчет количества записей вообще на лету. Поэтому самый удачный будет способ обычного листа.

@Cyapa вам хороший совет дал: используйте суррогатные ключи. Скорость работы на них значительная, запросы по размерам уменьшаются, а логика работы становится ясной и понятной.
Ответ написан
Комментировать
afiskon
@afiskon
На тему проектирования схемы БД тут подробно написано eax.me/database-design
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы