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