2010-11-03 27 views
1

我想要統計在特定日期之間創建的數據庫中的實體數量。Django + AppEngine計算更多的1000條記錄

我知道谷歌刪除了每次查詢獲取多於1000條結果的限制,但每次我嘗試使用遠程api時,我只獲得1000個結果計數。

是否有人知道我如何計算更多的1000個實體,以檢查我擁有多少實體?

謝謝。
Netanel

回答

3

在較新版本的SDK中刪除了該限制,因此您可能需要檢查並更新。

這仍然不會完全解決您的問題,但......問題在於GAE計數查詢是一個非常糟糕的主意 - 因爲這不是一個表(它更像是一個分佈式數組)計算它實際上必須擊中每個匹配查詢的每個對象(可能是抓取,我不確定)。這是一個非常昂貴的操作,所以如果你做了很多事,你就會不必要地佔用資源。如果你有足夠的物體,你甚至可能達到30秒的請求限制。

看看其他更具可擴展性的做法,比如地圖縮小(計數並存儲分鐘數,然後每小時,然後一天,然後一週,然後每月等)或sharded counter

1
Model.gql("WHERE creation_date >= :start_date AND creation_date <= :end_date", 
      start_date=startdate, end_date=enddate).count() 

應該返回多少實體您的查詢相匹配,即使你有超過1000

您正在使用SDK至少v1.3.6,因爲這是數限制在那裏去掉了?