NuoDB
by NuoDB

我们能终于找到数据库圣杯吗?第3部分

随着耐用的分布式缓存架构的出现,组织可以构建带有事务语义的全球系统

在 我的第一篇文章 在这三部分系列中,我讨论了在商品机器上水平扩展的分布式事务数据库的需求,与采用“扩展”设计的传统交易数据库相比。简单地添加更多机器是一种更快,更便宜,更灵活地增加数据库容量,而不是叉车升级到巨型蒸汽玻璃服务器。它还带来了连续可用性和地理分布式操作的承诺。

这 第二篇文章 在本系列中,概述了设计分布式事务数据库系统的三种历史方法,即:1。 共享磁盘设计 (例如,Oracle RAC); 2。 没有任何设计 (例如Facebook MySQL实施); 3。 同步提交设计 (例如Google F1)。所有这些都具有与传统的客户端 - 服务器数据库系统的一些优势,但它们每个都具有与成本,复杂性,专用基础架构的依赖性相关的严重限制,以及特定于工作负载特定性能权衡。我指出,我们非常兴奋,关于纽诺布的技术创始人介绍的分布式数据库设计中最近的创新 吉姆·斯塔基。我们称之为概念 耐用的分布式缓存(DDC),而且我想在第三个和最后一段时间内花一点时间谈论它是什么,高级概述它是如何工作的。

以记忆为中心的与存储中心

第一个洞察Jim已经迄今为止迄今为止的所有通用关系数据库都在以存储为中心的假设归档,并且在缩减时,这是一个根本问题。实际上,数据库系统是一个花哨的文件系统,它安排对基于磁盘的文件并发的读/写访问,使得用户不会互相践踏。耐用的分布式缓存架构反转该想法,将数据库想象为可以在必要时溢出到磁盘的一组内存容器对象,并且可以保留在备用目的中的支持存储器中。以记忆为中心的与存储形式,可以听起来像分裂毛发,但事实证明它真的很重要。例如,原因是最好的。

假设您有一个在50个服务器上运行的单个逻辑DDC数据库(与基于酸事务性DDC的数据库是绝对可行的)。并假设在某个时刻服务器23需要对象#17。在这种情况下,服务器23可以确定在七个其他服务器上在存储器中实例化对象#17。它只是从最敏感的服务器请求对象。请注意,由于对象处于内存中,操作涉及无磁盘IO - 它是一个远程内存提取,这是比磁盘快的速度快。

您可能会询问其他地方在内存中不存在的情况。在耐用的分布式缓存架构中,这由某些服务器“伪造”处理它们在内存中的所有对象。在实践中,当然,他们正在维护磁盘,SSD或他们选择的任何内容的支持存储(在NOODB实现中,他们可以使用诸如Amazon S3或Hadoop HDF的任意键/值存储)。由于它涉及提供对象,这些“备用商店服务器”表现得完全类似于其他服务器,除非保证相同的响应时间。

因此,DDC架构中的所有服务器都可以请求对象和供应对象。他们是那种感觉(以及所有其他感官)的同行。某些服务器在任何给定时间具有对象的子集,因此只能将数据库的子集提供给其他服务器。其他服务器拥有所有对象,可以提供任何一个,但将慢一个不在内存中驻留的对象。

让我们用对象事务引擎(TES)的子集来调用服务器,以及其他服务器存储管理器(SMS)。 TES是不需要使用磁盘的纯内存器服务器。它们是自主的,可以根据需要单方面加载和弹出对象。与TES不同,SMS不能在与他们完成时丢弃地板上的物体;相反,他们必须确保它们安全地放置在耐用的存储中。

对于熟悉缓存架构的读者,您可能已经认识到这些TES实际上是分布式DRAM缓存,并且SMS是专门的特色,确保耐用性。由此得名  耐用的分布式缓存.

恢复失败

事实证明,TE上存在的任何对象状态已经提交到磁盘(即,在一个或多个短信上安全),如果对象消失,则将在应用程序级别失败的未提交的一部分。这意味着数据库具有对TES丢失的有趣性质。您可以关闭或拔掉它,系统不会丢失数据。它将失去吞吐量能力,以及TE上的任何部分交易将被报告给申请作为失败的交易。但事务应用程序旨在处理交易失败。如果在应用程序级别重新发出事务,则将分配给不同的TE,并将继续完成。因此,DDC架构对TES的损失是有弹性的。

SMS怎么样?回想一下,您可以在您喜欢的情况下拥有尽可能多的短信。它们实际上只是秘密地藏在一些耐用商店中的物体。而且,除非您配置它不为时,否则每个SM都可能存储所有对象。磁盘很便宜,这意味着您可以根据需要使用整个数据库的许多冗余副本。结果,DDC架构不仅适应TES的损失,而且对SMS的丢失而有弹性

实际上,只要您至少有一个TE和一个SM运行,您仍然有一个正在运行的数据库。失败的恢复能力是分布式交易数据库的长期但不达到的承诺之一。 DDC架构直接地址。

