我想了解Google Datastore是否可以滿足我的需求。如何對Google數據存儲中的很多實體執行總計?
我有很多實體,我需要對某個屬性執行一筆款項。 基本上,我希望能夠做select count(value1) from entity1 where [some filter]
,entity1是一個實體,用於跟蹤其字段/屬性value1
中的某種數據。
我知道這些功能在數據存儲中不可用,因爲它不是關係數據庫,所以最直接的解決方案是執行select
,然後計算應用程序中結果集的總和。所以,我有這樣的事情(使用的NodeJS,但我不關心語言):
query = client.query(kind='Task')
query.add_filter('done', '=', False)
results = list(query.fetch())
total = 0
for(v in results)
total += v.value
的問題是,我有成千上萬的記錄,所以結果可能會像30萬分的記錄。
這樣做沒有遇到瓶頸的最佳方法是什麼?
第一個問題,你有多少次這樣做。其次,任務「完成」狀態的更新頻率如何?這兩個數字都會影響您採取的方法。例如遞增計數,或者只是批量。如果你已經計算了一次,它需要再次計數? –
讀取操作(即請求數據總和的操作)經常發生。 '完成'只是爲了舉一個例子。 計數可能需要重新進行。 –
如果你只是偶爾做這個事情,你的意思是瓶頸?你關心總體執行時間來完成這個總和嗎?我估計總計30萬條記錄大約需要2-5分鐘。 –