订阅业界RSS CSDN首页> 业界

专访黄钊吉:SQL Server现已向云过渡

发表于2013-04-16 14:38| 次阅读| 来源CSDN| 0 条评论| 作者钱曙光

摘要:SQLServer最初于1988年由微软与Sybase共同开发,运行于OS/2平台,这开创了IT的新世界,如今其已经向云过渡;同时,我们也迎来了大数据时代。本期社区之星邀请黄钊吉与我们一起再次认识SQL和数据库。


黄钊吉,SQLServer DBA、2013年4月MVP、MCITP、CSDN论坛SQLServer基础版版主、CSDN博客专家。3年SQLServer开发经历,2年SQLServer 2008R2、SQLServer 2012 数据库管理经历。参与过广发银行东莞分行、广州银行总行、中信银行广州分行、广西北部湾银行4个银行的绩效考核系统的数据库开发和项目实施工作。目前就职与非欧美外资企业,负责近50个客户ERP系统数据库的运维工作。

  • 在学习的过程中“顺便”拿点“奖励”

CSDN: 请和大家介绍下你的经历及从事的工作?

黄钊吉:2008年本科毕业,由于大学期间没有目标、贪玩、年年挂科,学的专业知识都是皮毛。毕业的时候也很难找工作。现在回想起来,其实挺幸运,刚开始工作,真的是要基础没基础要经验没经验,一个语句看半天,下班回去也没电脑实践,只能看书。幸运的是同事和上级都没有过多的责怪,也很心平气和地回答我很多白痴问题。感觉3年的开发比过去在大学学的多好几倍。这份工作也为我后面的工作和学习提供了宝贵的经历。

2010年出差广发银行东莞分行,项目刚启动,比较闲,6点就回到宿舍,每天差不多有5个小时的自由时间,一直对未来迷茫的我有一天看到了关于DBA的介绍,当时就很兴奋,然后就决定了要转型DBA。我这个人比较怪,想做的事情就希望马上实现,所以很不负责任地完成了项目,并多次为了追求自己的梦想提出离职,因为当时的公司不需要DBA。就这样反反复复一年之后。终于在2011年来到了现在的公司,担任SQLServer 的全职DBA。

刚开始的时候有时间看书,但是没过几个月,铺天盖地的项目上线就压到了我身上,因为公司不大,就我一个DBA。项目上线、脚本执行、数据问题的处理、服务器管理等等工作全部丢给我这个刚入门的人。后来认识了一些公司外的人,了解了现在外面的情况,他们推荐我很多书、很多网站(特别是国外的)。在我喘息之余我就抓紧时间去学,我明白不学的话自己会惨死。面对着英文原著、外国网站,硬着头皮去看,一个一个单词翻译,当然也有很多误解。但是我相信坚持总会有结果的。

2012年4月,工作比较稳定了,也有了处理突发事件的能力,就开始去寻找一个可以记录工作所需的脚本、知识和总结的方式,想起大四时候经常上的CSDN,就到上面注册了一个号,开始经营博客,初衷是为了记录一些脚本,能在服务器上直接访问并取下来用,不用老是上传。2012年8月底,无聊逛了下论坛,发现好多知识点我都不会,所以决定开始去花精力到论坛上。通过论坛,我学到了很多相关知识,但是更多的是“我该去多看书”,因为论坛上的问题我很多不懂。论坛、国外网站、书籍和工作实践,成为了我目前的生活主线,我也乐在其中。

最后说说考证,我去年10月考了MCITP,很多人说考证没用,背题就过,也对,但是你为什么只为了个证书去学习,而不去真正地学习呢?考试的参考书上有一个很重要的亮点——目录,这个对经验丰富的人当然不算什么,但是对一个正在迷茫的人,其实它提供了一个提纲,告诉你微软希望一个MCITP的人应该懂得什么,你可以根据这个提纲,深入学习。证书是随时都可以考,没有固定时间,准备足够了再去考就可以了。

我觉得版主、博客专家、MVP、MCITP这些的确不证明什么,但是我为什么在学习的过程中不“顺便”拿点“奖励”呢?

CSDN:大学毕业后,为何进入到SQL Server开发领域?

