采访布莱恩·阿克

MySQL的架构师畅谈了数据库存储引擎的未来、亚马逊的Web服务、下一代分布式版本控制以及创建开源软件的经济效益。

MySQL架构师Brian Aker讨论了数据库存储引擎的未来、Amazon的Web服务、下一代分布式修订控制以及创建开源软件的经济。

MySQL架构师Brian Aker在与Don Marti的采访中讨论了广泛的问题LinuxWorld。

当我浏览您的网站时,我看到了一些非常不寻常的MySQL存储引擎。您可以使用Web站点作为后端存储,甚至使用memcached作为内存支持存储。那些发动机有什么实际用途吗?或者它们更符合样本代码的性质?

它们实际上有相当多的实际应用。在数据库行业,我们一直听到,特别是像IBM关于联合数据源的问题。所以,从不同的网站获取数据,或者,在这种情况下,只是不同的数据策略,并把它们放在一起。当Monty Widenius第一次提出MySQL时,这是一个非常早期的概念,尽管它更多地围绕着分析和事务引擎。我们所做的就是把这个概念扩展开来。

HTTP引擎是一个值得研究的有趣引擎。它是作为一段示例代码编写的,其设计目的是为了与Web站点进行通信。它可以通过HTTP方法获取基本数据,然后将其转换为能够使用SQL。好的。这有什么大不了的?Mark Atwood的S3引擎是其中的一大亮点。这个引擎里有亚马逊,它有庞大的可用基础设施存储马克所做的就是通过一个引擎来实现。

例如,我知道他早期的一个案例是他们有一个房地产中介正在收集有关销售的统计数据。而不是创建一个tb或pb级的本地数据存储库,他们开始像普通SQL一样设计它。他们将数据插入数据库。但是,不必将数据存储在本地,而是将其放入S3中进行长期归档。因此,他们可以把一个他们可能不需要经常访问的数据集,放到一个他们不需要支付任何东西,但实际存储成本的环境中。当你计算出本地存储数据、拥有更多的系统管理员、拥有更多的基础设施或仅仅将其存储在S3中之间的数字时,这些数字更倾向于使用S3服务器。

为了让你们了解一些可以做的事情,我们参加了MySQL用户大会。我在酒吧向一群人解释HTTP引擎。有一个人在看,他跟我说了几句话,然后就走了。我们在酒吧又坐了一个小时,他回来说,“看这个。”他曾经去过谷歌电子表格,他所做的是写了一个RESTful URL并把它放到HTTP引擎中,然后开始从谷歌电子表格中收集数据并显示在数据库中。所以每次他对数据库做SELECT,它实际上是从他连接的谷歌电子表格中提取数据。所以这个概念就是用不同的数据源物品我们看到它们有一些非常实际的应用。

在memcache引擎的例子中,它只是试图使一个通用的架构更易于使用。如果你去看看Cnet, Slashdot, Wikipedia, LiveJournal,所有这些网站都使用memcache与MySQL进行协调。我需要将数据插入数据库,然后再将数据插入memcache。这个想法不是简简单单就行,这样,当你只处理数据库的插入,因此任何类型的缓存一致性问题消失,因为数据是,一旦它自动插入到数据库中,吹灭缓存和插入的数据直接在memcache。你总可以在应用层做这些。但是,我们能否让用户在不需要自己编写大量代码的情况下,更简单地发展这些类型的架构呢?所以你可以说它们是利基的,但我特别认为Web方法,我不认为我们会看到它在几年后几乎是利基的,特别是当我们看到越来越多的网站启用了API。

您提到了RESTful接口。您能解释一下REST的概念和SQL数据库期望如何查看数据的概念是如何匹配的吗?

这很有趣,坦白说,我们今天只解决了其中的一部分。RESTful的意思是你生成一个URL,和你通常在浏览器中输入的是一样的。相反,服务器会用某种XML,某种数据源进行响应,这种数据源很容易解析,也很容易使用。所以,不像说,肥皂xml - rpc,这是一个非常非常简单的API。而且它在Web站点中传播得非常快,以非常简单的RESTful方式生成Web页面,这使得编写从Web站点提取内容的应用程序变得非常简单。与此同时,从Web站点提取内容,我们可以使用相同的数据源,并将其以一种类似表格的格式表示出来,供用户使用。

REST的许多核心工作似乎只是正确地获取HTTP状态码,并在适当的地方使用GET和POST。一旦您创建了将数据放入备用模板的能力,即XML数据块而不是HTML,那么您就将原来只是一个Web应用程序的内容转变成了一个Web API。

是的,没错。对于数据库,它把它变成一个数据引擎,我们可以从中提取数据。好的一面是,对于那些站在开发一边,坐在那里想要提取数据的人来说,Web站点通常提供数据是最符合他们利益的。所以这些网站都有这些api并且不断地扩展它们。因此,每天都有越来越多的数据环境可供数据库使用。

亚马逊不仅仅提供存储服务。他们有另一个Web API,提供计算能力。

是的,“弹性计算云”——记住EC2更容易。是的,这是另一种环境。他们所做的就是把我们从20世纪70年代就开始听的时间共享的理念变得非常实用。你可以说,如果我需要更多的计算能力,如果我需要更多的数据库,因为我有这么多的数据需要读取,我有这么多协调的应用程序,你可以让MySQL在AMI上运行Linux和MySQL,把它扔到EC2云中,当你需要更多的计算节点时,你可以请求更多的计算节点。只要你需要,你就可以一直使用这些计算节点。

