首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“强一致性”与“读写一致性”

“强一致性”与“读写一致性”
EN

Stack Overflow用户
提问于 2019-12-13 06:02:19
回答 2查看 7K关注 0票数 9

为什么AWS在DynamoDB中说“强一致性”,而对于S3则说“读后一致性”?他们俩的意思是一样的吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-14 02:32:04

这两个术语本质上意味着相同的东西,在某种意义上,读后写是一种强烈的一致性。

值得注意的不同之处在于,DynamoDB强大的一致性包括了读后更新和读后删除以及读后写.S3只提供读后写.因此,我们可以说,读写是强一致性的子集。

在S3中,一切最终都是一致的:如果您创建了一个对象,并且您以前没有尝试获取该对象(例如在创建对象之前检查该对象是否已经存在),那么在创建该对象之后获取该对象将始终返回您创建的对象。这就是S3中的读后写一致性,在描述的情况下,它总是可用的--您不必要求S3对新对象进行强一致性的读后写入,因为它总是提供的。

S3中的任何其他操作都没有这种一致性保证。示例:

  • 获取一个不存在的对象,得到一个404,然后创建它,然后立即尝试再次获取它。你可能会得到它,但你可能会在短时间内继续得到404。
  • 在S3中创建一个对象,然后在桶中获取对象列表。新对象可能不会立即出现在列表中。
  • 下载一个对象,删除它,然后再尝试下载它。你可能会在短时间内成功。你最终会得到404。
  • 下载一个对象,然后覆盖它。再下载一次。您可能会得到新的对象,或者您可能在短时间内得到旧的对象。您将不会得到一个损坏或部分对象,但您可以得到旧的或新的。

所有这些都是S3一致性模型的一些方面,它们都是性能优化的结果。

DynamoDB也是为性能而优化的,因此,由于同样的原因,它默认为最终(而非强)一致性.但是,如果需要的话,可以在DynamoDB中指定强一致性的读取。这些都附有警告:

  • 如果存在网络延迟或中断,则可能无法使用强一致的读取。在这种情况下,DynamoDB可能返回服务器错误(HTTP500)。
  • 强一致性的读取可能比最终一致的读取具有更高的延迟。
  • 全局辅助索引不支持强一致的读取。
  • 强一致性读取比最终一致读取使用更多的吞吐量容量。

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadConsistency.html

票数 23
EN

Stack Overflow用户

发布于 2020-12-04 11:37:56

对于那些在2020年12月及以后看到这篇文章的人来说,更新-- AWS S3现在为GET、PUT和LIST操作以及更改对象标记、ACL或元数据的操作提供了很强的一致性。桶配置有一个最终的一致性模型。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59316960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档