我试图使用AppEngine实现一个大型(ish)数据集的汇总视图。如何汇总Google AppEngine中的数据
我的模型看起来像:
def TxRecord(db.Model):
expense_type = db.StringProperty()
amount = db.IntegerProperty()
def ExpenseType(db.Model):
name = db.StringProperty()
total = db.IntegerProperty()
我的数据存储包含的TxRecord
100K情况下,我想通过expense_type
总结这些。
在SQL它会是这样的:
select expense_type as name, sum(amount) as total
from TxRecord
group by expense_type
什么我目前做的是使用Python MapReduce framework遍历所有TxRecords
的使用下面的映射:
def generate_expense_type(rec):
expense_type = type.get_or_insert(name, name = rec.expense_type)
expense_type.total += rec.amount
yield op.db.Put(expense_type)
这似乎工作,但我觉得我必须使用1的shard_count
来运行它,以确保总数不会被写入并发写入。
有没有一种策略可以用来使用AppEngine来解决这个问题或者它是什么?
我目前正在尝试使用内存缓存条目类似的东西。我无法与op.counters一起工作的是如何获得回调处理程序中的计数器......是否有时间处理另一个问题? – 2011-03-27 11:29:22