1

我目前正在用 Python 在 Google App Engine 上构建一个 Web 应用程序来收集表单的赛马数据。基本的数据结构是 Course has many Meetings 有很多 Races 有很多 Horses 有一个 Jockey 有一个 Trainer。到目前为止,我已经获得了以下模型(为简洁起见,减少了字段数量)。

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 年的数据,为此我将保存马匹、驯马师、骑师的相关结果信息。特定马匹成绩的信息对于当时的练马师和骑师来说是相同的。然而,随着时间的推移,一匹马可以有不同的教练和骑师。

当我意识到在分析中我可能需要查看最近 10 场马匹、骑师、驯马师的比赛结果时,我的主要脑痛就来了。结果可能无法存储,因为结果发生在英国赛车之外(数据仍然可用)或发生在我开始完整的比赛存储日期之前。

任何人都可以阐明如何优化马匹、骑师、教练结果的存储,以便我可以适应这个吗?

数据来源:http: //form.horseracing.betfair.com/timeform 所有需要的数据都可以通过 JSON 请求轻松访问。

4

1 回答 1

0

使用 HorseResult、TrainerResult 和 JockeyResult 模型,您走在了正确的轨道上。不要忘记,数据存储没有分组或聚合函数,因此您可能需要在加载数据时预先计算任何感兴趣的聚合或统计信息。

也许您还希望拥有统计类型的模型来跟踪马匹、骑师和驯马师随时间的表现以及它们的组合。像 HorseMonth 之类的东西,它可能会跟踪这匹马参加了多少场比赛以及它按月排列的位置。

我还会考虑保留有关马和骑师或马和驯马师的组合如何随时间推移的详细信息。不幸的是,我对赛马的了解不够,无法为您提供哪些组合有意义的具体建议。

由于这听起来像是一个主要供您自己使用的工具,您可能会查看mapper API。当您探索数据时,它可能具有很大的价值。

如果您的数据中不包含比赛,那么除了扩大收获范围之外,您可能无能为力。您可能只想返回您拥有的结果,并且可能表明日期范围内没有足够的数据?

于 2010-10-08T04:03:26.343 回答