这对软件构建和测试有什么影响呢?这听起来像是获得按需编译场或机器场来运行所有测试的好方法。

完全正确。对于我们这些在行业中构建和测试软件的人来说,这是完全有意义的。因此,与其在我们自己的基础架构上构建,不如让我们在需要ami来测试我们自己的软件时使用它们。但你会看到整个行业都在复制。你会看到石油公司在进行勘探计算。你可以看到电影公司在渲染它。所以,对于数据库世界的我们来说,当我们有更多用于分析的数据库时,这是非常好的。你可以取越来越多的分析节点,让它们可用。S3引擎与EC2结合的问题是,在EC2和S3之间传输数据的成本不存在。因此,如果在EC2中运行MySQL节点,而后端在S3中存储数据,那么就有了一个无需为带宽付费的存储基础设施。 And yet you still have access to all that data for analytics.

您还看到公司将软件转移到这种基础架构的其他机会吗?

看看1995年建立一个网站的成本。今天建立一个网站要花多少钱?当我们在做Slashdot的时候,我们必须做的一件事就是继续提供更多的网络节点。如果我们遇到流量激增的情况,我们就必须让更多的节点启动并运行,所以通常情况下,我们可能会有三分之一的硬件处于闲置状态,以应对持续的流量激增。好的一点是,如果您正在构建一个现代的Web应用程序,实际上您可以在EC2云中构建它。您可以让数据库在其中运行,Web服务器可以彼此通信。随着流量负载的增加,可以为前端应用程序引入更多ami服务器准备好出发。

我认为这非常令人兴奋,因为保持基础设施的成本相当昂贵。我们变得非常聪明虚拟化.这就是为什么你会在公司内部看到虚拟化;这就是为什么现在在Linux内核、Xen以及Parallels、当然还有VMware的商业版本中,KVM已经完成了这么多工作。

在你们公司的内部发展中,我知道你们使用BitKeeper。你是否遵循其他的修订控制系统?

我们经常跟踪他们。这可能是我们最喜欢的内部辩论话题之一。BitKeeper是一个很棒的工具。Larry McVoy用它的设计解决了一个问题,它真正改变了版本控制,让人们对版本控制有了不同的看法。有趣的是,当人们采用相同的方法并试图利用它时,开源世界正在发生什么。

在我们今天看来,BitKeeper仍然是最强大的玩家,比目前的三家竞争者Bazaar-NG、Mercurial和Git更强大。Git是最近才出现的。他们还没到那个地步。看看谁能首先超越谁是一件有趣的事情。Larry和BitKeeper能继续超越开源的人吗?或者开源的人会拒绝他吗?观察起来很有趣。但我认为,这最终会让市场上所有不同的产品变得更好,因为它们都必须相互竞争。

那么,你的内部开发模型是否包含了大量不相关的开发和主要的同步?

当然可以。我们在32个国家都有开发者。我们是一家现代的分布式公司,正在进行分布式开发。要想让一个cvs式的环境为我们工作,而不只是减慢我们的速度,是不可能的。

分布式开发,即组能够在本地进行提交,修改提交,然后在开发人员集合之间同步提交,然后将其传递给上游的能力,这是我们如何进行开发的核心和关键。如果没有这种能力,我们就无法高效或快速地进行开发。

org最近转移到了Git,但是他们使用Git的方式比Linux开发人员使用它的方式简单得多。

看看哪些小组采用了哪些源代码控制系统,以及他们是如何使用这些系统的,这是一件很有趣的事情。我的意思是,任何系统,甚至Git, BitKeeper,或者任何你想要的,都可以以一种简化的方式使用。但是,这种灵活的提交补丁和共享补丁的能力,确实允许小组以他们想要的方式工作。

而且,它比基于服务器的设置要快得多。

是的。如果你看看不同的模型,BitKeeper有一个SSH模型,这对那些有服务器设置的人来说真的很好。我认为Mercurial的强大优势之一是,它在早期使用了HTTPS模型进行提交。它还有SSH。例如,你可以设置一个公共Apache服务器,并在其中添加一个CGI。然后,它可以处理自己是存储库组中的一个节点。我认为这是他们做的一个非常有趣的创新。但如果您在一家公司工作,那么SSH可能更适合您。如果您在一个非常大的分布式环境中工作,也许HTTPS是一个更好的方法。

在您最近的博客上,您发表了一篇相当长的关于开源软件的经济动机的文章。你提到社区开源和商业开源之间没有什么区别。很多专家似乎都在说有很大的不同。

嗯,我认为你必须首先看看为什么某些东西是开源的动机是什么。到底是什么原因呢?开发者这样做是为了分享。公司也有同样的原因。现在开发者对分享感兴趣的原因可能是这对他们的职业生涯有好处。他们得到了更多的认可。他们更有可能被雇佣。这可能是因为他们对做更多的测试感兴趣。在公司方面,你可以看到同样的情况。他们感兴趣的是推出产品,创造更大的渠道。 So, the motivational factors are the same.

12 第1页
第1页共2页
工资调查:结果在