热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

点评:巍然耸立的SQLServer2012

【51CTO4月26日外电头条】正如大家一直以来对SQLServer新版本的殷切期望,SQLServer2012也确实没有令我们空等,它所带

【51CTO 4月26日外电头条】正如大家一直以来对SQL Server新版本的殷切期望,SQL Server 2012也确实没有令我们空等,它所带来的海量新功能可以说光是名称就能占据几页稿纸。无论是商务智能用户渴望的Reporting Service还是令IT人士望眼欲穿的查询性能与正常运行时间,它几乎能够很好地为任何类型的用户服务。SQL Server 2012可以说是一款携威而来、全线升级的产品,除了少数几点令人失望的瑕疵外,我们很难对它横行非议。

Reporting Service中专为数据探测及虚拟化添加了一款名为Power View的网络前端。Analysis Service则引入了一套全新的语义模型,为商务智能专家在构建解决方案时提供更多灵活性。此外,列式存储索引机制的出现令查询性能更上一层楼;再加上新的Data Quality Service以及对原有Master Data Service的加强,SQL Server 2012无疑将在处理企业数据方面更加得心应手。

当然,SQL Server 2012中还包含了大量专为数据库管理员们准备的新功能,旨在帮助他们在管理工作中更加高效地处理问题。这些内容我在本点评文章中也会谈到,不过首先从大家最关心的、能够帮助系统可用性达到新水平的功能开始。

锦上添花的可用性

让咱们首先聊聊新版本中最大的进化内容之一——AlwaysOn。AlwaysOn是一种新的HA技术,它的出现将传统数据库镜像彻底扔进垃圾桶。由于镜像备份机制已然启动,因此镜像被局限在某台单一目标服务器上显然并不理想。另外,除非我们关闭自己的主数据库,否则这些镜像目标根本毫无用处,甚至连内容读取都无法实现。针对以上两点问题,AlwaysOn交出了令人满意的答卷。我们完全可以为自己的主数据库轻松配置多套只读副本,并在系统运行状态良好时将其作为报告机制使用。当然,与镜像备份类似,我们也可以对AlwaysOn进行设置,指示其与目标主数据库实时同步或者延时同步。

镜像可读性本身已经解决了备份机制中的一个老大难问题,但AlwaysOn最大的贡献还不仅限于此——它实现了多套相关数据库之间的故障切换。在通常情况下,两套或两套以上数据库的正常运行往往需要彼此之间的相互支持;也就是说只要其中某一套出了问题,仅凭镜像根本不足以支撑起全局业务。而AlwaysOn利用Availability Group(可用性群组)解决了数据库之间相互依赖的问题。该功能允许我们将那些必须同时失效的数据库指定为一个群组,这样一旦某套关键性数据库失效,相关数据库也将一并失效。通过这种方式,数据库的整体切换终于成为可能。

数据库的彼此依赖性是数据库管理员们最为头痛的另一大课题。当我们将数据库恢复到不同的运行环境中时,需要考虑到各种不同的情况,例如连入服务器、用户账户以及跨数据库规程与视图等等。这一切都必须通过同步与现有工作状态相匹配方能达到目的。而在SQL Server 2012中,我们发现了一项名为ContainedDB的功能,在它的帮助下我们能够将一套数据库转化为独立体系,也就是不与任何外部因素相关联。在这项功能启用时,我们无法向目标数据库写入任何将对其它数据库产生依赖性的内容,也不允许该数据库中包含任何将被外部系统所调用的对象。事实上,ContainedDB中的用户账户甚至根本没有服务器级别的登录选项,这样大家就不必担心自己在将数据库移动到新设备中时需要进行麻烦的账户信息同步了。当然,这还只是ContainedDB功能的首个版本,其中必然存在着一些问题与局限性;但它的意义非常重大,至少为我们带来了一个良好的开端。

另一大重大改进来自事件日志与追踪系统。SQL Profiler已经被正式舍弃,新的XEvents(即扩展事件)GUI取而代之。XEvents在最新版本中得到了极大扩展,新的追踪机制也将完全以它为核心运作。对于大多数用惯了老版本的用户来说,这次大刀阔斧的改动可能会带来些许不适,但我可以保证一旦上手,各位绝对会对新方案赞不绝口。XEvents比过去的SQL Trace更为灵活,也就是说如今追踪活动给设备带来的性能影响已经变得微乎其微。不仅追踪机制发生变革,重播功能也以Distributed Replay(分布式重播)之名改头换面。顾名思义,它让用户得以从多台设备重播那些受到追踪的工作负载,这样我们就能更好地模拟所在企业的日常生产活动。如果大家正打算进行更新测试或者考察自己的设备能否应对突如其来的数据爆发,那么这些功能的出现实在是既贴心又实用。

索引体系改进

索引体系迎来两大改进——在线重新索引与列式存储索引。相对于大多数企业针对数据库管理员们所做的管理简易化宣传,少数几项功能似乎一直并未受到多少重视,而在线重新索引正是其中最被忽视的项目之一。相信大家跟我一样,都曾为SQL Server 2005中的在线重新索引功能而感到兴奋不已;然而事实证明那套东西根本无法作用全部数据类型。在实际操作中,我们很快发现任何包含可变长字符、n长度可变长字符、可变二进制以及XML列数的索引都无法被在线重新索引功能接受。因此,我们不得不为自己的重新索引规范添加定制逻辑,以其使理解这两种不同类型的索引内容。现在,革命终于迎来新的进展,各种数据类型都可以为在线重新索引所支持,而我们也真正对全天候运行的应用程序提供在线索引维护。只要我们能够对在分区表进行在线重新索引处理,这项新功能也就真正服务于业务流程了。

