举一个例子的种请求,我可想不出还有什么要做到:

该应用程序是 保龄球/stat跟踪器.当有人进入他们的成绩中的先进模式,一些统计数据计算的,以及它们的得分。数据是建模为:

游戏的成员,如姓名、用户参考的保龄球馆,这是你 框架pinfalls对每个球,布尔名单,其销被撞倒在每个球信息球的路径(立场的目标,在那里,它实际上去),分为这一框架,等等 GameStats-商店计算统计数字的整个游戏,是合并与其他游戏的统计根据需要为统计显示各组的游戏。

一个这样的例子的信息在实践中可以找到 在这里,.

当游戏是完整的,并框架是最新的,我需要更新的游戏,该框架,每一个框架之后,可能还有一些之前(这是为了确保他们的分数都是正确的),并将统计数据。这个动作总是标志的CPU监测。甚至如果这游戏是不完整和统计数据不需要计算、分数和这类需要更新,以显示出实时的进展向用户,所以这些也得到标记。CPU的平均时间为这一处理程序是超过7000mcycles,它甚至没有显示图。大多数人碗3至4个游戏每个系列-如果他们进入他们的成绩时,在通道,这是大约1的要求,每2至4分钟,但是,如果他们把它写下来的所有,并将其输入后,有30至40这些要求正在进行中。


作为请求,该数据模型的重要类别:

class Stats(db.Model):
  version = db.IntegerProperty(default=1)
  first_balls=db.IntegerProperty(default=0)
  pocket_tracked=db.IntegerProperty(default=0)
  pocket=db.IntegerProperty(default=0)
  strike=db.IntegerProperty(default=0)
  carry=db.IntegerProperty(default=0)
  double=db.IntegerProperty(default=0)
  double_tries=db.IntegerProperty(default=0)
  target_hit=db.IntegerProperty(default=0)
  target_missed_left=db.IntegerProperty(default=0)
  target_missed_right=db.IntegerProperty(default=0)
  target_missed=db.FloatProperty(default=0.0)
  first_count=db.IntegerProperty(default=0)
  first_count_miss=db.IntegerProperty(default=0)

  second_balls=db.IntegerProperty(default=0)
  spare=db.IntegerProperty(default=0)
  single=db.IntegerProperty(default=0)
  single_made=db.IntegerProperty(default=0)
  multi=db.IntegerProperty(default=0)
  multi_made=db.IntegerProperty(default=0)
  split=db.IntegerProperty(default=0)
  split_made=db.IntegerProperty(default=0)

class Game(db.Model):
  version = db.IntegerProperty(default=3)
  user = db.UserProperty(required=True)
  series = db.ReferenceProperty(Series)
  score = db.IntegerProperty()
  game_number = db.IntegerProperty()
  pair = db.StringProperty()
  notes = db.TextProperty()
  simple_entry_mode = db.BooleanProperty(default=False)
  stats = db.ReferenceProperty(Stats)
  complete = db.BooleanProperty(default=False)

class Frame(db.Model):
  version = db.IntegerProperty(default=1)
  user = db.UserProperty()
  game = db.ReferenceProperty(Game, required=True)
  frame_number = db.IntegerProperty(required=True)
  first_count = db.IntegerProperty(required=True)
  second_count = db.IntegerProperty()
  total_count = db.IntegerProperty()
  score = db.IntegerProperty()
  ball = db.ReferenceProperty(Ball)
  stance = db.FloatProperty()
  target = db.FloatProperty()
  actual = db.FloatProperty()
  slide = db.FloatProperty()
  breakpoint = db.FloatProperty()
  pocket = db.BooleanProperty()
  pocket_type = db.StringProperty()
  notes = db.TextProperty()
  first_pinfall = db.ListProperty(bool)
  second_pinfall = db.ListProperty(bool)
  split = db.BooleanProperty(default=False)
有帮助吗?

解决方案

一些建议:

  • 你可以储存的统计框架的一部分相同的实体,如游戏,而不是具有一个独立的实体的每一个,通过保存它作为一个列表中的bitfields(存储在整数)的脚站在每个半框架,例如。让我知道如果你想要的更多细节如何,这将是实现的。
  • 如果做不到这一点,可以计算出一些更加相互关联的统计获取。例如,计算得分-迄今为止在应该是简单的如果你整个游戏装在一次,这意味着你可以避免有更新多个框架,在每一请求。
  • 我们可以有更多的帮助如果你告诉我们你的数据模型。:)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top