Моделирование данных с помощью хранилища данных Google App Engine - PullRequest
1 голос
/ 07 октября 2010

В настоящее время я создаю веб-приложение на Google App Engine на Python для сбора данных о скачках в форме. Базовая структура данных: курс имеет много встреч, много гонок, много лошадей, один жокей и один тренер. Пока у меня есть следующие модели (для краткости уменьшено количество полей).

class Course(db.Model):
  course_number = db.IntegerProperty()     # course id (third party)
  course_description = db.StringProperty() # course name

class Meeting(db.Model):
  course = db.ReferenceProperty(Course)    # reference to course
  meeting_number = db.IntegerProperty()    # lifetime meeting number for course
  meeting_date = db.DateProperty()         # meeting date

class Race(db.Model):
  meeting = db.ReferenceProperty(Meeting)  # reference to meeting
  race_number = db.IntegerProperty()       # eg 1 for 1st race of meeting
  race_name = db.StringProperty()          # race name
  time_of_race = db.TimeProperty()         # race time

У меня возникают проблемы при разработке способов хранения данных о лошадях, дрессировщиках, жокеях в хранилище данных.

Моя заявка будет собирать данные, скажем, за последние 2 года, для этого я буду сохранять соответствующую информацию о результатах для Horse, Trainer, Jockey. Информация о конкретном результате лошадей одинакова для Тренера и Жокея в тот момент. Однако со временем у Лошади может быть другой тренер и другой жокей.

Моя основная боль в мозгу наступает, когда я понимаю, что в анализе мне может понадобиться посмотреть результат за последние 10 гонок для Лошади, Жокея, Тренера. Результаты, которые не могут быть сохранены либо потому, что результаты получены за пределами гонок в Великобритании (данные по-прежнему доступны), либо до даты, когда я начал заполнять гонки.

Может кто-нибудь пролить свет на то, как оптимизировать хранение результатов Horse, Jockey, Trainer, чтобы я мог приспособиться к этому?

Источник данных: http://form.horseracing.betfair.com/timeform Все необходимые данные могут быть легко доступны с помощью запросов JSON.

1 Ответ

0 голосов
/ 08 октября 2010

Вы на правильном пути, используя модели HorseResult, TrainerResult и JockeyResult.Не забывайте, что в хранилище данных нет группирующих или агрегатных функций, поэтому при загрузке данных может потребоваться предварительное вычисление любых агрегатов или представляющей интерес статистики.

Возможно, вам также понадобится тип статистикимодели для отслеживания производительности лошади, жокея и тренера с течением времени и их комбинации.Что-то вроде HorseMonth, в котором можно было бы отследить, сколько рас было задействовано лошадью и как она распределялась по месяцам.

Я бы также рассмотрел вопрос о том, как составлять комбинации лошади и жокея или лошади и тренера с течением времени.,К сожалению, я не знаю достаточно о скачках, чтобы дать вам конкретные предложения, для которых комбинации имеют смысл.

Поскольку это звучит так, как будто это инструмент в основном для вашего собственного использования, вы можете заглянуть в mapper API.Это может иметь большое значение при изучении данных.

Если в ваши данные не включена гонка, кроме расширения диапазона сбора урожая, вы не сможете сделать многое.Возможно, вы просто захотите вернуть результаты, которые у вас есть, и, возможно, что-то, указывающее на то, что в диапазоне дат недостаточно данных?

...