Hitchhiker Microsoft SQL Server 2016的指南

本文介绍了微软SQL Server 2016的三个有趣的新功能。

好的,我们仍然在评估SQL Server 2014,但是你现在准备好探索Microsoft SQL Server 2016了吗?疲倦的人不能休息!Community Technology Preview (CTP) 2.2现在可以作为明年发布的公开预览版使用。但不要恐慌!在这篇博客文章中,我将介绍我在研究CTP时发现的最有趣的三个关键新特性。具体来说,我将研究:始终加密、时态数据和拉伸数据库。

微软告诉我们SQL Server 2016版本的三个主题是:

  • 关键任务性能
  • 更深入的数据洞察
  • 超大型云

关键任务性能

选择功能:始终加密-“模仿游戏”

由于我们开始探索基于云的数据选项,因此安全性比以前更重要。从SQL Server 2005开始,Microsoft允许我们在数据库引擎内本地使用列级加密。敏感列可以通过应用程序加密并根据需要解密,提供“端到端”安全选项。选定的列将在磁盘上加密,备份,内存和网络中的备份。但是,列级加密所需的应用程序代码更改为使用EncryptBey和DecryptbyKey等功能。需要对数据库加密密钥和适当的证书可访问,以便加密或解密以成功发生。使用SQL Server 2008,Microsoft将透明的数据加密(TDE)引入将自动加密整个数据库的功能,而无需更改应用程序代码即使对于第三方应用程序也是如此。一个主要好处是将加密“静止数据”,包括磁盘上的数据库文件和磁带或磁盘上的备份。此功能提供了额外的安全性来抵消可能的物理安全漏洞。但是,一旦数据“在运动中”,例如,在内存或通过网络中,信息会自动解密,因此不会受到保护。

现在,在SQL Server 2016中,微软已经实现了一个“始终加密”选项,其中包括端到端加密,而不需要更改应用程序代码,因此给了我们一个两全其美的解决方案。这种策略的一个主要好处是Always Encrypted在拥有数据的用户和管理数据的用户(如管理员)之间提供了分离,因为加密/解密发生在客户端层。随着基于云的数据的出现,这种分离尤为重要。为了使用安装在客户端计算机上的始终启用加密的驱动程序成功地进行加密或解密,需要访问列主密钥(CMK)和列加密密钥(CEK)。

尽管不需要更改应用程序代码,但需要重新定义敏感列的数据定义,以包含ENCRYPTED WITH子句。列的ENCRYPTION_TYPE可以是确定性的或随机的。DETERMINISTIC设置意味着,给定特定的输入数据,加密的数据将始终是相同的输出。此选项允许使用加密值进行分组、过滤、连接和索引。但是,它可以为未授权用户提供一个机会来推断只有几个不同值的列的数据。随机化选项通过以一种难以预测的方式加密提供了更多的安全性,但是,它不支持对加密值进行分组、过滤、连接和索引。

加密需要两种类型的加密密钥:列加密密钥(CEK)和列主密钥(CMK)。使用CEK对数据进行快速对称加密,使用CMK对CEK进行非对称加密,安全性高。CMK必须在客户端机器上的可信密钥存储中可用,通常使用证书。

一旦适当的键和证书可用并授权到客户端,需要指定一个特殊的连接字符串选项,即“列加密设置=启用”。

如果任何必需的对象无法访问或未授权,则不会发生解密,并且假设用户本身对数据列具有安全权限,将不会出现解密。

因此,对于需要自动和透明的端到端安全解决方案的“本地”和“基于云”的数据,始终加密是Microsoft SQL Server 2016的关键任务特性。(剧透警告!)如果你还没看过模仿游戏,只要记住不要用同样的问候开始你所有的绝密备忘录!

更深入的数据洞察

选择功能:时间数据——“dba的时间旅行”

在比较操作系统和商业智能(BI)解决方案之间的差异时,我们通常会看到,操作的观点是当前的、最新的数据值,而BI的重要性在于提供分析历史趋势和数据随时间变化的模式的能力。在BI解决方案中支持历史分析的一种常见方法是在数据仓库(DW)设计中定义一个缓慢变化的维度(SCD)。DW提供了一个历史数据库作为支持“维度模型”中的事实和维度的业务分析的基础。事实通常是用于评估业务的数值,如收入、成本、利润、工资等。维度为事实分析添加了上下文,例如,按地区分析收入或按年分析利润或按部门分析经理的平均工资。在这些例子中,地区、年份和部门是DW中的维度,收入、利润和工资作为事实执行。考虑一下,当一个新经理被分配到一个部门时,他的工资是按全年平均工资计算,还是只按分配的时间段计算?如果选择前者,则定义了一个“SCD Type 1”,它只存储当前的数据值和可能存在的不准确的详细分析。为了在一段时间内进行准确的分析,我们必须选择后一种方法,这需要为历史数据仔细设计“SCD Type 2”。SCD Type 2的典型设计方法是为给定的维度成员提供多行能力,通过添加“代理”键来存储历史更改。 The surrogate key provides uniqueness and allows duplicate values of the business key used in the operational system. Typically added also, would be a start date/time and an end date/time column for accurate time analysis. The design and population of this type of dimension is usually a complex, manual, time-consuming process. Now in SQL Server 2016, we have the option of Temporal Data which automates this process via system tables and is part of the ANSI SQL 2011 specification.

时态表,也称为“系统版本表”,可以在任何数据库中定义,并将自动跟踪数据的变化与开始和结束日期/时间。时态表实际上在内部由两个表组成,当前表显示最新的数据值,历史表显示以前的更改及其当前时间。

一旦创建,时态表将自动跟踪更改并维护开始和结束日期/时间列,通过历史表有效地实现SCD Type 2,同时保持当前表与最新数据值正常。这两个表在SSMS对象资源管理器中都是可见的,如果需要,可以作为单独的表进行查询。

