2011-11-24 44 views
1

我剛剛在使用SimpleDB時發現了一個假設。我懷疑這是安全的,但希望得到其他意見,因爲這些文檔似乎沒有涵蓋它。SimpleDB:如果我們看到該項目,保證看到所有項目屬性? (不一致的讀取)

所以說過程1存儲具有x個屬性的項目。當進程2嘗試訪問所述項目(沒有一致的讀取)&找到它時,它是否保證具有由進程1存儲的所有屬性?

我排除了另一個進程可能會更改數據的可能性。

我也知道進程2不能保證看到該項目,除非使用一致的讀取,我只是在談論它最終看到它時的觀點。

我想這個問題是,一旦我可以得到一個項目&我不會改變它在任何地方我可以假設它有一個臨時固定模式,並訪問所有我預期的屬性,而不檢查它們實際存在嗎?

我不想處於這種情況下,我需要保持請求項目,直到他們具有我需要使用它們的所有屬性。

謝謝。

回答

2

儘管Amazon在文檔中沒有提供這樣的保證,但它們的最終一致性的當前實現保證您將看到由進程1存儲的所有屬性,或者它們都不會看到。

請參閱this thread在AWS論壇,更具體地說,由亞馬遜員工確認行爲(重點是我的)的this answer

我不認爲我們做的文檔中這樣的保證,但 當前實現將每個Put請求成捆。它不會 拆分請求並逐個應用操作。您將獲得 步驟1響應或步驟2響應,直到最終一致性 搖出爲止,併爲您留下步驟2響應。

雖然這是沒有記錄的行爲,但我懷疑不少的SimpleDB用戶現在依靠它,因此亞馬遜不會很快改變它,但那是我的猜想。

+0

不好意思回覆,我以爲這個問題已經死了。但感謝回來這個 - 真棒的回答,我今晚會睡得更好:) 如果他們確實改變了這我希望它是一個API選項,我同意這可能很多人都依賴這種行爲,而沒有實現。 再次感謝! – Jonathan

相關問題