MSSQL - 架构分析 - 从SQL Server 2017发布看SQL Server架构的演变

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介: --- title: MSSQL - 架构分析 - 从SQL Server 2017发布看SQL Server架构的演变 author: 风移 --- # 摘要 美国时间2017年10月2日,微软正式发布了最新一代可以运行在Linux平台的数据库SQL Server 2017。SQL Server 2017给用户带来了一系列的新功能特性的同时,也体现了微软关于自家关系型数据库平台建设

title: MSSQL - 架构分析 - 从SQL Server 2017发布看SQL Server架构的演变

author: 风移

摘要

美国时间2017年10月2日,微软正式发布了最新一代可以运行在Linux平台的数据库SQL Server 2017。SQL Server 2017给用户带来了一系列的新功能特性的同时,也体现了微软关于自家关系型数据库平台建设方面的最新设计与思考。这篇文章旨在介绍SQL Server 2017新特性,以及微软是如何从架构层面的演进来快速实现Linux平台的SQL Server 2017产品。

SQL Server 2017发布

早在2016年,当微软宣布SQL Server将很快在Linux上运行时,这一消息对用户、权威人士以及SQL Server从业者来说都是一个巨大的惊喜。果然,微软不负众望,在美国时间2017年10月2日,正式发布了最新一代可以运行在Linux平台的数据库SQL Server 2017。近年来随着各类NoSQL数据库产品和Hadoop生态的出现与流行,给了传统关系型数据库(RDBMS)带来了巨大的挑战。从微软提供Linux版SQL Server这件事情,我们可以诡探出微软大的战略转型:变得更加开放、包容和拥抱变化,而不是像以前一样与自家的微软系列生态系统紧密的捆绑在一起。微软的这种良性转变,对用户和SQL Server数据库从业者来说也是巨大的福音。因此,可以说SQL Server与Linux相爱了,SQL Server 2017就是他们爱的结晶。
01.png

SQL Server 2017新特性简介

微软对于新一代数据库产品SQL Server 2017的发布,植入了非常多的新特性和看点,重要包括:
对Linux平台的支持:当然最大的特性是对Linux平台的支持。
对容器类产品Docker的支持:对容器类产品的支持。
内置图数据库:将图数据库功能内置到SQL Server引擎中。
内置机器学习功能:对Python语言的支持,大大扩展了机器学习功能特性。
自适应查询处理:全新的Batch Model查询语句执行方式,边执行便优化。

支持Linux平台

SQL Server 2017对Linux平台的支持,是它最大的看点和进步,说明微软拥抱变化的决心初现成果。SQL Server 2017支持的Linux平台包括:
RedHat Enterprise Linux (RHEL)
SUSE Enterprise Linux (SLES)
Ubuntu
02.png

支持容器化

SQL Server 2017除了支持这些常见的开源Linux平台外,还支持将SQL Server服务跑在容器中,这一点对于需要将SQL Server服务进行容器化管理的用户来讲,非常便利。SQL Server支持的容器产品包括:
Windows Container:微软自家亲儿子,是不遗余力的毫无疑问支持。
Linux Docker:目前最为火爆的容器技术,当然也是支持的。
03.png

内置图数据库

SQL Server 2017中内置了关于图数据的查询功能,使得图数据的查询变得简单而高效。
04.png

内置机器学习

SQL Server 2017中提供了R语言和Python语言的支持,用户可以利用列存技术和内存优化表存储基础数据,然后利用Python语言本身关于机器学习的天然优势,来实现深置于数据库系统内部的机器学习,实时分析,及时决策的目的。
05.png

自适应查询处理

针对于SQL Server Batch Model Processing查询语句,SQL Server 2017引入了自适应查询处理机制,使得查询更加高效。简单的讲就是一边处理查询一边进行优化的策略,而不是传统的根据统计信息首先生成执行计划。这样可以应对很多因为统计信息过时或者统计信息片面导致的执行计划不准确的,而影响查询性能的场景。
06.png

SQL Server架构演进