注意,当前表只表示最近的数据,而历史表表示以前的更新,SysStartTime和SysEndTime列表示这些数据值为当前的时间段。临时数据可用于审计或在意外更新后恢复数据值,但最重要的是,可以直接复制到数据仓库中的SCD Type 2维度表,无需进行操作,从而在增量加载数据时节省复杂的处理。

对于现有数据,可以将表更改为时态数据表,而不必更改现有应用程序查询。此外,如果希望对使用FOR SYSTEM_TIME子句的时态数据表创建新的查询,SQL Server将在必要时访问当前表和底层历史表,返回时间敏感的数据比较。这被宽泛地称为“时间旅行”,它能让你有效地查看之前任何时间点的数据。《神秘博士》的粉丝们,也就是Whovians,可能会喜欢这个“Wibbly Wobbly Timey Wimey”功能。或者不是。总之,时态数据以一种相对简单和有效的方式提供了对数据随时间变化的额外洞察。

超大型云

选择功能:拉伸数据库-“胡里奥!伸展!”

微软向基于云计算服务的公司转型非常迅速,而且在很大程度上取得了成功,Office 365和Azure等主要服务引领了这一转型。基于云的数据库提供了更高的灵活性和“弹性”可伸缩性,非常适合快速增长的组织。目前仍然存在许多基于安全的问题,但有些数据可能适合驻留在云中,并与敏感的“内部”数据同步。这种对数据的分布式处理方式是行业发展的趋势。微软是这一技术的前沿,它的Azure平台支持云中的Azure SQL数据库,还有Azure虚拟机(VMs),如果需要的话,它可以支持SQL Server的完整版本。再一次,易用性和低成本是微软的价值主张。Azure SQL数据库现在与SQL Server 2016兼容,并支持一个新的混合选项,称为“拉伸数据库”。

Stretch数据库概念是为具有大型历史表的数据库而设计的,这些历史表用于查询访问,但不经常使用。目标是将访问最频繁的表存储在本地,将偶尔访问的历史表存储到云中,从而降低本地存储成本和资源需求。应用程序查询不需要更改,提供透明的实现。

Stretch数据库由本地数据库和Azure SQL database (V12及以上版本)托管的本地数据库组成。可以将大型历史表标识为“拉伸表”,使数据“符合”迁移到远程数据库的条件。随着时间的推移,拉伸表将完全迁移到远程数据库,但是,可以根据需要暂停和恢复迁移,以优化可用的网络资源。内置了故障安全机制,因此在迁移期间不会发生数据丢失,包括自动重试功能。同样,由于查询优化器了解迁移的当前状态,在迁移期间和迁移之后,现有查询可以保持不变。实际上,拉伸表由一个包含合格数据的本地表和一个包含迁移数据的远程表组成。完全迁移后,本地表为空,远程表将包含所有数据。添加到本地表的任何新行都可以进行迁移。支持拉伸的表目前不支持更新或删除操作。

为了允许扩展数据库由SQL Server 2016实例托管,必须使用sp_configure打开“远程数据归档”选项。然后,可以使用SSMS中的适当任务向导启用所需的数据库进行拉伸操作。

一旦启用数据库拉伸向导启动,它会提示用于远程数据库服务器的Azure订阅和登录凭据。向导创建一个链接到远程Azure SQL数据库的服务器定义,以实现安全访问。

当数据库启用拉伸操作时,可以使用SSMS中的enable stretch选项在数据库中启用选定的拉伸表。同样,偶尔访问的历史数据表是拉伸表的理想候选者。

一旦启用,伸缩表将开始使用专门设计的低影响“涓涓迁移”过程,将数据从本地表存储迁移到远程表存储。可以根据需要暂停和恢复迁移,以控制网络使用。对支持扩展的表的应用程序查询保持不变,但是,查询优化器将创建一个执行计划,其中包括对本地表和远程表的访问。因此,不管迁移的当前状态如何,查询都将返回正确的数据。随着时间的推移,整个表数据将迁移到远程表存储,为更活跃的本地非拉伸表释放存储和资源。拉伸表可以根据需要偶尔访问,但是必须注意,对拉伸表的远程查询的性能将比对本地高性能非拉伸表的访问慢。其原理是,基于更少的存储和内存需求,本地查询实际上运行得更快。与往常一样,必须评估性能指标以确定服务水平协议的可接受性。

您可以使用新的系统编目视图和动态管理对象(如sys.)查询系统编目,以获得有关伸缩数据库和表的信息。remote_data_archive_databases sys。remote_data_archive_tables sys.dm_db_rda_migration_status。

当选定的数据库启用为扩展数据库时,远程Azure SQL数据库、关联的链接服务器定义、远程端点和适当的Azure防火墙设置都会自动创建。

有了这样的特性,微软已经成功地将云作为SQL Server架构的扩展,而不是作为一个完全独立的平台,这样就允许我们在所谓的混合云中利用现有的技术。

所以,如果你的数据库因为历史数据而变得太大,只要喊“Julio!”伸展!”

结论:“不要恐慌!SQL Server 2016大多是无害的!“

Microsoft SQL Server 2016有一些很棒的新特性,允许您使用混合云开发高性能、更安全、可扩展的应用程序。但正如道格拉斯·亚当斯(Douglas Adams)建议我们的:“不要惊慌!”微软是在SQL Server 2012和2014的基础上建立起来的。使用类似的架构和管理工具,我们应该能够根据自己的时间表,在需要新特性时顺利升级系统。别忘了你的毛巾!

加入网络世界社区有个足球雷竞技app脸谱网LinkedIn对自己最关心的话题发表评论。
相关:

版权©2015Raybet2

工资调查:结果在