2012-01-05 52 views
0

讓我通過GAE文檔。GAE數據存儲爭用避免?

我有一個問題,我找不到明顯的答案。假設實體組的交易限制爲1 /秒,那麼在10,000個用戶都希望同時訪問特定用戶的頁面的情況下,如何擴展請求呢?

這不會給你10000個讀取特定用戶的實體組,每秒鐘1次,從而導致災難性的系統故障和不滿意的用戶?

還是我困惑,只寫寫爭議。

回答

5

AppEngine使用事務optimistic concurrency control,這意味着它們不會鎖定數據,但會在檢測到數據「髒」時拋出異常。因此,第一次更改數據的事務沒問題,第二次獲取異常並且必須重試。

鑑於此,我假設讀取不會阻止,如果它們不是事務的一部分,即使其他事務正在進行。另外,爲了減少事務的瓶頸,我們應該仔細組織實體組並儘可能小,並且讓它們的組織方式儘量少爭用(並行請求)。含義:

  1. 有小實體圖 - 不要在共同父項下放置很多實體。
  2. 嘗試將用戶實體作爲根父級。用戶通常不會創建並行交易(例如同時進行多次匯款等)。
+1

您的假設是正確的 - 更新速率限制僅適用於更新,而不適用於讀取。 – 2012-01-05 22:48:47

+0

感謝彼得徹底的建議 – 2012-01-06 11:50:57

0

沒錯。我沒在想。答案是memcache。至少部分。這是一個高效的數據模型/模式。

+0

不,解決方案是沒有問題 - 速率限制僅適用於寫入,而不適用於讀取。不過,使用memcache仍然是個好主意。 – 2012-01-05 22:49:08

+0

太好了。謝謝@Google – 2012-01-06 11:49:49