黄钊吉:SQL Server很好地体现出微软系列的易用性。SQLServer2000相对于Oracle、DB2来说,更容易操作、资源更少。当时,我大学时用的电脑装了Oracle后,连鼠标都动不了;加之当年学校开数据库概论,拿SQLServer2000来做演示,先入为主就进入了SQLServer;另外,大三大四接触的都是SQLServer,毕业之后也就顺理成章地进入了SQLServer的领域。先不讨论各类RDBMS的好坏。我觉得微软这方面做得挺好的,比如现在的大学生如无意外都没见过3寸盘,但是应该长期使用Windows的人都清楚那个三寸盘的图标就是保存的意思。SQLServer性能方面并不一定就比其他的好,但是其易用性绝对是占领市场的重要原因之一。

由于毕业找的工作就是做SQLServer的,所以延续到今天,期间会犹豫过是否转Oracle等,但是想了想,如果自己拿来吃饭的技能都不学好,那怎么去告诉别人你有能力胜任Oracle、DB2呢?我相信一通百通,前提你要先通了。也就一直支撑着我用SQLServer走到今天。除非哪天我觉得我对SQLServer柔韧有余了,否则不会轻易把精力分散。因为我本身就不是个精力旺盛的人。

CSDN:你眼中的DBA是什么样的?DBA这个角色随着SQL Server的版本更迭后,有什么变化?

黄钊吉:SQLServer DBA粗略分为开发DBA、管理DBA和混合DBA。在最初,数据库很小,很多DBA都是开发人员兼任,也就出现了开发DBA,其实这部分人更应该成为高级程序员,他们除了管理,也做开发,但是他们更重要的是清楚如何开发才高效。随着库越来越大,数量越来越多,相关环境越来越复杂,需要专职人员去复杂管理,也就出现了管理DBA,这批人大多数都有所脱离开发,负责服务器和DB的运维,更加专业。一些小公司或者精力充沛的人,很可能会涉及数据库相关的所有或者大部分事情,这也导致了混合DBA的出现。混合DBA可以说是开发DBA的一个升级。上面仅属个人看法。

CSDN:在从一名SQL Server开发者到一名全职的DBA,你是如何进行转变的?

黄钊吉:这的确是一个比较辛苦的过程,很大程度需要机遇,我上一家公司挺好的,但是不需要DBA,为了自己的梦想,我还是选择了离开。一开始找工作有很多困难,大一点的公司,不需要一个没经验的DBA,小一点的公司,其实还是要你做开发,找了一个月的工作,才有一个相对满意的职位,当然由于没有真正的经验,工资很低,比我上一家公司还低1000多。为了获得经验,我也就忍了。回顾过去,转型的确很辛苦,值得庆幸的是这家公司提供了还算满意的DBA发展平台。我也在这里学习、锻炼了很多。我清楚自己水平,所以不敢以任何褒义词自称。只希望能够一直一步一步地成长下去。哪怕过程中会出现或多或少的难题。坚持一下,再坚持一下,再坚持一下下,也许就成功了。

CSDN:恭喜你获得2013年4月微软MVP,对于获奖你有哪些话要说?是什么让你获此殊荣?

黄钊吉:首先,就是很荣幸。不管我水平如何,我也登上了这个舞台。希望能对得起这个称号。

其次,国人普遍认为中国MVP不怎么滴,当然是因为我这种人导致的。不过MVP的评判标准主要还是在于积极奉献,这点我应该还算过得去吧。我希望我能继续奉献自己的知识,一方面可以帮人,另外一方面随时准备着接受别人的指点甚至指责,我挺喜欢一句话:懂得太少、表现太多、才华太少、锋芒太多、很浅薄、一眼就能被看穿。我现在就是这种人——爱表现、水平低、不过一直走下去,我相信3年以后你再见到我,会承认我是一个合格的MVP、一个合格的DBA。

最后,我是通过CSDN的论坛和博客获得MVP,一开始使用论坛和博客并不是为了MVP,后来发现可以通过这些来拿MVP,也就使得我有了更大的动力去经营这两方面,我也希望我能一直连任下去,正如上面说过的,为什么不在学习和成长的过程中,为自己拿点奖励呢?能有动力去成长,其实也不错啊。

  • SQLServer现在已经向云过渡

CSDN:SQL Server安全问题一直备受大家关注,在你的工作实践中有什么心得可分享?

黄钊吉:我个人觉得,安全性这个问题不应该独立出SQLServer这部分来说,如果Windows的管理员密码给破解了,你的SQLServer还有安全性吗?所以安全性这个问题,应该从整套来说起,首先应该是从架构上的安全性来说,OS、网络这些安全性你要先确保,但是我不是专业的网管和系统管理员,这部分我懂得不多,就不乱搀和了。

