自微软在2015年5月***周召开的“微软Ignite大会”上宣布推出SQL Server 2016后,有关SQL Server 2016的话题就备受关注和热议。以下为我们认为最值得关注的10大特性,特整理以飨读者。
全程加密技术(Always Encrypted)
全程加密技术(Always Encrypted)支持在SQL Server中保持数据加密,只有调用SQL Server的应用才能访问加密数据。该功能支持客户端应用所有者控制保密数据,指定哪些人有权限访问。SQL Server 2016通过验证加密密钥实现了对客户端应用的控制。该加密密钥永远不会传递给SQL Server。使用该功能,你可以避免数据库或者操作系统管理员接触客户应用程序敏感数据(包括静态数据和动态数据)。该功能现在支持敏感数据存储在云端管理数据库中,并且永远保持加密。即便是云供应商也看不到数据,你晚上可以睡安稳觉了。
动态数据屏蔽(Dynamic Data Masking)
如果你对保护数据感兴趣,希望一部分人可以看到加密数据,而另一些人只能看到加密数据混淆后的乱码,那么你一定会对动态数据屏蔽感兴趣。利用动态数据屏蔽功能,你可以将SQL Server数据库表中待加密数据列混淆,那些未授权用户看不到这部分数据。利用动态数据屏蔽功能,你还可以定义数据的混淆方式。例如,如果你在表中接收存储信用卡号,但是你希望只看到卡号后四位。使用动态数据屏蔽功能定义屏蔽规则就可以限制未授权用户只能看到信用卡号后四位,而有权限的用户可以看到完整信用卡信息。
JSON支持
JSON就是Java Script Object Notation(轻量级数据交换格式)。在SQL Server 2016中,你现在可以在应用和SQL Server数据库引擎之间用JSON格式交互。微软公司在SQL Server中增加了对JSON的支持,可以解析JSON格式数据然后以关系格式存储。此外,利用对JSON的支持,还可以把关系型数据转换成JSON格式数据。微软公司还增加了一些函数提供对存储在SQL Server中的JSON数据执行查询。SQL Server有了这些内置增强支持JSON操作的函数,应用程序使用JSON数据与SQL Server交互就更容易了。
多TempDB数据库文件
如果你运行的是多核计算机,那么运行多个tempdb数据文件就是***实践做法。以前直到SQL Server 2014版本,你安装SQL Server之后总是不得不手工添加tempdb数据文件。在SQL Server 2016中,你现在可以在安装SQL Server的时候直接配置需要的tempdb文件数量。这样你就不再需要安装完成之后再手工添加tempdb文件了。
PolyBase
PolyBase支持查询分布式数据集。有了PolyBase,你可以使用Transact SQL语句查询Hadoop或者SQL Azure blob存储。你现在可以使用PolyBase写临时查询,实现SQL Server关系型数据与Hadoop或者SQL Azure blog存储中的半结构化数据之间的关联查询。此外,你还可以利用SQL Server的动态列存储索引针对半结构化数据来优化查询。如果组织跨多个分布式位置传递数据,PolyBase就成了利用SQL Server技术访问这些位置的半结构化数据的便捷解决方案了。
Query Store
如果你经常使用执行计划,你就会喜欢新版的Query Store功能。在2016之前的版本中,你可以使用动态管理试图(DMV)来查看现有执行计划。但是,DMV只支持你查看计划缓存中当前活跃的计划。如果出了计划缓存,你看不到计划的历史情况。有了Query Store功能,SQL现在可以保存历史执行计划。不仅如此,该功能还可以保存那些历史计划的查询统计。这是一个很好的补充功能,你可以利用该功能随着时间推移跟踪执行计划的性能。
行级安全(Row Level Security)
SQL数据库引擎具备了行级安全特性以后,就可以根据SQL Server登录权限限制对行数据的访问。限制行是通过内联表值函数过滤谓词定义实现的。安全策略将确***滤器谓词获取每次“SELECT”或者 “DELETE”操作的执行。在数据库层面实现行级安全意味着应用程序开发人员不再需要维护代码限制某些登录或者允许某些登录访问所有数据。有了这一功能,用户在查询包含行级安全设置的表时,他们甚至不知道他们查询的数据是已经过滤后的部分数据。
SQL SERVER支持R语言
微软公司收购Revolution Analytics公司之后,现在可以在SQL Server上针对大数据使用R语言做高级分析功能了。SQL Server支持R语言处理以后,数据科学家们可以直接利用现有的R代码并在SQL Server数据库引擎上运行。这样我们就不用为了执行R语言处理数据而把SQL Server数据导出来处理。该功能把R语言处理带给了数据。
(译注:Revolution Analytics公司是耶鲁大学的派生公司,成立于2007年,是一家基于开源项目R语言做计算机软件和服务的供应商。该公司去年被微软收购。)
Stretch Database
Stretch Database功能提供了把内部部署数据库扩展到Azure SQL 数据库的途径。有了Stretch Database功能,访问频率***的数据会存储在内部数据库,而访问较少的数据会离线存储在Azure SQL 数据库中。当你设置数据库为“stretch“时,那些比较过时的数据就会在后台迁移到Azure SQL数据库。如果你需要运行查询同时访问活跃数据和stretched数据库中的历史信息,数据库引擎会将内部数据库和Azure SQL数据库无缝对接,查询会返回你要的结果,就像在同一个数据源一样。该功能使得DBA工作更容易了,他们可以归档历史信息转到更廉价的存储介质,无需修改当前实际应用代码。这样你就可以把常用的内部数据库查询保持***性能状态。
历史表(Temporal Table)
历史表会在基表中保存数据的旧版本信息。有了历史表功能,SQL Server会在每次基表有行更新时自动管理迁移旧的数据版本到历史表中。历史表在物理上是与基表独立的另一个表,但是与基表是有关联关系的。如果你已经构建或者计划构建自己的方法来管理行数据版本,那么你应该先看看SQL Server 2016中新提供的历史表功能,然后再决定是否需要自行构建解决方案。
更多SQL Server 2016参考信息
下面是一些其它资源,你可以参考了解更多关于SQL Server 2016的信息。
总结
SQL Server 2016有许多新特性。一些特性是对现有功能的增强,还有一些是全新的功能。本文我们只是介绍了这些新功能的一小部分。如果您亲自体验一下SQL Server 2016,就会真正了解那些新功能给你的SQL Server带来的价值。