2011-11-24 42 views
1

我刚刚在使用SimpleDB时发现了一个假设。我怀疑这是安全的,但希望得到其他意见,因为这些文档似乎没有涵盖它。SimpleDB:如果我们看到该项目,保证看到所有项目属性? (不一致的读取)

所以说过程1存储具有x个属性的项目。当进程2尝试访问所述项目(没有一致的读取)&找到它时,它是否保证具有由进程1存储的所有属性?

我排除了另一个进程可能会更改数据的可能性。

我也知道进程2不能保证看到该项目,除非使用一致的读取,我只是在谈论它最终看到它时的观点。

我想这个问题是,一旦我可以得到一个项目&我不会改变它在任何地方我可以假设它有一个临时固定模式,并访问所有我预期的属性,而不检查它们实际存在吗?

我不想处于这种情况下,我需要保持请求项目,直到他们具有我需要使用它们的所有属性。

谢谢。

回答

2

尽管Amazon在文档中没有提供这样的保证,但它们的最终一致性的当前实现保证您将看到由进程1存储的所有属性,或者它们都不会看到。

请参阅this thread在AWS论坛,更具体地说,由亚马逊员工确认行为(重点是我的)的this answer

我不认为我们做的文档中这样的保证,但 当前实现将每个Put请求成捆。它不会 拆分请求并逐个应用操作。您将获得 步骤1响应或步骤2响应,直到最终一致性 摇出为止,并为您留下步骤2响应。

虽然这是没有记录的行为,但我怀疑不少的SimpleDB用户现在依靠它,因此亚马逊不会很快改变它,但那是我的猜想。

+0

不好意思回复,我以为这个问题已经死了。但感谢回来这个 - 真棒的回答,我今晚会睡得更好:) 如果他们确实改变了这我希望它是一个API选项,我同意这可能很多人都依赖这种行为,而没有实现。 再次感谢! – Jonathan

相关问题