У нас есть несколько игровых серверов, которые генерируют события на основе действий игрока.Мы хотим сохранить некоторые из этих событий для построения статистики;как для удовольствия игрока, так и для анализа поведения.
Мы выбрали MongoDB по ряду причин, в основном из-за производительности.Однако мы немного боремся с дизайном схемы.Слишком много лет с базами данных RDBMS имеет свои потери.
В любом случае генерируемые события выглядят примерно так: игрок1 убил игрока2 с оружием1.Улавливая эти события, я также знаю идентификатор сервера, карту и т. Д. Я, очевидно, знаю, сколько времени, и я могу смоделировать отношения игроков, чтобы создать группы / команды.
Но как бы этопосмотреть модель документа?
Нужно ли просто поместить все события в коллекцию, а затем добавить свойства, которые я хочу использовать в наших поисках, в качестве полей?Или создайте иерархию с документами, чтобы получить выигрыш в производительности (?).Я полагаю, что если поместить все это в "строку", это упростит запрос, но на самом деле не все так оптимизировано.Будет множество строк, и даже если MongoDB работает быстро, я не уверен, что он справится с нагрузкой.Кроме того, производительность в базе данных RDBMS должна быть примерно одинаковой, если я просто выровняю структуру и помещу все для поиска в строку.Плюс накладные расходы на размер хранения одних и тех же данных снова и снова (например, пользователи).