2014-10-08 78 views
1

讓我試着描述需求。交易和實體組

我的產品有很多網站,每個網站都有很多倉庫,每個倉庫都有一個它負責的重要資源的計數。

每當有人想那個資源,我想有效地選擇一個(場地,倉庫),這將符合要求(基於一些啓發。)

我想我需要一個交易過這樣的操作(如我不想讓事情處於混亂的狀態。)

我已經多次閱讀了文檔,並瞭解實體組是推薦的交易方式。

從谷歌AppEngine上轉到文檔:

一個實體的父母,父母的父母,等等遞歸,是其祖先;其子女,孩子的孩子等是其後代。據稱一個實體及其後代屬於同一個實體組。

如果我讓這個每個倉庫有一個網站作爲祖先,我可以在同一個站點下的倉庫操作時得到良好控制(即實體組。)

是什麼的簡單方法使所有場所和倉庫的運行安全?事務

  • 讓虛擬母下的所有網站,但這是否允許我對W1(下網站S1倉庫)和W2(下據點S2倉庫)操作:

    途徑我已經想到了?換句話說,W1和W2在一個實體組中,因爲他們的祖先擁有相同的父親?

  • 使虛擬父母下的所有倉庫,並採取妥協,因爲所有的倉庫都在同一個實體組。

難道只是我或實體組的意義稍微解釋爲按照文檔? PS:這種安全操作所需的數量相對較少,所以我並不太擔心在一個實體組下有限的寫入吞吐量。

回答

3

的回答你的問題是肯定的,實體屬於同一個組,如果他們有相同的父,即使父母是一個盛大的父母爲一個或兩個實體:

每個實體與給定的根實體作爲祖先是在同一個實體組中。

來自:Transactions

+0

所以實體組總是從根實體啓動(它沒有父),幷包括它的所有後代? – kidoman 2014-10-08 02:10:09

+0

另外,你們推薦給上述事實呢? – kidoman 2014-10-08 02:13:46

+2

是的,所以您必須小心,不要將太多的實體包含在一個組中,而性能限制將會在其中起作用。對於事務,您必須仔細檢查您的使用案例。承諾數據存儲失敗的情況極少,因此請查找存在實際損害的用例(例如,將資金從一個帳戶轉移到另一個帳戶)。您還可以使用任務API處理一些請求,因爲它可以控制重試。我無法幫助您選擇解決方案,因爲我不知道承諾失敗的預期負載和潛在損失。 – 2014-10-08 02:17:54