2013-08-16 62 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