我有一个案例,我们正在对域进行选择:
select * from mydomain where some_val = 'foo' and some_date < '2012-03-01T00:00+01:00'
在迭代此查询的结果时 - 我们正在做一些工作,然后更新行并将字段some_date
设置为当前日期/时间。标记它已被处理。
我遇到的问题是,当它返回simpledb以获取下一组记录时,nexttoken请求会中断吗?当它返回以获得下一批时 - 第一批中的所有那些现在将具有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'
我的第一次执行:记录1, 2, 3
如果我在返回下一个令牌批次之前将some_date
字段设置为:'2012-03-12T19:20+01:00'
,那么下一个令牌请求是否会返回4,5,6
?或者它会返回7,8,9
(因为令牌设置为从第4条记录开始,现在1,2,3
不再在结果集中。)
如果它很重要 - 我们正在使用boto库(python)。
答案 0 :(得分:0)
下一个令牌请求会返回4,5,6吗?或者它会回来 7,8,9 [...]?
好问题,这确实有点令人困惑 - 除了前者(即4,5,6
)之外的其他任何内容对于实际用法都没有意义,而Amazon SimpleDB也是如此,因此请参阅{{3 }}:
运行时间超过5秒的操作会返回超时错误 响应或部分或空结果集。部分和空的结果 sets包含一个NextToken值,允许你继续 从停止的地方开始的操作 [强调我的]
请注意请求参数部分中的附加说明,最终可能会有点令人惊讶:
注意强>
将ConsistentRead设置为的Select操作的响应 true返回一致的读数。但是,对于任何后续选择 包含NextToken值的Amazon SimpleDB操作请求 忽略ConsistentRead字段,后续结果如下 最终一致。 [强调我的]