弹性鳞片输出和缩放

如果我将服务器添加到DDC数据库,会发生什么?将TE层视为缓存。如果新TE获得工作,它将开始询问对象并进行分配的工作。它还将开始向需要它们的其他特色服务。事实上,新的te是另一个特色的真正的对面。此外,如果您要关闭所有其他TES,则数据库仍将运行,新TE将是唯一正在进行交易工作的服务器。

也可以动态地添加和关闭作为专业TES的SMS。如果将“空”(或陈旧)SM添加到正在运行的数据库中,它将通过对象列表循环并将其加载到其持久商店中,从最响应的地方获取它们。一旦它拥有所有对象,它将抬起它的手,并将其作为对等的同行。并且,就像上面描述的新TE一样,您可以在添加新SM后删除所有其他SMS。系统将继续运行而不会丢失节拍或丢失任何数据。

因此,底线是DDC架构提供满足需求的容量。您可以弹性地扩展TES和SMS的数量,并根据工作负载要求再次缩小它们。按需容量是DDC架构提供的分布式数据库的第二个承诺。

地理分布

令人明显的读者毫无疑问是想知道这个分布式数据库问题的最困难的部分 - 即我们正在谈论分布式 交易 数据库。事务,特别是酸事务,是一种极大简化的抽象,允许应用程序员以非常干净,高级别和明确定义的数据保证构建其应用程序。如果我将数据存储在酸事务数据库中,我知道它会将我的程序与其他程序隔离,维护数据一致性,避免状态失败状态的变化,保证存储数据仍将在以后的日期,无论外部因素如何。无论天气如何,应用程序都可以相信酸兼容的数据库,以便相信酸性符合的数据库,从而更简单。

DDC架构采用仅附加更新的型号。传统上,数据库中的记录更新覆盖该记录,并且删除记录删除记录。这可能听起来很明显,但还有另一种方式,由Jim Starkey大约25年前发明。这个想法是创建和维护一切的版本。在此模型中,您从不进行破坏性的更新或破坏性删除。您只创建了新版本的记录,并且在删除的情况下,新版本是记录版本,注释记录不再扩展。这个模型被称为 MVCC. (多版本并发控制),它具有许多众所周知的好处,即使在扩展数据库中也是如此。 MVCC在包括DDC的分布式数据库架构中具有更大的好处。

我们这里没有空间覆盖MVCC详细介绍了MVCC,但值得注意的是,它所做的一件事允许DBMS在不使用传统锁的情况下管理读/写同意。例如,读者不要阻止作家,写作者不会阻止读者。它还具有一些异国情调的功能,包括如果您想要您可以理论上维护整个数据库的完整历史记录。但由于它涉及DDC和分布式的交易数据库挑战,但有些关于MVCC非常整洁的东西。 DDC与DDC的分布式对象语义一起利用MVCC的分布式各种MVCC,允许几乎所有服务器间通信是异步的。

DDC对异步的影响是非常远的。通常,它允许比同步模型更高利用系统资源(核心,网络,磁盘等)。但具体地,它允许系统对网络延迟相当不敏感,以及服务器相对于彼此的位置。或者将其放在不同的方式中,这意味着您可以在远程数据中心中启动您的下一个TE或SM,并将其连接到正在运行的数据库。或者您可以在公共云上启动数据中心中的一半数据库服务器,另一半在公共云上。

现代应用分发。特定网站的用户通常在全球范围内传播。移动应用程序是自然的地理分布。事情互联网(物联网)应用程序正在连接到任何时候可以在任何地方的消费者设备的巨大。这些应用程序中的单个大数据库服务器都不在单个位置,甚至在单个位置中的较小数据库服务器群集。他们需要的是在多个数据中心(或云区域)中的一组数据库服务器上运行的单个数据库。这将为他们提供更高的性能,数据中心故障转移以及管理数据隐私和主权问题的可能性。

分布式事务数据库系统的第三历史承诺是地理分布。随着其他主要承诺(对失败和弹性可扩展性的抵御能力),地理分配已迄今为止是一个无法实现的梦想。 DDC架构与其以内存为中心的分布式对象模型及其异步间服务器协议最终提供此功能。 

总之

这一短暂系列的职位试图提供分布式数据库设计的快速概述,具有一些高水平的评论,对各种方法的优缺点。有很大的历史成功 共享磁盘什么都没有 和 同步提交 楷模。我们看到通过这些分布式数据库技术提供世界上一些最可扩展的系统的先进技术公司。但到目前为止,分布式数据库从未真正提供任何接近他们的全部承诺。他们也缺乏谷歌或Facebook的发展和财政资源的人员和组织都无法进入。

随着DDC架构的出现,现在可以为任何组织构建具有事务语义,按需容量的全球系统,并在不遗失节拍的情况下运行10年的能力。分布式交易数据库的大承诺是弹性可扩展性和地理分布。我们很兴奋,由于Jim Starkey的持久分布式缓存,那些能力终于送到了该行业。