微软SQL Server 2012:占据数据库制高点 |
| 发布时间: 2012/7/27 11:16:16 |
|
在本月的15、17和22日,微软将分别在上海、广州和北京三地举办主题为“未来,应酝而生”的微软私有云&SQL Server 2012产品发布会,SQL Server 2012承载着微软关键业务、云计算和BI等领域的梦想,不过,本文将单纯地从数据库应用层面点评这款新产品。 正如我们所期待,新的SQL Server版本SQL Server 2012有太多的新功能,甚至完全提到他们是不可能的。从渴求Reporting Services的BI用户,到负责监督查询性能和正常运行时间的IT人员,几乎每个人都得到很好的服务。SQL Server 2012带来了全线的改善,只有例外少数几个令人失望。
Reporting Services中增加了一个叫做Power View的web前端,为数据研究和可视化。Analysis Services(分析服务)引入了一个新的语义模型,给予BI专家更多的灵活性构建解决方案。新的列存储索引将查询性能推到更高档次,而新的数据质量服务(Data Quality Services)和改进的掌握数据服务(Master Data Services)完善了照顾公司数据的工具。 当然,SQL Server 2012还有许多新功能,准确地击中了DBA们当下的需求。在这个评论中,我将重点讨论它们,以将高可用性提高到了一个新水平这样的一个新功能开始。 更高的高可用性 让我们从这一版本的最大的成就之一——AlwaysOn开始。AlwaysOn是一项新的高可用性技术,它将把数据库镜像技术推到折旧清单上。自从实施以来,镜像被局限于单一的目标服务器,一直是一件令人讨厌的事情。另外,在您的主数据库停机之前,镜像目标是完全无用的,因为它们甚至不可以读出。 AlwaysOn的出现,填补了两个漏洞。您可以很容易地配置很多主数据库的只读副本,并在等待灾备时使用他们做报告。当然,就像镜像一样,您可以设置AlwaysOn目标与主数据库完全同步,或允许它稍微有点落后。 可读的镜像仅仅解决了镜像法一个相当大的问题,而由AlwaysOn解决最大的问题,是多个相关数据库的失效备援(Failove,也称为失效转移或故障转移)。通常情况下,两个或两个以上数据库的运行,依赖于另外一个,如果其中有一个失效,仅仅将它与镜像伙伴交换是不够的,因为它所依赖的数据库仍然在其他的服务器上。AlwaysOn以可用性组(Availability Groups)功能解决这个问题,它允许您定义一组必须一起失效的数据库,即使组中的其他数据库没有任何的错误,它们会随着失效的数据库一起失效备援,以保持其正确运行。
数据库依赖是DBA管理的另一个麻烦。当您将数据库恢复到不同的环境中,有很多需要考虑,如链接的服务器,用户帐户,跨数据库的程序,都必须进行同步以保证正常工作。SQL Server 2012引入了一项称为ContainedDB的功能,允许您确定数据库是自包含的,不允许有外部的依赖。您不能写任何与其他数据库的有依赖关系的对象,即便这个外部依赖的数据库存在于相同的服务器实例。事实上,一个在ContainedDB中的用户帐户不具有与之相关的服务器级别登录,所以当您将数据库移动到一个新的地方,无须担心这些帐户被同步。您应该知道,在这第一个版本有一定的局限性,但我们已经开了一个良好的开端。 下一个大的改善是事件日志记录和跟踪。SQL Profiler现在已经被正式新的XEvents(Extended Events)GUI当仁不让地取代。XEvents在这个版本中已经得到了极大扩展,新的跟踪机制将完全使用它们。它将改变一些习惯,但我保证这是一件好事。比起SQL跟踪(SQL Trace),XEvents更为灵活和轻量级,这意味着跟踪活动的影响将大大减少。伴随着新的跟踪机制,也有一个新的重放机制,称为分布式重放(Distributed Replay),顾名思义,它让您从多个机箱重放跟踪的工作量,这样可以让您更好地模拟生产活动。对于您测试升级,或者只是数据爆炸的场景,等等,这实在是方便。 索引改进 SQL Server 2012有两个重大的索引改进 – 在线重建索引(online re-indexing)和列存储索引(column store indexes)。通常很少吹捧使DBA获得最大不同体验的功能,增强在线重建索引就是其中之一。我们都高兴在SQL Server 2005获得了在线重建索引功能,但最终发现它并不适用于所有的数据类型。我们很快发现任何VARCHAR(MAX),NVARCHAR(MAX),VARBINARY(MAX),或XML列等,都不可能会被在线重建索引。因此,过去我们必须在重建索引例程中建立逻辑,以理解有两种类型的索引。现在,这些数据类型可以在线重建索引,对于我们的24/7应用程序,有了真正的在线索引维护。如果我们可以在线重构单个表的索引,我们真的是实时在业务。
SQL Server 2012同时也带来了新的索引类型,称为列存储索引。传统的索引为每一行存储数据,然后将所有这些行进行联结完成索引。列存储索引存储数据的列,然后将这些列联结到一起完成索引。微软表示,在相同的情况下,这提供了约10倍于传统方式的性能。然而,在我用过的数据设置和我见过的demo,性能增益比这个数字更多。列存储索引是建立在庞大的数据集的仓库使用。您不想在OLTP使用列存储的原因,是因为它是只读的。 我们谈论到性能,还注意到现在SQL Server 2012可以安装在Windows Server Core。一般而言,这不仅可以增加服务器的速度,而且安全。在Server Core上,只有更少的服务在运行,这意味着更少的安全漏洞,和减少拖累性能的软件缺陷。 T-SQL增强 T-SQL没有太多新的功能,但它拥有的每一项都已经足够“酷”。我最喜欢的是新的LAG和EOMONTH功能。LAG给每一行这样的结果,将之前的行设置成列数据来访问。也就是说,当您已经有了一个价格的列,您想要目前的价格和以前的价格轻易地在同一行显示,LAG将允许您这样做。EOMONTH是一个让您可以即时访问到该月的最后一天获取其价值的功能。还有其他的新功能,但我将不得不留下它们,让您自己来发现。 在所有的T-SQL增强中,FileTable可能是最酷的功能。总的说来,它可以直接从文件系统访问文件流(file stream)数据。让我解释一下,文件流使您可以在文件系统上存储文件,但它们备份数据库,这样确保它们得到保护。FileTable更进一步。FileTable架起数据库和文件系统之间透明的路线。您可以定义一个FileTable表,并在文件系统中分配一个目录。现在,要把文件放到这个表中,您只需要从Windows资源管理器中拖放它们。没有T-SQL要写,没有别的特殊的要做。您的文件管理只要在文件系统级别,像您往常做的,而它们存储在数据库中。您还可以从T-SQL或在Windows级直接更改这些文件。 SQL Server 2012并不全是好消息。也有一些失望。对于我来说,最大的遗憾是这个版本的PowerShell。相比对于AlwaysOn和备份/恢复的变化,您会发现没有在SQL Server 2012的PowerShell没有实质性的改善。微软严重依靠PowerShell的今天,我完全期待更多。另一个令人失望的是SSMS(SQL Server Management Studio)缺乏增强。微软已经移植SSMS到Visual Studio 2010中,但比起其他(如Team Foundation Server中更好的碎片管理和整合),我们从这一举动中得到的,对于DBA更好地管理他们的服务器,真的没有什么好的帮助。例如,我希望看到更好的多服务器管理和报告功能,以及PowerShell严格集成到SSMS。 我一直有一个数据库升级的“五点原则”,也就是说,在升级您的数据库之前,应该有至少五点让您感兴趣的功能。而对于SQL Server 2012,我在这里只能谈了一点点,还有过多的功能还没谈到。诸如SQL Server集成服务(SQL Server Integration Services)已进行大修,SQL Server分析服务(SQL Server Analysis Services)和SQL Server报告服务(SQL Server Reporting Services)有一些真的非常好的增强。因此,您会很容易找到升级到SQL Server 2012的五点功能。 本文出自:亿恩科技【www.enkj.com】 |
京公网安备41019702002023号