我有一種'客戶'。我想運行一個事務,在將要插入新的「客戶」時鎖定整個Kind。交易將首先查詢以檢查新的「客戶」名稱是否已經存在,然後如果沒有找到匹配,則交易的第二部分運行插入。這樣我強制執行一個唯一約束(也限制每秒大約1次插入操作)。谷歌App Engine分配實體組/父鍵,唯一約束
我不滿意的解決方案是讓所有「客戶」實體都在同一個實體組中,然後創建一個名爲「EntityGroups」的Kind,其中有一個名爲「CustomersGroup」的記錄。這個記錄每次被用作新創建的「客戶」實體的父項,從而將整個種類分組爲一個實體組。
我的問題是:我很擔心使用像'CustomerGroup'這樣的幻影記錄,因爲如果發生任何事情並且丟失或刪除了,我不能將任何新的'客戶'實體分配給同一個組!我想,將每個「客戶」實體的父母分配給一個靜態任意父母,比如'1111111'會更好嗎?我認爲術語是「虛擬根實體」,我該怎麼做?
請幫助任何關於我如何最好地處理這個問題的建議!然後,你實例
class CustomerParent(ndb.Model):
pass
和存儲您的母公司:
你不想走單親父母的路線。這大大限制了你的表現。 – dragonx
感謝Thanos,這正是我正在做的。但是我擔心如果我的主人「CustomerParent」實體被刪除,或者意外創建了另一個條目。然後我無法將新客戶添加到原始實體組,或者新客戶被添加到新實體組中! – GrantsV
感謝Dragonx,但這種性能限制並不是問題。什麼是節目製作人正在創建2個具有相同名稱字段的實體。而且我不能使用KEY_NAME來強制執行,因爲名稱字段可能會及時更改。 – GrantsV