0

我試圖找出最好的方法來跟蹤我雲數據存儲中某種NDB類型實體的數量。GAE:跟蹤NDB類型實體數量的最佳方法是什麼?

一種方法是,當我想知道我有多少人時,獲取我知道的查詢的.count()將返回所有這些查詢,但這花費了大量的數據存儲小操作(看起來像它與我有這種實體的數量)。所以這並不理想。

另一種選擇是在每次創建或刪除實體時都會更新數據存儲區中的計數器,但這也不是理想的,因爲它會爲我創建或銷燬的每個實體添加額外的讀寫操作。

截至目前,它看起來像第二個選項是我的最佳選擇,所以我的問題是 - 你同意嗎?還有其他的選擇會更具成本效益嗎?

非常感謝。 PS:在Python中工作,如果這樣做有所不同。

+0

爲什麼你需要計數? [文檔說](https://cloud.google.com/appengine/docs/python/ndb/queryclass#Query_count)計數是更有效的提取和計數,所以它看起來像他們可能已經建立這是快速的這個原因已經。 – MtRoad 2014-11-04 02:46:12

+0

(如果您啓用計費,小數據倉庫操作系統是免費的) – 2014-11-07 03:43:16

回答

0

實際上有一種更好/更便宜/更快的方式來查看您正在查找的信息,但如果您需要知道任何給定時刻的精確數量的字段,因爲它每天只更新幾次(即你可以隨時訪問它,但可能會過時幾個小時)。

GAE儀表板中的「數據存儲統計」頁面顯示一些關於種類/實體的詳細數據,包括「計數」數字,並且有一種方法可以通過程序訪問它。在這裏看到更多的信息:https://cloud.google.com/appengine/docs/python/datastore/stats

+0

謝謝!這正是我所期待的。 – 2014-11-05 15:34:50

1

第二種選擇是要走的路。

其他注意事項:

  • 如果你有每秒許多寫入你不妨考慮使用shared counter
  • 爲了減少數據存儲寫道,你可以使用cron作業以更新時間間隔的數據存儲(即統計自上次運行以來創建了多少實體)
  • 還考慮將memcache.incr()與cron作業一起使用來保存數據。這一點的缺點是你的內存緩存密鑰可能會丟失,所以只有真正的選項,如果計數不必是準確的。
相關問題