Windows是如何把SQL Server迁移到Linux上的

作者丨Frederic Lardinois

翻译丨Vincent

译者注:你是否平时的工作是用的是Linux操作系统,但公司的重要项目使用的是SQL Server,你曾经是否因此而鲲熬过?现在告诉你个好消息,微软已经在2017版本中,将SQL Server数据库引入到了Linux等开源系统中去了,作者在本文详细介绍了这其中的过程。以下为译文:

早在2016年,当微软宣布SQL Server将很快在Linux上运行时,这一消息对用户和权威人士来说都是一个巨大的惊喜。在过去的一年中,微软对Linux(总之就是开源的操作系统)的支持已经十分重视,公司的使命似乎已经变成了只要哪里有用户,哪里就必须得有SQL Server工具。

微软今天发布了SQL Server 2017的第一个候选版本,这将是第一个在Windows、Linux和Docker容器上运行的版本。仅Docker容器就已经吸引了超过100万的申请,因此毫无疑问,会有很多人对这款新版本非常感兴趣。尽管新版本有很多需要改进的地方,但SQL Server 2017支持Linux仍然是这个版本最重要的突破。

在今天发表声明之前,我与微软的数据库系统组的总经理罗汉·库马尔进行了交谈,了解了这个项目的历史,以及他的团队如何成功地将SQL Server这么复杂的软件给引入到Linux中去的。在微软工作了18年的库马尔指出,他的团队注意到许多企业开始使用SQL Server作为z重要任务的工作负载。但与此同时,这些企业的工作环境也是组合的,包括Windows Server和Linux。对于许多这样的企业来说,无法在Linux上运行他们的数据库成为了一个瓶颈。

“经过企业的谈话,很明显,我们觉得这么做是必要的,”库马尔说,“我们正在强制客户使用Windows作为他们选择的平台。”在微软的另一个化身中,这可能会被视为积极的东西,但该公司今天的战略却大不相同。

库马尔还指出,许多企业都在寻找Oracle数据库产品的替代品。毕竟如果想要运行Linux,并使用具有完全企业支持的专有关系型数据库,那么你可能就不得不选择Oracle了。

正如库马尔告诉我的,这并不是他的团队第一次希望可以支持Linux。他告诉我:“过去我们曾进行过几次讨论,但没有得到批准。”他说:“对于企业来说,这并不是一种战略”。但这已经是三年前的观点了-现在随着萨提亚·纳德拉成为了微软的掌舵人,这个团队决定再次提出这个想法。“我们反反复复的查看反馈消息,”他说:“看到这些决定的速度有多快,真让人感到惊讶。”

位于雷德蒙德一家越南餐馆的照片前,团队最后决定继续推进这个项目。但是,在做出这个决定之后,这个团队现在面临着一项艰巨的任务:如何将数千万条SQL Server代码移植到Linux上?库马尔也不想在功能上做出任何妥协,因此要么必须是SQL Server的全部核心,要么就是什么都不做(目前,这排除了公司在Windows上提供的图形用户界面和工具)。

图0:Windows是如何把SQL Server迁移到Linux上的

该团队在一个已经存在于微软的项目中找到了答案:Drawbridge。Drawbridge是一个在2011年启动的研究项目,它提供了一个容器,它提供了一个小的API表面和一个基础版本的Windows,可以有效地在容器中运行应用程序。这里的想法基本上是建立更好更安全的虚拟机。然后,库操作系统执行应用程序,处理内存管理和其他重要功能,并与底层操作系统集成。

大约两年前,SQL Server团队决定将其作为Linux工作的核心。“领导层表现出了适量的关心,”库马尔评论道,“我的猜测是,鉴于Drawbridge是一个实验性的项目,人们确实对此感到担忧。”但是SQL Server团队接管了Drawbridge代码库,并将其添加到SQL操作系统层中。

在许多方面,这个操作系统层是使这个项目成为可能的原因。由于SQL Server的需求总是超出了Windows和Windows服务器所能提供的,尤其是在内存管理方面,团队已经将许多标准OS特性构建到SQL Server的OS层中。因此,在Drawbridge中,SQL Server也可以管理自己的内存。这方面的工作非常成功,团队不仅在Linux上构建了SQL Server,还将SQL操作系统和它在Drawbridge上所做的工作合并到新的SQL平台抽象层上,这一层现在在Windows和Linux上运行。

因此,SQL Server团队可以从一个单独的代码库工作,并且不必担心代码的运行位置(这包括Microsoft的Azure平台)。

Linux的SQL Server应该在今年晚些时候就可以正式运行了。即使在今天,一些公司已经在生产环境中使用了它,而Linux版本的运行速度和Windows版本一样快(假设硬件一样)。

除了最终将版本发布出来外,库马尔指出,团队将密切关注下一步该做什么。尽管数据库领域的创新仍在继续加速,但并不是所有的微软客户都希望他们的任数据库版本可以做到每年(甚至更快)更新一次。不过,鉴于我们最近看到SQL Server 2016和2017年发布的SQL Server版本,我对SQL Server 2018预览版的发布将充满信息。

余下全文(1/3)
分享这篇文章:

请关注我们:

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注