按照以往微软对SQL Server数据库产品的发布节奏,一般情况下是两年一个大版本更新迭代,比如SQL Server 2012,2014和2016。但是,SQL Server 2017的发布仅仅只用了一年时间,而且实现了Linux版本SQL Server的巨大转变,并且所有功能和Windows版本对齐。很多用户和从业者对这一点都非常好奇,微软到底是如何做到这一点的?要回答这个问题,我们从SQL Server底层的架构演进来分析这个问题的答案。总结来看,到SQL Server 2017的出现,微软对数据库底层架构的演进经历了以下几个阶段:
使用Windows对SQL Server系统进行资源管理:这个阶段没有一个特定的名称叫法,这个阶段的SQL Server服务无法突破Windows内核对资源的限制。
SQL OS阶段:为了使得SQL Server数据库拥有更好的性能,SQL OS(也叫SOS)出现了。
Drawbridge的出现:研究性项目,用于实现应用的沙盒(Sandbox),最开始不是为SQL Server专门设计的,但在SQL Server 2017中扮演中非常重要的角色。
SQL PAL的出现:SQL Server 2017整合了SQL OS和Drawbridge,进行底层封装,形成了SQL PAL层。

SQL Server 2005之前

追述到SQL Server 2005版本之前(SQL Server 2000及更早版本),SQL Server服务是以一个用户态进程运行在Windows操作系统中,这个服务进程与其他普通的进程没有任何差异,它依赖于操作系统内核对底层硬件资源进行管理和交互,SQL Server服务本身没有对系统资源的管理能力。具体的架构图大致如下所示:
07.png

这个架构最大的缺点是SQL Server服务本身无法突破Windows内核对系统资源使用的限制,换话句话说SQL Server无法榨干系统硬件资源,加之缺乏对操作系统资源的控制能力,只能依赖于操作系统内核对底层硬件资源进行调度,因此SQL Server服务很难最大限度充分利用系统所有硬件资源,阻碍了SQL Server系统性能的进一步提升。

SQL OS

为了解决上面的问题和获取更好的性能,微软花了很大的力气来抽象一个中间层对系统硬件资源进行调度和管理,并发布在SQL Server 2005版本中,也因此SQL Server 2005版本经历了长达5年的时间才得以面世。这个对硬件资源进行集中调度和管理的中间层叫着SQL OS(也叫着SOS)。SQL OS的主要职责包括:Processor Scheduling,Memory Management,Network,Disk I/O使得SQL Server性能最大化(可以使得SQL Server用户进程最大限度的充分利用操作系统硬件资源)。SQL Server 2005引入了SQL OS后的底层架构图如下所示:
08.png

SQL Server 2005赋予了SQL OS非常全面的资源管理功能,涉及到数据库系统核心功能的方方面面,具体包括:
Deadlock Monitor:死锁监控
Resource Monitor:资源监控
Lazy Writer:延迟写,将随机I/O写,转化为顺序I/O写
Scheduler Monitor:调度器监控
Buffer Pool:缓存池
Memory Manager:内存管理
Scheduling:调度
Synchronization Service:同步服务
Lock Manager:锁管理器
I/O:I/O资源管理
详细架构如下图SQLOS API部分所示:
09.png

有了SQL OS层次的抽象,得以在数据库内部实现对系统资源的集中管理,摆脱系统内核对SQL Server资源使用的限制,使得SQL Server服务队系统资源有了很强的控制能力,SQL Server 2005性能有了大幅的提升,成了微软关系型数据库历史上划时代的版本,也为SQL Server 2017能够提供跨平台能力提供了可能性,可以毫不夸张的说,没有SQL OS的出现,微软不可能在如此短的时间内实现Linux版的SQL Server。

Drawbridge

微软研究院在2011年9月建立了一个全新的研究性项目,名称叫Drawbridge,目的是提供应用程序新的虚拟化资源隔离解决方案,减少虚拟资源的使用,使得在同一个硬件主机上,可以运行更多的虚拟机(类似于Docker产品对硬件资源的管理)。Drawbridge其中一个非常重要的组件Library OS仅依靠约50个底层内核应用二进制接口(ABI:Application Binary Interface)实现了一千多个常用的Windows API,同时还具备了为其他组件提供宿主的能力,比如:MSXML和CLR等组件。 在Windows 10版本中存在着Drawbridge的大量应用。
10.png

