2013-05-27 43 views
1

我在appengine上運行我的Django站點。在數據存儲中,有一個實體種類/表X,每24小時更新一次。一種優化從每天更新一次的數據存儲區讀取數據的方法

X有大約15K條目,每個條目的形式(「長度爲< 20」,整數)的唯一字符串。

在某些情況下,用戶請求涉及從X平均提取200個條目,如果單獨完成,則代價相當高昂。

在這種情況下我可以採用什麼樣的有效方法?

這裏有一些方法我想到了,但在他們由於經驗不足

  • 有些懷疑使用()由db.get方法支持批量查詢,其中鍵列表可以作爲參數和傳遞get()會嘗試一次性獲取它們。這會大大減少時間,但仍然會有明顯的開銷和成本。另外,我使用的是Django模型,不知道如何將這兩者聯繫起來。
  • 在每24小時發生一次更新作業後,手動將整個數據庫複製到內存中(例如將其存儲在地圖中)。這將工作得很好,同時也爲我節省了大量的數據存儲讀取,但我還有其他疑問。它會在各種實例中保持不變嗎?我還需要了解哪些因素會影響哪些因素?這個或類似的東西似乎對我的情況來說是完美的。

以上只是我想到的第一個想法。必須有我不知道/缺失的方式。

謝謝。

+1

也許你可以實現緩存? –

+1

您對這兩個選項都有正確的想法。使用[memcache](https://developers.google.com/appengine/docs/python/memcache/overview)肯定會以更少的費用加快速度。限制爲每個緩存值1MB。 – rGil

回答

1

您的總數據量非常小,看起來像一個字典。爲什麼不把它(本對象)作爲單個條目保存在數據庫或Blobstore中,並且可以緩存該條目。

+0

謝謝,非常好的解決方案!效果很好。 :) – nims

相關問題