#database
#База данных
Вопрос:
Проект, который я разрабатываю, предназначен для компании, в которой я работаю, поэтому мне пришлось подумать о подобном сценарии, который потенциально может иметь примерно ту же проблему (если это вообще проблема).
Хорошо, давайте придумаем новый вид спорта. «Проверка согласованности». Одновременно могут играть до 12 человек. Таймер запускается и продолжается в течение 2 часов. Перед игроками есть цифровая панель, они должны нажимать на нее через 10 секунд после запуска таймера, а затем каждые десять секунд, пока таймер не достигнет отметки в два часа.
Приложение, которое мне нужно разработать здесь, — это записывать статистику этого довольно скучного вида спорта. Каждое нажатие должно быть сохранено и доступно для просмотра через какой-либо интерфейс. Вот как я думал о проектировании таблиц базы данных.
PLAYER
- PlayerID
- Name
- ...
GAME
- GameId
- PlayDate
- ...
GAME-PLAYER
- GameId
- PlayerId
TAPS
- GameId
- PlayerId
- TapTime
- ...
Итак, вы, вероятно, уже разобрались с проблемой.
12 игроков x 800 нажатий за игру = 10000 строк в таблице «нажатий» за игру.
Если этот спорт получит популярность, база данных taps станет огромной. Есть ли какой-нибудь хитрый трюк с дизайном БД, который я мог бы использовать, чтобы это не стало проблемой?
Комментарии:
1. Одно нажатие, одна строка — все в порядке, а 10 000 строк — это не так уж много! Базы данных предназначены для хранения гораздо большего количества данных. В зависимости от ваших запросов может быть разумно хранить все 12 более или менее одновременных нажатий подряд (если вы всегда обращаетесь к ним вместе).
2. Если вы считаете, что ваша база данных будет очень большой, наймите специалиста по проектированию и обслуживанию больших баз данных. Существует множество решений, которые могут повлиять на работоспособность системы баз данных при наличии миллиардов или более записей. Базы данных сложно реорганизовать, вам нужен эксперт с самого начала, а не через 5 лет, когда ничего не работает хорошо.
Ответ №1:
Вы можете разделить свои данные на основе игр (скажем, game id). Вы можете создать таблицу Taps во время выполнения для новой игры и назвать ее gameid_taps .
Таким образом, у вас не будет огромной большой таблицы, и ваши запросы будут работать намного лучше.
Комментарии:
1. Рекомендуем сегментирование (или разбиение), а не часть создания новой таблицы.