Amazon DynamoDB的数据一致性模式包括强一致性读取(SCR, Strongly Consistent Reads)和最终一致性读取(ECR, Eventually Consistent Reads)。强一致性读取确保每次读取都能返回所有成功写入后的最新数据,适用于对数据实时性要求极高的场景,如金融交易。而最终一致性读取则可能在读取时返回比前一次读取稍旧的数据,通常在一秒内所有副本会达成一致,提供了更高的读取性能和吞吐量,适合如社交媒体动态等可容忍短暂数据延迟的应用。
Amazon DynamoDB 默认模式是最终一致性读取,读取延迟更低、成本更低,成本大约是强一致性读取的一半。强一致性读取需手动配置,能确保读取到最新写入的数据。此外DynamoDB 全局表支持多区域扩展,衍生出多区域强一致性(MRSC)和多区域最终一致性(MREC),均基于跨区域复制实现,且两种多区域模式不可混合使用,创建后无法修改。
难以精准匹配业务场景,比如金融交易等核心场景需强一致性,却误选默认的最终一致性,导致数据偏差;日志存储等非核心场景选用强一致性,造成性能浪费和成本增加。多区域模式下,同时写入同一数据易产生冲突,最终一致性模式采用“最后写入者为准”,无冲突日志,排查困难;强一致性模式会直接抛出异常,需额外开发重试逻辑,增加工作量。强一致性读取延迟比最终一致性高,且成本翻倍;多区域强一致性需跨区域同步,延迟更高,而最终一致性可能返回陈旧数据。
牢记两种基础一致性模式的核心区别,默认模式是最终一致性,手动配置强一致性,明确两者的延迟、成本差异。多区域模式的关键特性是,MRSC(强一致性)需部署在三个区域、支持零RPO;MREC(最终一致性)无区域数量限制、无延迟SLA,两者不可混合且无法修改。强一致性适用于核心交易场景,例如银行余额查询、库存实时扣减;最终一致性适用于非核心查询场景,例如显示产品评论、用户个人资料读取。可以在执行GetItem、Query或Scan操作时,通过指定ConsistentRead参数来请求强一致性读取。