对于SQLServer,首先要确保其服务的启动账号的安全性,这部分其实是Windows层面的东西,如果这些Windows账号也给破解了,那自然也不会有什么安全性可言。2008权限方面已经初具规模,不过理解起来还是很费力,我有一个海报大小的权限图,相当复杂,这部分要说,恐怕不是一两篇可以说清楚。

就我个人工作经验,合理借用Windows的组、Windows身份验证,可以在很大程度上简化工作。比如我们公司都是在域内,我在域中创建多个组,如开发组、测试组,然后整个组加到SQLServer中,可以方便统一管理,有人离职或者入职,直接修改Windows的组即可,根据角色的身份来规定权限。由于我们公司的Windows层面管控非常严格,登录都需要安装证书,所以很多时候我会把安全性交给Windows 。不过借助2008的许多新特性如CDC、基于策略的管理(PBM)、DDL触发器等,还是可以做好一些侵入防御。总得来说除非你清楚理解了权限是什么东西,不然安全性也只是对外行人才具有一定的效果。也并不是非要把安全性做得如何如何完美,才算安全,严格遵循安全性三角原则,并把SQLServer的外围配置做好,其实就差不多了。

关于保护SQLServer 安全的原则:最小权限原则、CIA三角和深度防护。

  • 最小权限原则:

只授予所需的最小权限;

最简单的解决方案是让用户成为固有数据库角色:db_datareader成员,然后创建select权限创建数据库角色,并且只授权用户需要访问的表,让用户成为这个新角色的成员。远程连接在一些机器上不适合启用。

  • CIA三角:机密性、完整性、可用性
  1. 机密性:未授权的人或者使用未授权的方法不能访问数据;
  2. 完整性:未授权的人或者使用未授权的方法不能修改数据;
  3. 可用性:已授权的人随时可以使用数据;

以上三种特性缺一不可,并且要保持一种合理的平衡状态。哪一方过严密,都会导致失衡。

  • 深度防护:
  1. 建立多层防护来避免收到攻击;
  2. 外围的外部路由器;
  3. 外围的防火墙;
  4. PC自带的个人防火墙;
  5. PC上运行的防病毒软件;
  6. 补丁管理方法和开发软件;

保证这5层防御,能使得受攻击的机会降到微乎其微。如果都出现灾难故障,那么PC将成为攻击的牺牲品。

CSDN:SQL Server2012在性能优化上相对于SQL Server2008做了哪些改进?增加了哪些性能优化技术或者工具?SQL Server2012在实际使用中DBA需要注意什么?

黄钊吉:SQLServer2012对比与SQLServer2008 ,主要提升并不在性能,更多的是在管理方面,听说SQLServer2012下一个版本,有传言是内存数据库,这部分对性能的提升会更大,如内部优化算法的改进,将有较大的提升。目前据我了解SQLServer2012新加了部分对性能优化有用的DMO,除了在OLAP上的列存储索引在性能上有显著的效果之外,对OLTP还是比较少的改进。对于SQLServer2012,更多应该关注其管理方面的改进,特别是AlwaysOn。

CSDN:SQL Server开发中有哪些常见的问题?

黄钊吉:按这么多年的经验,其实也不是很多年,开发人员最容易犯的错误就是把面向过程面向对象的思想带入面向集合的关系数据库开发中。很多人用一行一行处理的思维面对超百万甚至千万的数据量,别说慢了,有时候直接导致SQLServer挂掉。所以应该建立好面向集合的思维,对一个“集合”操作而不是一行一行处理问题,当然有些特定情景还是不可避免需要一行一行操作,这时候就要衡量是否有这样的必要,能否有别的方法代替。

然后就是编码的规范性。开发的人通常并不是维护代码的人,他们很少去考虑维护成本,我就见过超3000行的代码,几乎没有注释,看懂它用了我好几天,这些时间并不是所有的公司都能接受的,所以规范性任何时候都应该遵循。维护的人少点不必要的麻烦,也自然会少点来麻烦开发人员,大家工作都开心,何乐而不为呢?

最后比较常见的就是一步一步地实现功能,而很多情况下,其实可以用更少的代码和步骤去实现,据我优化的经验,其实最本质就是一个字“少”,更少的步骤、更少的开销、更少的代码(这个大多数是为了维护需要)等等,一步一步实现并不是不行,但是经常会出现重复操作,这部分又往往是性能瓶颈,加上开发人员多数是为了实现功能而开发,这个当然是前提,但是除了开发出正确的功能,还要考虑性能,因为最清楚代码的人就是写代码的人。一个不考虑性能的开发人员,永远成不了高级程序员。

