我在SimpleDB上有一个域,从不从中删除。我正在对它进行以下查询。
select count(*) from table_name where last_updated > '2012-09-25';
尽管我将consistent read参数设置为true,但它仍然在不同的执行中返回不同的结果。由于我没有从这个域中删除任何内容,理想情况下,结果应该按递增顺序排列,但这并没有发生。
我是不是遗漏了什么?
如果我正确理解您的用例,您可能误解了AmazonSimpleDB上下文中ConsistentRead参数的语义,请参阅选择:
设置为true时,确保返回最新的数据。对于更多信息,请参阅一致性
短语最近最终可能会产生误导,但它不会以任何方式解决/影响结果排序,而是意味着最新更新和ConsistentRead保证您的选择语句之前的每个更新操作对该选择操作都可见,请参阅描述:
AmazonSimpleDB保存每个域的多个副本。当数据写入或更新时,数据的所有副本都会更新。然而,更新传播到所有存储位置需要时间数据最终将是一致的,但立即读取可能不会显示更改。如果最终一致的读取对于您的应用程序,请使用ConsistentRead。尽管此操作可能花费比标准读取更长的时间,它总是返回最后更新的值[强调矿]
关于一致性的链接部分提供了有关此概念的更多详细信息和说明。
排序顺序
为了实现您可能想要的结果,一个简单的orderby语句就可以完成这项工作,例如:
select * from table_name where last_updated > '2012-09-25' order by last_updated;
SimpleDB上的这个操作有一些限制/微妙之处,所以一定要浏览一下Sort的简短文档以了解详细信息。