对于GAE数据存储区中的所有数据,我有一个用于跟踪计数器/记录总数的模型(因为我们不能使用传统的SUM查询)。每当我插入/删除记录时,我想知道增加这些全局计数值的最有效方法。这就是我目前正在做的事情:
counter = DBCounter.all().fetch(1)
dbc = DBCounter(totalTopics=counter[0].totalTopics+1)
dbc.put()
但这对我来说似乎很草率。有关更好的方法的任何想法吗?
答案 0 :(得分:5)
您的方法存在一些问题:
以下是一些替代方法(从最不准确[和最快]到最准确[和最慢]):
答案 1 :(得分:4)
如果你需要在计算时保持可扩展性,你应该查看Joe Gregorio关于sharding counters和DocSavage implementation这个想法的文章。
AppEngineFan的优秀博客也提供有关可扩展非分片计数器的信息,请参阅使用任务队列的this one并指向上一篇关于使用cron作业的文章。