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