跟踪Appengine数据存储区中的“尾随”每日统计信息

时间:2012-08-08 00:59:55

标签: google-app-engine

我正在尝试从某个Appengine Datastore字段显示7天的尾随统计信息。如果我的模型有一个整数字段“Foo”,我希望能够在过去7天内通过Foo的增加找到前N个模型。

我认为最好通过例子来解释。假设我们有两个带有Foo字段的实体,我们每天午夜都会对Foo的值进行采样:

Day       01 02 03 04 05 06 07 08 09 10 11 12 13
User1.Foo  1  2  3  4  5  6  7  8  9  8  7  6  5
User2.Foo 50 55 50 45 50 55 50 45 50 55 50 45 50

我希望能够构建(每天)7天的增量:

Day       01 02 03 04 05 06 07 08 09 10 11 12 13
User1.FooDelta7d            6  6  6  4  2  0 -2
User2.FooDelta7d            0 -10 0  10 0 -10  0

并且能够查询用户ORDER BY FooDelta7d。

我可以通过在每个用户上保留7个额外的条目来解决这个问题,比如Foo1 Foo2 Foo3 ... Foo7并采用模7的日期来决定在午夜写入哪个条目:

Day       01 02 03 04 05 06 07 08 09 10 11 12 13
User1.Foo  1  2  3  4  5  6  7  8  9  8  7  6  5
User1.Foo1 1  1  1  1  1  1  1  8  8  8  8  8  8
User1.Foo2    2  2  2  2  2  2  2  9  9  9  9  9
User1.Foo3       3  3  3  3  3  3  3  8  8  8  8
User1.Foo4          4  4  4  4  4  4  4  7  7  7
User1.Foo5             5  5  5  5  5  5  5  6  6
User1.Foo6                6  6  6  6  6  6  6  5
User1.Foo7                   7  7  7  7  7  7  7

所以在(比方说)第10天,增量是User1.Foo3 - User1.Foo4 = 8 - 4 = 4.这有效但对我来说似乎真的很糟糕,特别是因为它意味着每个字段需要跟踪8倍存储量

有没有人有更好的主意?谢谢!

1 个答案:

答案 0 :(得分:0)

由于您需要每日滚动7天三角形,因此您需要保留过去七天的数据。所以看来你正在做的事情是正确的。

要降低“粗俗度”,您可能希望将Foo1..Foo7设为list property