1.1 SQL Server 2016的新功能
SQL Server 2016基于SQL Server 2014,其提供了一个全面的、灵活的和可扩展的数据仓库管理平台,可以满足成千上万的用户的海量数据管理需求,能够快速构建相应的解决方案实现私有云与公有云之间数据的扩展与应用的迁移。作为微软的信息平台解决方案,SQL Server 2016的发布,可以帮助数以千计的企业用户突破性地快速实现各种数据体验,完全释放对企业的洞察力。
和SQL Server 2014相比,SQL Server 2016具有以下优势。
1.全程加密技术
全程加密技术(Always Encrypted)支持在SQL Server中保持数据加密,只有调用SQL Server的应用才能访问加密数据。该功能支持客户端应用所有者控制保密数据,指定哪些人有权限访问。SQL Server 2016通过验证加密密钥实现了对客户端应用的控制,该加密密钥永远不会传递给SQL Server。使用该功能,可以避免数据库或者操作系统管理员接触客户应用程序敏感数据。该功能现在支持敏感数据存储在云端管理数据库中,并且永远保持加密,即便是云供应商也看不到加密数据。
2.动态数据屏蔽
如果某些数据只让一部分人看到,而一部分人只能看到加密数据混淆后的乱码,此时可以使用动态数据屏蔽(Dynamic Data Masking)功能。利用该功能可以将SQL Server数据库表中待加密数据列混淆,那些未授权用户看不到这部分数据。利用动态数据屏蔽功能,还可以定义数据的混淆方式。例如,如果在数据表中接收存储用户的身份证号,如果只希望看到后4位。使用动态数据屏蔽功能定义屏蔽规则就可以限制未授权用户只能看到身份证号的后4位。
3.支持JSON
JSON(Java Script Object Notation,JS对象标记)是一种轻量级的数据交换格式。在SQL Server 2016中,可以在应用和SQL Server数据库引擎之间用JSON格式交互。微软公司在SQL Server 2016中增加了对JSON的支持,可以解析JSON格式数据,然后以关系格式存储。此外,利用对JSON的支持,还可以把关系型数据转换成JSON格式数据。微软公司还增加了一些函数提供对存储在SQL Server 2016中的JSON数据执行查询。SQL Server有了这些内置增强支持JSON操作的函数,应用程序使用JSON数据与SQL Server交互就更容易了。
4.多tempdb数据库文件
在多核计算机中,运行多个tempdb数据文件就是最佳实践做法。在SQL Server 2014版本,安装SQL Server之后总是不得不手工添加tempdb数据文件。在SQL Server 2016中,用户可以在安装SQL Server的时候直接配置需要的tempdb文件数量。这样就不再需要安装完成之后再手工添加tempdb文件了。
5.PolyBase
PolyBase支持查询分布式数据集。有了PolyBase,用户可以使用Transact SQL语句查询Hadoop或者SQL Azure blob存储;也可以使用PolyBase写临时查询,实现SQL Server关系型数据与Hadoop或者SQL Azure blog存储中的半结构化数据之间的关联查询。此外,还可以利用SQL Server的动态列存储索引针对半结构化数据来优化查询。如果组织跨多个分布式位置传递数据,PolyBase就成了利用SQL Server技术访问这些位置的半结构化数据的便捷解决方案了。
6.Query Store
在SQL Server 2016之前的版本中,查看现有执行计划都是使用动态管理视图(DMV)。但是DMV只支持用户查看计划缓存中当前活跃的计划,如果出了计划缓存,用户将看不到计划的历史情况。
SQL Server 2016提供的Query Store功能不仅可以保存历史执行计划,还可以保存历史计划的查询统计。利用该功能,用户可以通过时间的推移跟踪执行计划的性能。
7.行级安全
SQL Server 2016提供了行级安全(Row Level Security)功能。通过该功能,可以根据SQL Server登录权限限制对行数据的访问。限制行是通过内联表值函数过滤谓词定义实现的。安全策略将确保过滤器谓词获取每次“SELECT”或者“DELETE”操作的执行。在数据库层面实现行级安全意味着应用程序开发人员不再需要维护代码限制某些登录或者允许某些登录访问所有数据。有了这一功能,用户在查询包含行级安全设置的表时,他们甚至不知道他们查询的数据是已经过滤后的部分数据。
8.支持R语言
微软公司收购Revolution Analytics公司之后,现在可以在SQL Server上针对大数据使用R语言做高级分析功能了。SQL Server支持R语言处理以后,数据科学家们可以直接利用现有的R代码并在SQL Server数据库引擎上运行。这样用户就不用为了执行R语言处理数据而把SQL Server数据导出来处理。
9.Stretch Database功能
Stretch Database功能提供了把内部部署数据库扩展到Azure SQL数据库的途径。有了Stretch Database功能,访问频率最高的数据会存储在内部数据库,而访问较少的数据会离线存储在Azure SQL数据库中。
当用户设置数据库为“stretch“时,那些比较过时的数据就会在后台迁移到Azure SQL数据库。如果需要运行查询同时访问活跃数据和stretched数据库中的历史信息,数据库引擎会将内部数据库和Azure SQL数据库无缝对接,查询会返回需要的结果,就像在同一个数据源一样。该功能使得数据库管理员的工作更容易了,他们可以归档历史信息转到更廉价的存储介质,无须修改当前实际应用代码。这样就可以把常用的内部数据库查询保持最佳性能状态。
10.历史表
历史表(Temporal Table)会在基表中保存数据的旧版本信息。有了历史表功能,SQL Server 2016会在每次基表有行更新时自动管理迁移旧的数据版本到历史表中。历史表在物理上是与基表独立的另一个表,但是与基表是有关联关系的。如果用户已经构建或者计划构建自己的方法来管理行数据版本,那么应该先看看SQL Server 2016中新提供的历史表功能,然后再决定是否需要自行构建解决方案。