为什么AWS在DynamoDB中说“强一致性”,而对于S3则说“读后一致性”?他们俩的意思是一样的吗?
发布于 2019-12-14 02:32:04
这两个术语本质上意味着相同的东西,在某种意义上,读后写是一种强烈的一致性。
值得注意的不同之处在于,DynamoDB强大的一致性包括了读后更新和读后删除以及读后写.S3只提供读后写.因此,我们可以说,读写是强一致性的子集。
在S3中,一切最终都是一致的:如果您创建了一个对象,并且您以前没有尝试获取该对象(例如在创建对象之前检查该对象是否已经存在),那么在创建该对象之后获取该对象将始终返回您创建的对象。这就是S3中的读后写一致性,在描述的情况下,它总是可用的--您不必要求S3对新对象进行强一致性的读后写入,因为它总是提供的。
S3中的任何其他操作都没有这种一致性保证。示例:
所有这些都是S3一致性模型的一些方面,它们都是性能优化的结果。
DynamoDB也是为性能而优化的,因此,由于同样的原因,它默认为最终(而非强)一致性.但是,如果需要的话,可以在DynamoDB中指定强一致性的读取。这些都附有警告:
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadConsistency.html
发布于 2020-12-04 11:37:56
对于那些在2020年12月及以后看到这篇文章的人来说,更新-- AWS S3现在为GET、PUT和LIST操作以及更改对象标记、ACL或元数据的操作提供了很强的一致性。桶配置有一个最终的一致性模型。
https://stackoverflow.com/questions/59316960
复制相似问题