在给定一些过滤器的情况下找出实体的索引?

时间:2010-07-08 22:08:04

标签: google-app-engine

是否有可能找出实体的索引?例如,我的用户正在创建数千个Foos。我可以使用它的键找到任意Foo实例,但我不知道它的索引与所有其他Foos相比。我想弄清楚“这是Foo 12中的20,000”。我只有一个Foos订单。有可能吗?

由于

1 个答案:

答案 0 :(得分:2)

不是一件容易的事。

如果您知道实体的密钥,则可以使用排序顺序执行仅密钥查询,并迭代(并计算)返回的密钥,直到找到您要查找的密钥。您可以使用查询游标和任务链将作业拆分为合理的块。

如果索引只是创建顺序,则可以通过存储单个计数器实体来进行反规范化。每次要创建新的Foo时,事务性地锁定计数器对象,递增它,然后将新的计数器值写回计数器和新的Foo。这确实可以防止您一次创建多个Foo实体,但如果您不需要立即向用户返回ID,则可以将实体创建推迟到任务。