SQL Server 2012还引入了一套新型索引机制,名为列式存储索引。传统的索引会将数据以行为单位进行存储,并将这些行添加到索引当中以完成索引任务。列式存储索引则是以列为单位存储数据,并将这些列添加到索引中以完成索引任务。根据微软公司的说法,这种新机制能够在相同情况下带来十倍于传统索引的性能表现。然而,这一次微软似乎有些过谦:根据我本人的实际体验,性能提升远远不止十倍。列式存储索引的出现主要是为了迎合大数据集仓储所带来的需求。但我相信大家可能不会在OLTP(即联机事务处理)方面使用这套新机制,因为列式存储具有只读属性。

除了显著的性能提升之外,SQL Server 2012还能够被安装在Windows Server内核之中。这不仅增加了服务器的全局处理能力,而且强化了安全性。在服务器内核中运行的服务项目相比较少,这意味着其中的安全漏洞也会相应减少,同时可能导致性能低下的软件bug也会得到有效扼制。

T-SQL强化

T-SQL倒没有太多新功能,但目前的这些已经足以应对业务需求。我个人最喜欢的是新的LAG与EOMonth窗口化功能。LAG为我们结果集中的每一行配备了访问前一行中列数据的接口,也就是说只要我们拥有给定列,就能随心所欲地显示同一行当中的当前值与过去值。说完了LAG,再来看看EOMonth。它的功能在于帮助我们直接访问每月最后一天发生的赋值变化。以上二者只是新功能中的一部分,其它的就请各位读者在使用中亲自发掘吧。

在所有T-SQL强化项目当中,FileTable可能算是最引人注目的功能了。从根本上说,它可以直接从文件系统中访问文件流数据。这里我需要解释一下,文件流允许我们将文档保存在文件系统当中,但这些文档必须与数据库同步备份,这样我们才能确保资料的安全性。FileTable则更进一步,将数据库与文件系统之间的交互关系透明化。首先,我们要将指定列表定义为FileTable,并为其分配一个文件系统中的目录。接下来,我们要做的是从Windows资源管理器中将要管理的文件拖动到该目录中。整个过程就是这么简单,如此一来我们不仅能够像以前那样在文件系统层面管理这些资料并保存到数据库中,也可以直接从T-SQL或者Windows系统层面对这些文件直接加以改动。

说了这么多优点,咱们再来谈谈SQL Server 2012中不尽人意的地方。就我个人而言,感到最失望的一点在于PowerShell在这个版本中所蒙受的冷落。比起AlwaysOn以及备份/恢复等功能所获得的大幅度强化,SQL Server 2012中的PowerShell似乎没有得到任何实质性提升。至少在当初微软无比倚重PowerShell的那些年,一个全新的版本中绝不会只为其配备这么一丁点改进。另一点让人失望之处在于几乎原封不动的SSMS(即SQL Server管理器)。微软已经把SSMS移植到Visual Studio 2010当中,但相对于这一改动的影响力(比起Team Foundation Server中对片段管理与整合效果的提升),数据库管理员几乎没能从中获得任何实质性的工作能力强化。其实在我看来,这方面的改进空间还是满大的,比如更好的多服务器管理及报告功能、将PowerShell与SSMS严密整合等都是不错的主意。可惜,一条也没实现。

在数据库升级方面,我一直抱持着所谓“满五原则”。也就是说,至少得有五大显著的功能提升才能让我们真正有兴趣对自己的数据库进行大规模升级。不过在这里我只要从某些方面对SQL Server 2012做出点评,还有很多方面是目前还不适合拿出来讨论的。SQL Server Integration Services得到大幅修整,SQL Server Analysis Services与SQL Server Reporting Services也有令人惊艳的强化,这一切倒已经足够令人满意了。相信在大家拿到正式版之后,一定不难从中找到说服自己升级到SQL Server 2012的五条理由。

原文链接:http://www.infoworld.com/d/microsoft-windows/review-sql-server-2012-stands-tall-191706?page=0,0



推荐阅读
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了如何使用iptables添加非对称的NAT规则段,以实现内网穿透和端口转发的功能。通过查阅相关文章,得出了解决方案,即当匹配的端口在映射端口的区间内时,可以成功进行端口转发。详细的操作步骤和命令示例也在文章中给出。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • Oracle10g备份导入的方法及注意事项
    本文介绍了使用Oracle10g进行备份导入的方法及相关注意事项,同时还介绍了2019年独角兽企业重金招聘Python工程师的标准。内容包括导出exp命令、删用户、创建数据库、授权等操作,以及导入imp命令的使用。详细介绍了导入时的参数设置,如full、ignore、buffer、commit、feedback等。转载来源于https://my.oschina.net/u/1767754/blog/377593。 ... [详细]
author-avatar
mobiledu2502896593
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有