Проектирование базы данных без огромной таблицы

#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. Рекомендуем сегментирование (или разбиение), а не часть создания новой таблицы.