Как смоделировать статистику футбольных игр в RavenDB - PullRequest
0 голосов
/ 27 февраля 2012

Я новичок в 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? Есть ли третий сценарий?

Ответы [ 3 ]

3 голосов
/ 27 февраля 2012

Я бы не беспокоился о том, как это будет храниться в RavenDB.Это красота баз данных документов;не думай об отношениях.Создайте модель вашего домена объектно-ориентированным способом, которым она должна быть создана (команда будет иметь свойство List и т. Д.), А затем просто сохраните сущности по мере необходимости.

У меня естьнамеревался написать в блоге о том, как я сохранял свою модель домена в чистоте при использовании RavenDB.Мне нужно опубликовать это ...

** РЕДАКТИРОВАТЬ ** Я наконец опубликовал этот блог: http://bit.ly/xUsYJK. Это показывает, как Presto сохранил несколько чистую модель домена при использовании RavenDB.

Кстати, у Даниэля Ланга есть хороший блог на эту тему:

http://daniellang.net/how-to-handle-relations-in-ravendb/

Я использую подход «Включить », потому что мне нравится сохранять своидоменные сущности ссылаются друг на друга так, как я считаю, подходящим образом.

У Даниэля также есть раздел под названием «Денормализация ваших ссылок».Некоторые люди предпочитают этот метод.

1 голос
/ 27 февраля 2012

Думая о том, сколько таких событий может произойти во время игры, я считаю, что вы определенно хотите, чтобы они были отдельными документами. Таким образом, вам не нужно загружать и обновлять игровой документ при каждом наступающем событии, так как это также будет довольно дорого, если документы станут очень большими.

Чтобы получить статистику по всем событиям в игре, я бы предпочел иметь некоторые индексы, которые собирают соответствующие данные.

1 голос
/ 27 февраля 2012

Храните его как отдельный объект - структура, которую вы определили, великолепна.Затем просто определите индексы для различных типов запросов, которые вы будете выполнять.Отсутствие необходимости разбивать вещи на таблицы со связями - это то, что делает такие БД документов, как Raven, великолепными - отлично подходит для сценариев, таких как описываемые вами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...