在很多情況下,使用Google Application Engine知道數據存儲中的表(一種)中的行數會很有用。
沒有明確而快速的解決方案。至少我還沒有找到一個..是嗎?如何獲取數據存儲中表中的行數?
7
A
回答
14
您可以使用Datastore Statistics高效地獲取特定類型的所有實體(即表中的行數)的計數。簡單示例:
from google.appengine.ext.db import stats
kind_stats = stats.KindStat().all().filter("kind_name =", "NameOfYourModel").get()
count = kind_stats.count
你可以找到如何獲得最新統計here更詳細的例子(GAE可以保持統計數據的多個副本 - 一個5分鐘前,一個30分鐘之前,等等)。
請注意,這些統計數據不會不斷更新,因此它們落後於實際計數。如果您真的需要實際的計數,那麼您可以在自己的自定義統計信息表中跟蹤計數,並在每次創建/刪除實體時更新它(儘管這樣做會相當昂貴)。
更新03-08-2015:使用數據存儲統計可能導致陳舊的結果。如果這不是一個選項,另外兩種方法是保留一個櫃檯或分片櫃檯。 (You can read more about those here)。如果您需要實時結果,請僅查看這兩項。
7
在App Engine中沒有「Select count(*)」的概念。您需要執行以下操作之一:
- 在查詢時對所需實體執行「僅鍵」(索引遍歷)並逐個對它們進行計數。這具有讀取速度慢的代價。
- 寫入時更新計數 - 這具有讀寫速度極快的優點,每次寫入/更新的成本更高。成本:你必須提前知道你想要計算什麼。寫入時您將支付更高的成本。
- 使用任務隊列,cron作業或新的Mapper API異步更新所有計數。這具有半新鮮的折衷。
3
你可以不計數。使用com.google.appengine.api.datastore.Query如下谷歌應用程序引擎的列:
int count;
Query qry=new Query("EmpEntity");
DatastoreService datastoreService = DatastoreServiceFactory.getDatastoreService();
count=datastoreService.prepare(qry).countEntities(FetchOptions.Builder.withDefaults());
+1
相關問題
- 1. 如何獲取NDB數據存儲區中的型號列表
- 2. 如何從Webhook獲取數據以存儲在數據庫中?
- 3. 如何從存儲在json中的文件中獲取數據?
- 4. 獲取gae數據存儲表中的記錄總數
- 5. 從數據庫中獲取存儲的數據到ListView中。
- 6. 如何正確保存並從數據存儲中獲取JSON?
- 7. 如何在sqlite中存儲數據表?
- 8. 如何從存儲庫或automapper中的其他表中獲取數據?
- 9. 如何使用存儲中的數據獲取動作(react-redux)
- 10. 如何獲取存儲在sqlite數據庫中的float值?
- 11. 如何獲取App Engine數據存儲中的ID字段?
- 12. 如何通過wcf中的存儲過程獲取數據?
- 13. 如何從我的存儲過程中獲取一組數據?
- 14. 如何獲取作爲存儲過程結果的數據表
- 15. C#中存儲數據庫錶行
- 16. 從單個存儲過程的兩個表中獲取數據?
- 17. 如何正確讀取表存儲綁定中的數據?
- 18. 如何獲取SQL SERVER數據庫中所有表的行數
- 19. 如何獲取存儲在數據庫中的圖像和數據?
- 20. 如何從ExtJS數據存儲中獲取髒記錄?
- 21. 如何獲取JSON數據並存儲到變量中。
- 22. 如何從存儲過程中獲取數據
- 23. 如何從jTable獲取值並存儲在數據庫中?
- 24. 如何從谷歌數據存儲用戶獲取數據?
- 25. 如何從數據庫中的兩個表中獲取數據?
- 26. 如何從JavaScript中的數據表中獲取數據?
- 27. 如何從spring數據jpa中的表中獲取數據?
- 28. 如何從ios中的sqlite數據庫表中獲取數據?
- 29. 如何從codeigniter中的數據庫表中獲取數據?
- 30. 如何使用存儲過程從兩個不同的表中獲取數據?
這是這可能是更合適的是取決於需求的數據存儲的統計數據API的所有偉大的替代品應用。 – 2010-06-07 21:54:56