2017-09-25 64 views
2

我有一個代表付款方式的實體。我希望爲使用該付款方式執行的所有付款嘗試創建一個實體組。是否存在實體組最大尺寸?

1次寫入每秒限制很好,對我的用例來說實際上很好,因爲沒有很好的理由對特定的信用卡進行更頻繁的收費,但是我找不到最大規格的任何規格的實體組。

我擔心的是一個非常活躍的公司賬戶是否會對實體組內的記錄數量造成任何限制(當他們與我們進行第100萬筆交易時)?

回答

5

不,對實體組大小沒有限制,所有與數據存儲相關的限制記錄在Limits

但請注意,實體組大小在數據爭用方面很重要,請參閱Keep entity groups small。請注意,競爭不僅發生在編寫實體時,而且在交易中讀取它們時(參見Contention problems in Google App Engine),或偶爾甚至可能發生外部交易(參見TransactionFailedError on GAE when no transaction)。

恕我直言,你的使用案例是不值得處理這些問題的風險(相當困難的調試和解決),我不會在這種情況下使用一個實體組。

+0

我希望在這裏使用實體組來阻止多個請求/線程同時向用戶收費。目前,我有單獨的實體,我稱之爲「付款鎖定」,它與其鎖定的帳戶共享相同的Key ID。在嘗試付款之前,我嘗試將該帳戶標記爲「鎖定」在交易中,然後執行付款,然後在交易中解鎖。我時常注意到爭用錯誤。那麼最好的方法是什麼? – Alex

+0

你通常不需要明確的鎖定,事務環境的存在應該照顧到這一點。除非交易的持續時間不可接受。這裏的交易指的是數據存儲交易,而不是收費交易。嘗試將它們映射爲1:1。 –

+0

如果您將您的實體組祖先限制爲付款人,那麼您可以擴展系統並仍然實現交易組的交易能力,除非您能想出單卡支付多個併發付款的原因;-) –