为什么从AmazonSimpleDB中读取一致的select会产生不同的结果



我在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的简短文档以了解详细信息。

相关内容

  • 没有找到相关文章