难圆满的SQL Server 2017Linux梦

难圆满的SQL Server 2017Linux梦

最近数据库领域大事不断。继Oracle OpenWorld由70多岁的CTO Larry宣告着DBA们的下岗之后,微软又发布了SQL Server 2017。

SQL Server无疑是微软在数据库领域最为成功的产品。在关系数据库发展史上也可以写下浓重的一笔。SQL Server 2017主打的东西很多,但是最重要的是Linux的支持。那么今天我们就来看看这个SQL Server的Linux支持到底意味着什么。

为了说明白这个故事,我们需要讲一段历史。早年微软和Sybase合作,Sybase主开发微软主测试,一起把Sybase的数据库移植到OS2上来。后来还加入了Asthon-Tate这个曾经桌面数据库的王者一起合作。当然Ashthon-Tate自从卖给Borland,又被Borland剥离,然后Borland自己也挂掉了。这是另外一段历史。和今天的主题无关,就不展开了。

Sybase和微软的合作随着Windows NT的进展和OS2的垮台结束了。当时Sybase希望继续开发通用数据库,而微软则觉得利用NT这个操作系统的新特性开发一款专门为NT操作系统定制的数据库才能够在未来的战争里面继往开来。

这场分歧导致分道扬镳。这场分歧也导致了微软历史上一次大规模全国范围内的挖数据库专业人才。几乎很多后来在SQL Server里赫赫有名的人,都是那个时候从各地给挖过来的。其中也包括了现在也不知道是死是活的图灵奖得主Jim Gray。

我讲这段历史,并非是为了讲历史。我是想告诉大家当年SQL Server开发的一个大前提。SQL Server是一款充分利用了NT操作系统特性开发的数据库系统。

开发的团队当时依然遇到了很多问题。所以在SQL Server的核心代码和NT操作系统之间有一层SQL OS层。这一层主要是从操作系统接管了很多资源,比如内存,磁盘,CPU。然后由这一层给上层的数据库提供服务。所以大家可以认为是OS的增强层。

那么如此庞大的一个数据库代码,是怎么样实现在Linux上运行的呢?我想从头写起肯定是不切实际的。据公布的信息来看,我们首先要提一个叫做DrawBridge的东西。这个微软研究院的东西,我就贴一下它们的原文:

Drawbridge is a research prototype of a new form of virtualization for application sandboxing. Drawbridge combines two core technologies: First, a picoprocess, which is a process-based isolation container with a minimal kernel API surface. Second, a library OS, which is a version of Windows enlightened to run efficiently within a picoprocess.

关键的在于微软研究院的Library OS,这个东西实现了很多NT的常见API。这样一来只需要把这个东西在Linux下用gcc或者clang编译一下。然后再把SQL Server的OS层和这个DrawBridge接起来。基本上其他的SQL Server代码就不需要做太多改动了。

我相信实际的工程上,肯定要复杂不少,对于SQL Server的OS层和这个DrawBridge都需要额外的加工。后者主要是基于两个原因:

  1. 微软研究院的人开发的东西,多半属于原型系统,到商业可用对稳定性和bug的要求上都要高很多。
  2. 谁也不知道这个Library OS是不是涵盖了所有SQL OS需要的Windows NT的API。

那么知道SQL Server是怎么样在Linux上跑起来的,自然也可以做一些直观的判断。最基本的,可以call那些API可以编译代码,不代表就能够得到和NT系统下一样的性能。

SQL Server这个为NT深度定制的系统,它所具有的各种性能上的优势,都离不开这种定制。我很容易相信通过这个Library OS和Linux系统对接以后,SQL Server的功能上是没问题的。但是我很难相信性能上会是没问题的。

我主要做数据库的上层为主,对存储调度之类的知识其实挺有限。但是我也多少有过Windows下面Memory Mapped File的读写性能和特性和Linux上的表现得很不一样的经历。无所谓哪个比哪个更优,因为不同场景下不一样。但是肯定是不一样的。基于这些考虑,我相信这个方式得到的SQLServer for Linux,估计是功能问题不大,性能问题很大的产品。这还不是重点,更重要的是,基于了现在这样的一个方式开发的SQL Server,很可能以后想要进一步提高Linux的性能也不是一件容易的事情。

