Использование SimpleDB NextToken при обновлении записей в запросе - PullRequest
1 голос
/ 26 марта 2012

У меня есть случай, когда мы делаем выбор в домене, например:

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

При повторении результатов этого запроса - мы выполняем некоторую работу, затем обновляем строку и устанавливаем в поле some_date текущую дату / время. Отмечая, что он обработан.

Вопрос, который у меня возникает, будет ли разрывать запрос nexttoken, когда он возвращается к simpledb для получения следующего набора записей? Когда он вернется, чтобы получить следующий пакет - у всех из первого пакета теперь будет some_date со значением, которое больше не находится в пределах исходного диапазона запроса.

Я не знаю, как реализован следующий токен, чтобы узнать, является ли он просто указателем на следующий элемент или это смещение, которое может «пропустить» целую партию записей.

Так что, если мы получили 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'

Мое первое исполнение я бы получил: запись 1, 2, 3 Если бы я установил для их поля some_date значение: '2012-03-12T19:20+01:00' перед возвратом для пакета следующего токена - запрос на следующий токен вернул бы 4,5,6? Или он вернет 7,8,9 (потому что токен был настроен на начало 4-й записи, а теперь 1,2,3 больше не находится в наборе результатов).

Если это важно - мы используем библиотеку boto (python).

1 Ответ

0 голосов
/ 26 марта 2012

будет ли запрос следующего токена возвращать 4,5,6?Или это вернуло бы 7,8,9 [...]?

Хороший вопрос, это действительно может немного сбить с толку - все равно ничего, кроме первого (то есть 4,5,6), не сделало бысмысл для практического использования и Amazon SimpleDB работает так же, соответственно, см. Выбор :

Операции, которые выполняются более 5 секунд, возвращают ответ об ошибке времени ожиданияили частичный или пустой набор результатов.Частичные и пустые результирующие наборы содержат значение NextToken , которое позволяет продолжить операцию с того места, где оно было остановлено [выделение мин]

Обратите вниманиедополнительного примечания в разделе Параметры запроса , хотя, что в конечном итоге может быть немного удивительным:

Примечание

Ответ наОперация выбора с ConsistentRead, установленным в true, возвращает согласованное чтение.Однако для любых следующих запросов операции выбора, которые включают значение NextToken, Amazon SimpleDB игнорирует поле ConsistentRead , и последующие результаты в конечном итоге оказываются согласованными. [Акцент мой]

...