0

我正在使用djangoappengine,我認爲它處理高端應用程序數據存儲上最終一致性的方式會遇到一些問題。DjangoAppEngine和高複製數據存儲上的最終一致性問題

首先,實體組甚至沒有在djangoappengine中實現。

其次,我認爲,當你做一個djangoappengine獲取時,底層的應用引擎系統正在做一個應用引擎查詢,這只是最終的一致性。因此,甚至不能使用密鑰來保證一致性。

假設這兩個陳述是真實的(我認爲他們是),如何在高複製數據存儲上使用djangoappengine構建任何複雜的應用程序?每次您保存一個值然後嘗試獲得相同的值時,不能保證它會一樣。

回答

1

採取djangoappengine/DB/compiler.py一看:get_matching_pk()

如果你在PK一djangomodel.get(),它會轉化爲一個谷歌應用程序引擎獲得()。 否則它會轉換爲查詢。這裏有改進的餘地。提交修正?

+0

好的,謝謝。所以我的第二個陳述其實是錯誤的......很高興知道。如果是這種情況,您可以創建自己的鎖。您需要在事務中執行測試和設置,並且對象查找只能使用其pk。不是以任何方式完美,但它可以阻止某些類型的比賽。 – speedplane 2012-02-26 04:33:31

+0

在github上還有一個用於父密鑰支持的請求。 另外,它看起來應該可以修改compiler.py,以便非pk django get()調用仍然轉換爲appengine Get()調用。 – dragonx 2012-02-27 18:05:50

0

不知道djangoappengine,但如果僅包含關鍵字的appengine查詢被認爲是關鍵唯一查詢,並且您將始終獲得一致的結果。

+0

謝謝,但是一個appengine查詢!= djangoappengine查詢。另外,我認爲你在混淆關鍵字查詢是什麼。 – speedplane 2012-02-17 15:25:51

0

不管你放在AppEngine模型上的系統是什麼,當你將它保存到數據存儲區時,你會得到一個密鑰。當您通過人力資源數據庫中的密鑰查找實體時,您可以保證獲得最新的結果。

+0

你一般說話還是你明白djangoappengine是如何運作的? – speedplane 2012-02-19 22:44:01