中国领先的IT技术网站
|
|
创建专栏

难圆满的SQL Server 2017Linux梦

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

作者:徐飞|2017-10-09 15:29

沙龙活动 | 去哪儿、陌陌、ThoughtWorks在自动化运维中的实践!10.28不见不散!


最近数据库领域大事不断。继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可能还是会有几个功能让人眼前一亮的。毕竟还有一些牛人在那里。但是作为一个产品的整体来看,恐怕就很可能是一个非常平庸的,再也不可能有像以前那样一个版本出来让人亮瞎眼的感觉了。一家之言,仅供参考。

【本文为51CTO专栏作者“徐飞”的原创稿件,转载请通过作者微信公众号“飞总聊IT”获取联系和授权】

戳这里,看该作者更多好文

【编辑推荐】

  1. 无知者无谓之王垠的新数据库
  2. 将sqlite3移植到嵌入式Linux开发板M6708上
  3. 外媒速递:Linux管理、分区与故障排查的相关命令汇
  4. 外媒速递:正在推动数据库转变的八大技术趋势
  5. 深度解读 | 阿里云新一代关系型数据库 PolarDB
【责任编辑:武晓燕 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

热门职位+更多

× Python最火的编程语言