Я новичок в RavenDB, и я все еще пытаюсь найти оптимальный способ моделирования данных для текущего сценария. Вот как выглядят данные.Как смоделировать статистику футбольных матчей в RavenDB
Game
- Teams
- Team 1
- list of players
- Team 2
- list of players
- Events
- Event 1
- type: Pass
- teamId
- PlayerId
- Event 2
- type: Goal
- teamId
- PlayerId
В начале каждой игры мы получаем общую информацию для игры (например, команды и т.д.) Места и затем через каждые несколько минут мы получаем обновленный список событий. Кроме того, мне нужно иметь возможность запрашивать данные для определенного игрока, играющего в игру (например, сколько проходит у игрока)
Хранить ли это как отдельный документ? Разделение событий на отдельный документ, например. GameEvents? Есть ли третий сценарий?
Если вы идете с помощью этого метода, для * большинства * вашей статистики вам будет лучше загружать весь документ (который представляет 1 игру), обрабатывая его в памяти, а затем записывая обратно в документ. Для статистики, которая находится в нескольких играх, вы можете посмотреть в Map/Reduce –
Мэтт, который звучит как хорошая идея. Чтобы быть ясным, если я хочу рассчитать проходы для игрока, я бы загрузил игровой документ, выполнил вычисления и сохранил его снова. – marto
@Matro, да, это идея, хотя для этого много накладных расходов, поэтому Patching может помочь вам. http://ravendb.net/docs/client-api/partial-document-updates –