2013-08-16 47 views
1

比方说,我有几个实体存储在AppEngine DataStore中,它们都具有索引数字属性,我需要查找当前最大的值。查找AppEngine中索引属性的最大值

我可以简单地做排序此属性由大到小排序顺序和1.然后,返回的结果将包含我的答案是有限的投影查询。

这是最好的方法还是有更高效的方法来获得这个值?

(一致性不是太多在这种情况下担心。如果我错过了正在同时犯了几个值,我没有太在意。所以,没有必要在这里交易。)

回答

2

由于GAE数据存储在SQL数据库上没有与MAX等效,所以最好按列排序并检索第一个条目。例如:

max_val = MyEntity.query().order(-MyEntity.my_numeric_field).get().my_numeric_field 

另请参阅this forum discussion

你的第二个选择是将存储最大值在其他一些实体,然后更新它(可能在一个事务中),只要你把你的第一个实体。

+0

由于我已经有了索引,我会随之查询。 +1的链接,并指出(在某些情况下更有效)保持更新的最大值存储在一个单独的位置的选项。甚至可能在MemCache中。 –

+0

MemCache的问题当然是数据可能随时过期。然而,如果你使用'ndb'数据存储,你甚至不必担心MemCache,因为GAE会在适当的时候自动使用它。 – dlebech

相关问题