为什么从Amazon SimpleDB读取一致性的select会产生不同的结果?

时间:2012-09-26 17:47:26

标签: amazon-simpledb

我在SimpleDB上有一个域,我从不删除它。 我正在对它进行以下查询。

select count(*) from table_name where last_updated > '2012-09-25';

虽然我将一致的读取参数设置为true,但它仍然在不同的执行中返回不同的结果。由于我没有删除此域中的任何内容,理想情况下结果应该按顺序递增,但这种情况不会发生。

我在这里错过了什么吗?

1 个答案:

答案 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的简短文档以获取详细信息。

相关问题