我試圖設計我的應用程序引擎數據存儲區代碼,並且已經考慮到了潛在的問題,並且無法在文檔中找到有關在給定情況下會發生什麼的任何具體信息。如果一個實體的祖先不存在,它會被創建(Java API)嗎?
當我去存儲具有祖先的實體時,在存儲它之前,我檢查並確保它的祖先存在於一個事務中,如果它不存在,我創建祖先。接下來,我開始另一個存儲實體的事務,它使用在上一步中找到或創建的祖先密鑰創建它。在用單用戶或極少用戶進行測試時,這並不會成爲一個問題,因爲儘可能少的併發修改機會,但是一旦部署完畢,我擔心的是,在第一個事務(創建/檢索祖先)和第二個事務(將一個實體添加爲祖先的後代),另一個用戶可能會刪除該祖先。
我最初的想法是將這一切都作爲一個事務出現,但在祖先不存在並且不得不被創建的情況下,祖先查詢來檢查我想創建的實體是否存在將因爲數據存儲的快照隔離模型。但是,我不確定這是否正確。
有沒有人對此事有任何認識?如果祖先被刪除,實體提交仍然可以使用現在指什麼都沒有的父鍵?這是否會重新創建父項,以便將來檢查它會返回相同的密鑰?我會測試這種情況,但我無法設計一種實際的方式來做到這一點。
感謝您的意見。我會在今天看到這樣做,如果看起來很有希望,一定會回來接受答案。 – Jared