至于SQL Server2017本身会怎么样。我只能说,在微软里面做SQL Server的大牛们大多跑路了。这是为什么亚马逊的数据库如火如荼,谷歌的数据库越来越牛,阿里巴巴也挖了几个大牛。而一个产品是需要牛人的。以现在SQL Server的人才储备,即使微软家大业大,我也只能说这个2017版我没有期待。

换个角度看,被对手狠狠怼的肯定是成功的。君不见Oracle的Larry在OpenWorld上咄咄逼人的喷的是亚马逊么?曾几何时,Oracle真的把微软当成个对手了?时至今日,只有三俩歪瓜裂枣外加几个老牛的SQL Server,只能说是廉颇老矣,能不能吃饭我也不知道了。

无论如何,我觉得SQL Server 2017可能还是会有几个功能让人眼前一亮的。毕竟还有一些牛人在那里。但是作为一个产品的整体来看,恐怕就很可能是一个非常平庸的,再也不可能有像以前那样一个版本出来让人亮瞎眼的感觉了。一家之言,仅供参考。

原文发布于微信公众号 - 飞总聊IT(feiitworld)

原文发表时间:2017-10-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏带你撸出一手好代码

到底该不该使用存储过程

看到《阿里巴巴java编码规范》有这样一条 ? 关于这条规范,我说说我个人的看法 我觉得用不用存储过程要视所使用的数据库和业务场景而定的,不能因为阿里巴巴的技术...

4309
来自专栏PHP在线

8 个不得不说的 MySQL 陷阱

Mysql安装简单,速度较快,功能丰富。另外它还是开源运动的标杆,它的伟大成就向我们展示了一个成功的公司是可以建立在开源代码之上的。 然而用过mysql的人都曾...

3745
来自专栏京东技术

多数据模型数据库 | 应用实例解析

吕信,京东商城技术架构部资深架构师,拥有多年数据产品研发及架构经验。在京东及国内主导过多种数据产品的开发及社区建设,积极活跃于数据产品领域,对数据库及大数据领域...

1741
来自专栏杨建荣的学习笔记

自动化平台开发小结(四)

今天对备份恢复和元数据的功能点进行了改进,突然发现需要做的事情远比想象的要多。 技术方面,目前Django的框架使用开始有一些需求的瓶颈了,因为有些需求从业务的...

3785
来自专栏Python专栏

从《红色警戒:复兴》论MongoDB设计模式的重要性

1574
来自专栏杨建荣的学习笔记

关于大数据和数据库的讨论(r5笔记第30天)

前几天上了水木社区,发现还是有大牛的,看了关于大数据和数据库的讨论,还是蛮有意思的,限于篇幅和版面,我做了部分的提取和整理。 先看看这位人士的分析,对于行业的现...

4696
来自专栏玉树芝兰

如何用正确的姿势发微信群通知?

人数众多的微信群里,你如何管理通知发放进度?想不想使用更高效的办法发通知?本文推荐给你一款小程序,帮助你轻松搞定微信群通知。

1541
来自专栏carven

实习中结

开始实习至今也有差不多有个月了(实际工作时间是一个多月),见识了很多新的事物,学到很多新的知识。公司搬到了T.I.T创意园。。。 等等,很多感觉是自己一个人在学...

790
来自专栏前端儿

2016校招内推 -- 阿里巴巴前端 -- 四面面试经历

其实也没什么可说的,一面主要问基础,二面才进入项目实习之类的探讨,三面两者都有吧但还是综合多一点

1142
来自专栏跨界架构师

如何一步一步用DDD设计一个电商网站(二)—— 项目架构

    上一篇我们讲了DDD的核心概念(附上链接),并且设计了我们的上下文映射图,那么接下来就准备开始立项了,本篇文章的部分知识点可能对一部分人来说比较基础,可...

3811

扫码关注云+社区

领取腾讯云代金券