更新查询中的记录时使用SimpleDB NextToken

时间:2012-03-26 15:46:30

标签: amazon-simpledb boto

我有一个案例,我们正在对域进行选择:

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)。

1 个答案:

答案 0 :(得分:0)

  

下一个令牌请求会返回4,5,6吗?或者它会回来   7,8,9 [...]?

好问题,这确实有点令人困惑 - 除了前者(即4,5,6)之外的其他任何内容对于实际用法都没有意义,而Amazon SimpleDB也是如此,因此请参阅{{3 }}:

  

运行时间超过5秒的操作会返回超时错误   响应或部分或空结果集。部分和空的结果   sets包含一个NextToken值,允许你继续   从停止的地方开始的操作 [强调我的]

请注意请求参数部分中的附加说明,最终可能会有点令人惊讶:

  

注意

     

将ConsistentRead设置为的Select操作的响应   true返回一致的读数。但是,对于任何后续选择   包含NextToken值的Amazon SimpleDB操作请求   忽略ConsistentRead字段,后续结果如下   最终一致。 [强调我的]