选择的一致性

||评论()
Amazon SimpleDB今天推出了一组新的特性,为客户在数据库操作中使用哪些一致性和并发模型提供了更多的控制。现在有条件的put和delete操作,以及一个新的“一致的读”选项。这些新特性将使那些应用程序更容易转换到SimpleDB,因为SimpleDB是使用传统数据库工具设计的。

重新审视一致性挑战

设计需要在全球范围内可靠运行的分布式系统并不是一项简单的任务。当您需要在超可伸缩的条件下满足严格的可用性和性能需求时,有许多因素会发挥作用。我在书中列出了一些挑战一篇解释最终一致性概念的文章。如果您需要实现高可用性和可伸缩性能,您将需要求助于数据复制技术。但复制本身也带来了一系列需要解决的挑战。例如,对数据的更新现在需要在几个位置进行,那么如果其中一个或多个位置(暂时)无法访问,您该怎么办?

计算机科学的整个领域都致力于为构建可靠的分布式系统这一难题寻找解决方案。Eric Brewer加州大学伯克利分校的教授总结了这些挑战上限定理,它说明了共享数据系统的三个属性——数据一致性、系统可用性和对网络分区的容错性——在任何给定时间只有两个可以实现。在实践中网络分区是一个给定的可能性,所以真正的可用性和一致性之间的权衡是:在一个需要高可用性系统,有很多情况下,一致性无法保证和系统需要强烈一致的,有很多情况下,可能需要牺牲可用性。这些权衡场景通常涉及几乎从未发生过的边缘条件,但在一个需要大规模操作、每天服务数万亿请求的系统中,需要准备好处理这些情况。

除了可用性和一致性之间的基本矛盾之外,并发性、性能和一致性之间也存在权衡。实现严格的一致性可能会以更新或读取延迟为代价,并可能导致较低的吞吐量。必威体育精装版app官网开发人员应该意识到这些权衡,因为它们不仅仅是一个深奥的概念,只影响系统的内部。相反,底层服务的一致性模型将对开发人员的应用程序产生明确的下游影响。必威体育精装版app官网

Amazon服务中的数据一致性模型

在亚马逊内部,我们强烈支持使用高可用性的服务,因此我们愿意处理一种宽松形式的一致性,称为最终一致性。我们的应用程序设计为处理这种一致性模型,在许多情况下,这使我们能够构建能够满足最严格可靠性需求的服务和应用程序。

betway88体育官网Amazon SimpleDB是使用最终一致性模型使用这些高可用性原则设计的AWS服务的示例。我们的客户也能够处理这种一致性模型,并在这些服务的基础上构建了可扩展和可靠的应用程序。现在,这些服务已经运行了相当长的时间,我们收到了来自许多高级客户的反馈,他们询问他们是否能够更好地控制服务架构师所做的权衡,特别是读取操作的一致性。在最终的一致性模型下,可能存在过时的读取,而在强一致性模型中,reads总是返回最新的更新,尽管在某些罕见的分区情况下,可能会导致性能下降和可用性降低。

Amazon SimpleDB今天发布的两个新特性将一致性模型的控制权交给了客户。第一个是客户执行一致读取的能力,这将防止读取操作可能返回陈旧的数据。第二种是有条件的Put和Delete,它将确保只有在某些属性值匹配时才执行这些操作。

这些新特性将使传统的数据库应用程序场景(如并发控制、项计数器、条件更新/删除等)更容易使用Amazon SimpleDB实现。

一致的阅读

直到最近,SimpleDB只支持最终一致的读取。这意味着在特定条件下,一小段时间内的读操作可能不会反映最近完成的写操作的结果。然而,如果读操作能够反映读操作之前所执行的写操作的结果,那么有一类应用程序的实现就容易得多。为了方便构建这样的应用程序,SimpleDB现在还支持一个名为的强一致性选项一致读取它将反映在读取之前成功返回的所有写操作。特别是那些最初设计时使用传统数据库的应用程序,将更容易适应简单的DB。

选择& GetAttributes请求参数现在包括一个可选的布尔标志ConsistentRead默认设置为false。如果ConsistentRead不存在或设置为false, SimpleDB将默认为最终一致的读。如果ConsistentRead设置为true时,SimpleDB将返回一致的读取。

下表总结了两个SimpleDB读取一致性选项的特征:

最终一致的阅读 一致的阅读
陈旧的读取可能
最低读延迟
读最高吞吐量
没有过时的读取
高阅读延迟
读低吞吐量

由于一致的读取可能会导致更高的延迟和更低的读取吞吐量,所以应该只在应用程序场景强制要求返回项或属性的最新值时使用它。对于所有其他场景,最终一致的读取将产生最佳性能。

有条件的Put和Delete

许多开发人必威体育精装版app官网员要求SimpleDB中使用原语来实现乐观并发控制、项级事务、锁、计数器等。SimpleDB中新的条件放置和删除特性支持构建这些原语。

有条件了如果单值属性的预期一致值与指定的预期值相匹配,则允许为给定项插入或替换一个或多个属性的值。条件放置是一种机制,只要所有并发写入器都使用条件更新,就可以消除并发写入器写入同一项时丢失的更新。

有条件的删除如果项的单值属性的预期一致值与指定的预期值相匹配,则允许删除给定项的项、属性或属性值。如果当前值与预期值不匹配,或者属性完全消失,删除将被拒绝。

可用性是什么

尽管SimpleDB现在支持支持更强一致性模型的操作,但SimpleDB仍然保持了高度可伸缩、高度可用和高度持久的结构化数据存储。即使在极端的故障场景(如完全的数据中心故障)下,SimpleDB的架构也能继续可靠地运行。然而,当出现这些极端故障情况之一时,可能是在软件重新组织自身以确保提供强一致性时,较强的一致性选项暂时不可用。在这些条件下(默认情况下),最终一致的读将仍然可用。

摘要

通过向开发人员提供对一致性必威体育精装版app官网模型的控制,他们现在就有权对一致性和性能进行权衡。这种灵活性在需要适应以传统数据库操作模型为基础设计的现有应用程序的场景中非常重要。必威体育精装版app官网开发人员现在可以选择使用一致的读方法,如果他们的应用程序可以接受这种权衡。通过有条件的put和delete,开发人员可以使用乐观并发控制方法来管理数必威体育精装版app官网据库。

你可以在上找到更多的细节Amazon SimpleDB产品页面和Jeff Barr在亚马逊开发者的必威体育精装版app官网博客

评论

博客评论由Disqus