SQL PAL

SQL Server数据库团队基于Drawbridge项目与SQL OS两者进行了必要的重写和充分的融合,形成了新一代数据库底层抽象和封装,叫SQL PAL (Platform Abstract Layer),同时将上层逻辑代码移植到SQL PAL之上。如此,微软只需要确保SQL PAL层可以在Windows平台和Linux平台运行良好即可。这样SQL Server即使运行在Linux平台,也无需修改SQL Server本身的代码,SQL Server自己本身与平台无关。能做到这一点完全是由Drawbridge中的ABI(Application Binary Interface)来达到目的的,这些ABI我们叫着Host Extension,所以为了支持SQL Server 2017的跨平台特性,微软只需要实现基于Windows平台的Host Extension和Linux平台的Host Extension,这样做最大的好处是:
大大缩短开发周期:微软无需对SQL Server本身做任何的代码修改就可以将SQL Server移植到Linux平台。
产品功能一贯性:对SQL Server新功能、新特性的支持,无需对两个平台进行重复开发,Windows平台支持了,Linux平台也就支持了,保持了产品功能的一致性。
良好的后期维护性:假如SQL Server存在某个Bug,只需要修复SQL Server本身,那么Windows平台,Linux平台上相应的Bug也同样被修复掉了,具备良好的可维护性。
11.png

以上架构图是比较宏观的层面展示,以下是SQL PAL功能更为详细的描述架构图:
12.png

从这张图,我们可以清晰的看到SQL PAL层次对于Host Extension的调用,以及构建在这层次之上的SQL Server服务,包括:数据库引擎、集成服务、分析服务和报表服务。

SQL PAL性能影响

提到SQL PAL对SQL Server 2017数据库服务的影响,很多用户最为担忧的应该就是性能的影响了。请不要担心,根据TPC-H测试来看,SQL Server 2017相对于SQL Server 2016来看,性能不但没有任何损失,反而性能不降反升。

TPC-H性能测试

从TPC-H测试数据总结来看,相对于SQL Server 2016来看,不论是性能和性价比,都有小幅提升,如下截图:
13.png

附带TPC官网公布的性能数据截图:
14.png

微软内部测试

以下展示微软内部测试实例,在拥有一台12 TB内存,480个逻辑CPUs的机器上,处理30 TB,2500亿条数据的8个字段的3种类型复杂统计汇总查询,耗时仅用18秒。由此可见,性能还是相当强劲的,截图留恋:
15.png

总结

本篇文章介绍了SQL Server 2017支持Linux平台,支持容器化,内置图数据库,内置机器学习和自适应查询处理的功能新特性;同时从底层架构演进的层面分析了微软能够在短时间内实现Linux版SQL Server 2017的根本原因是SQL PAL架构中间层的出现,而SQL PAL是站在SQL OS和Drawbridge的肩膀之上的。由此可见,微软对SQL Server支持Linux平台在SQL Server 2005版本中已经开始布局,应该说还是非常具有远见的。

备注

