2012-03-26 57 views
1

我有,我們正在做一個選擇上的域等的情況下:使用的SimpleDB的nextToken當在查詢記錄更新

select * from mydomain where some_val = 'foo' and some_date < '2012-03-01T00:00+01:00' 

當遍歷此查詢的結果 - 我們正在做一些工作,然後更新該行並將字段some_date設置爲當前日期/時間。標記它已被處理。

我的問題是nexttoken請求會在返回到simpledb以獲取下一組記錄時中斷嗎?當它返回到下一個批次時 - 第一批中的所有批次都將具有some_date,其值不再位於原始查詢範圍內。

我不知道如何實現next-token來知道它是否只是一個指向下一個項目的指針,或者它是否可能「跳過」整批記錄的偏移量。

因此,如果我們檢索的3條記錄的時間和我有這個在我的域名:

record 1, '2012-01-12T19:20+01:00' 
record 2, '2012-02-14T19:20+01:00' 
record 3, '2012-01-22T19:20+01:00' 
record 4, '2012-01-21T19:20+01:00' 
record 5, '2012-02-22T19:20+01:00' 
record 6, '2012-01-20T19:20+01:00' 
record 7, '2012-01-18T19:20+01:00' 
record 8, '2012-01-17T19:20+01:00' 
record 9, '2012-02-12T19:20+01:00' 

我第一次執行,我會得到:返回的前'2012-03-12T19:20+01:00':記錄1, 2, 3 如果我設置了some_date場下一令牌批次 - 下一令牌請求會返回4,5,6?或者它會返回7,8,9(因爲令牌設置爲從第4條記錄開始,現在1,2,3不再位於結果集中)。

如果它很重要 - 我們使用boto庫(python)。

回答

0

下一個令牌請求會返回4,5,6嗎?或者它會返回 7,8,9 [...]?

問得好,這的確讓人有點困惑 - 還是什麼,但前者(即4,5,6)是沒有意義的實際應用和Amazon SimpleDB作品像這樣相應地,看到Select

運行時間超過5秒的操作會返回超時錯誤 響應或部分或空的結果集。局部和空結果 集包含的nextToken值,它允許你繼續從上次停止的地方的 操作[重點煤礦]

,但請注意附加註釋的部分請求參數,雖然,這可能是一個有點出人意料,最終:

注意

將ConsistentRead設置爲 的選擇操作的響應返回爲一致的讀取。不過,對於任何後續的Select 包含NextToken值的操作請求,Amazon SimpleDB 將忽略ConsistentRead字段,並且後續結果爲 最終一致。[重點礦]

+0

謝謝 - 你說的話有道理。我們會根據這個假設與之合作。如果我們在我們的系統中看到相反的證據,我將確保在這裏報告。 – jonathanq 2012-03-28 15:37:14