CSDN:对于使用类似PostgreSQL、MySQL开源数据库的企业有一些什么建议?SQL Server在实际工作中有什么优势?

黄钊吉:SQLServer由于其易用性,其实群体相当大,也许很多方面性能并不如意,但是毕竟它也站稳了脚,企业选择哪类型的DBMS,主要也是考虑成本及核心人员的技术特长,物尽其用,就可以了。SQLServer有很大的群体,这是它的优势,而且相关资料很多,对入门很有帮助,虽然说MySQL这些是开源的,但是也是有限度的开源,如果深入使用,并不一定比SQLServer好。毕竟微软投入了大量的人力物力去经营这个拳头产品。SQLServer其中一个最大的特点,也往往是最大的弱点,就是严重依赖Windows,不过Windows的广泛使用给SQLServer带来了很大的好处,那些开源的、跨平台的DBMS并不比SQLServer在Windows平台上运行得好。

CSDN:目前,SQL Server在国内外发展以及未来前景如何?

黄钊吉:这一点比较揪心,在外国的SQLServer技术网站上看到很多SQLServer DBA的招聘。好多好几万美元一个月的,先不管别人技术如何,最起码国外的待遇好,钱虽然不是一切,但是的确能解决我们生活中大部分的烦恼。并且在国外SQLServer的发展的确比国内好,不过希望喜欢SQLServer的国人能一起把国内的环境经营好,而对于我自己来说,先学好英语,再尽快从国外学习新的技术,普及到国内。SQLServer现在已经向云过渡,如果有精力,还是应该在打好基础的前提下多涉及这方面的知识。

对于云计算,很火,现在国内外遍地开花,我们公司也有意向这方面转型,所以老板是交待我去了解,下面简要说说我的理解。SQLServer的云目前首推SQL Azure,它是基于Windows Azure的,包含了SQLServer的的功能。其实非官方定义下,云也就是一种共享,私有云、公有云,核心的区别主要在共享范围,SQL Azure借助微软在全球的数据中心,貌似中国就北京、香港、台湾有数据中心,实现全球化共享。过去,绝大部分系统都是在企业内部或者在一个IDC机房里面,通过网络来访问。由于本人不研究理论方面,所以根据个人的观点,说说用处,至于官方定义、官方解释,由于太多,可以在微软官网上查看:

SQL Azure有一个很重要的用处。过去,假设你的系统是一个电子商务系统,常规访问不大,但是到了节假日,需要搞活动,访问量可能瞬间增长几个数量级,为了这几天的活动添加新的硬件,对大多数企业来说都是不能接受的,但是可以把你的系统短期内部署在SQL Azure上,微软建立的数据中心是非常强大的,足够满足你的业务要求,并且微软承诺实时备份(同时3个副本),也自动帮你做负载均衡(比如通过创建多个副本,实现横向扩展,把报表工作从OLTP工作负载中分离出来)、动态增加资源、不停机打补丁等,在Azure上,可以几乎不受负载的威胁,你要做的就是优化你的系统运行。至于安全性,就交由微软来做。在这种应用底下,可以实现也许是最具成本效益的方法。

另外SQL Azure可以通过本地的SQLServer Management Studio直接访问,只要网络无障碍,开发人员和管理人员几乎发现不了区别,除了一些需要额外注意的地方。如日期类型要使用格林威治时间、必须要配置防火墙等之外,其他部分几乎不需要有任何改动,使用云最大的好处就是在于资源合理利用。

对于SQLServer 2012,也以云计算为宣传口号,借助SQL Azure Data Sync这个基于云的数据同步服务,提供单向和双向的数据同步,从而实现SQLServer 2008/2008 R2/2012与SQL Azure之间的数据共享。这种同步可以精确到表和行级别。2012号称云就绪平台,但是目前我还专注在AlwaysOn上,没有过多研究其与云的联系。

总得来说,云计算目前没看到业界有什么标准定义,更多的是各个厂商提供的解释,至于能否相信,就要见仁见智了。不过云的几个标准如共享、可扩充、超大规模(光服务器就是几十上百万台)、虚拟化(虚拟化是可扩充性前提之一)、高可靠性(多副本备份)。

当然事物都具有两面性,云也有一定的缺点,比如一旦被某些提供商垄断,后果不堪设想,还有就是基础架构的健壮性、可靠性、安全性等等。

0
0