[1]:图片来自于微软Lindsey Allen的培训“SQL Server 2017 - Power your entire data estate from on-premises to cloud”截图。
[2]:图片来自于吴晓晨在云栖大会上关于“SQL Server 2017”的分享。
[3]:图片来自于“Everything you need to know about SQL Server 2017”截图。
[4]:截图来自于《Inside Microsoft SQL Server 2005_ The Storage Engine, 2005 Edition》Components of the SQL Server Engine章节。

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
5天前
|
SQL 运维 BI
湖仓分析|浙江霖梓基于 Doris + Paimon 打造实时/离线一体化湖仓架构
浙江霖梓早期基于 Apache Doris 进行整体架构与表结构的重构,并基于湖仓一体和查询加速展开深度探索与实践,打造了 Doris + Paimon 的实时/离线一体化湖仓架构,实现查询提速 30 倍、资源成本节省 67% 等显著成效。
湖仓分析|浙江霖梓基于 Doris + Paimon 打造实时/离线一体化湖仓架构
|
20天前
|
机器学习/深度学习 安全 算法
十大主流联邦学习框架:技术特性、架构分析与对比研究
联邦学习(FL)是保障数据隐私的分布式模型训练关键技术。业界开发了多种开源和商业框架,如TensorFlow Federated、PySyft、NVFlare、FATE、Flower等,支持模型训练、数据安全、通信协议等功能。这些框架在灵活性、易用性、安全性和扩展性方面各有特色,适用于不同应用场景。选择合适的框架需综合考虑开源与商业、数据分区支持、安全性、易用性和技术生态集成等因素。联邦学习已在医疗、金融等领域广泛应用,选择适配具体需求的框架对实现最优模型性能至关重要。
278 79
十大主流联邦学习框架:技术特性、架构分析与对比研究
|
25天前
|
SQL 存储 开发框架
ASPX+MSSQL注如;SQL盲注
在ASPX与MSSQL环境下,SQL注入和SQL盲注是常见且危险的攻击方式。通过参数化查询、输入验证、最小权限原则以及使用WAF等防御措施,可以有效防止此类攻击的发生。了解和掌握这些技术,对于提升应用程序的安全性至关重要。希望本文能为您提供有价值的信息和指导。
40 23
|
1月前
|
测试技术 双11 开发者
一文分析架构思维之建模思维
软件里的要素不是凭空出现的,都是源于实际的业务。本文从软件设计本源到建模案例系统的介绍了作者对于建模的思维和思考。
|
2月前
|
机器学习/深度学习 存储 人工智能
基于AI的实时监控系统:技术架构与挑战分析
AI视频监控系统利用计算机视觉和深度学习技术,实现实时分析与智能识别,显著提升高风险场所如监狱的安全性。系统架构包括数据采集、预处理、行为分析、实时决策及数据存储层,涵盖高分辨率视频传输、图像增强、目标检测、异常行为识别等关键技术。面对算法优化、实时性和系统集成等挑战,通过数据增强、边缘计算和模块化设计等方法解决。未来,AI技术的进步将进一步提高监控系统的智能化水平和应对复杂安全挑战的能力。
|
3月前
|
存储 SQL Apache
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
Apache Doris 是一个基于 MPP 架构的高性能实时分析数据库,以其极高的速度和易用性著称。它支持高并发点查询和复杂分析场景,适用于报表分析、即席查询、数据仓库和数据湖查询加速等。最新发布的 2.0.2 版本在性能、稳定性和多租户支持方面有显著提升。社区活跃,已广泛应用于电商、广告、用户行为分析等领域。
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
|
3月前
|
运维 NoSQL Java
后端架构演进:微服务架构的优缺点与实战案例分析
【10月更文挑战第28天】本文探讨了微服务架构与单体架构的优缺点,并通过实战案例分析了微服务架构在实际应用中的表现。微服务架构具有高内聚、低耦合、独立部署等优势,但也面临分布式系统的复杂性和较高的运维成本。通过某电商平台的实际案例,展示了微服务架构在提升系统性能和团队协作效率方面的显著效果,同时也指出了其带来的挑战。
120 4
|
4月前
|
存储 SQL 分布式计算
湖仓一体架构深度解析:构建企业级数据管理与分析的新基石
【10月更文挑战第7天】湖仓一体架构深度解析:构建企业级数据管理与分析的新基石
338 1
|
4月前
|
SQL 数据库
执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)之解决方案
执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)之解决方案
693 0
|
5月前
|
存储 监控 安全
SaaS业务架构:业务能力分析
【9月更文挑战第20天】在数字化时代,软件即服务(SaaS)模式逐渐成为企业软件解决方案的首选。SaaS 业务架构设计对于提供高效、可靠的服务至关重要。其核心业务能力包括:用户管理(注册登录、角色权限)、数据管理(存储备份、安全共享)、业务流程管理(设计定制、工作流自动化)、应用集成(第三方应用、移动应用)及客户服务(支持培训、反馈改进)。通过优化这些能力,可为企业提供更高效、可靠的 SaaS 服务。
98 11

热门文章

最新文章