解惑一 --大数据与Oracle数据库
原创 2017-05-09 刘士明老师
今天不发技术文章了,针对于我的学生经常问我的问题,我简单的给大家解答一下,纯粹是主观的个人观点。
1.Oracle数据库现在在市场上还有竞争力吗?
回答这个问题,首先大家要了解去IOE的概念。
它是阿里巴巴造出的概念。其本意是,在阿里巴巴的IT架构中,去掉IBM的小型机、Oracle数据库、EMC存储设备,代之以自己在开源软件基础上开发的系统。主机被X86设备所取代,传统数据库被开源数据库产品替换,而SAN结构的高端存储也受到云化的存储产品和体系的冲击。然而,真的能去掉吗?据我所知,其中的“I”和“E”真的去掉了,但是“O”,只能说去掉了一部分,阿里旺旺和支付宝目前还是使用ORACLE数据库,去“O”还不如说是减“O”。另外,我要说的是,我们中国的大多数企业,没有阿里那么牛的研发团队,他们能自主研发出OceanDB这样的数据库,以至于去掉了部分ORACLE数据库,所以不要盲目的跟风去IOE,弄不好“去”的同时,带来的维护成本可能会更高。
2.当前的数据库产品有哪些,数据库的发展趋势?
关系型数据库(MSSQL,MYSQL,SYBASE,DB2,ORACLE等)---NOSQL/NEWSQL---区块链(可能是一种趋势)
3.ORACLE数据库对比其他数据库产品的的优势是什么?
以关系型数据库为代表的就是ORACLE了,不管是安全性还是稳定性上,它都有一定的优势。目前市场上出现了很多NOSQL和NEWSQL的产品,这里我要说明一下,任何产品的存在,都是在适应市场的需求。就好像当初数据库进化成ER实体关系模型一样,其实是由于金融银行的发展。NOSQL的出现,实际上是由于互联网的快速发展对数据库提出了新的需求。互联网项目开发的时间非常紧张,项目需要快速迭代。完全没有办法忍受原来传统的基于SQL数据库的开发方式。因为在实体关系模型里,数据库表的设计需要根据业务逻辑定义得非常准确。而互联网项目的快速迭代特点注定了它的业务逻辑必须不断的快速调整。如果一切都从头再设计数据库表格,再写中间的访问层,就会造成中断,大家无法忍受,所以导致了NOSQL的出现。大家可以不需要懂SQL语句,就可以写出来特别好的数据库应用程序。
那么,这是不是说明ORACLE数据库就会被淘汰了呢,其实恰恰相反,SQL不但不会淡出,还要扮演更重要的角色。SQL和编程语言一样,代表的其实是认识世界和描述世界的一种思维方式。那么为什么人们还在使用NoSQL呢,因为NoSQL上手很容易。你甚至不需要学习SQL,使用前也不需要定义数据库架构。当然也有一些人使用NoSQL是因为比SQL的扩展性更好。但从性能上考虑的话,只要数据不能载入内存,SQL通常性能都超过NoSQL。至于区块链,目前成熟的产品还不是很多,是否适合于中国这个环境,我个人持保留意见。
4.现在大数据那么火热,大数据与关系型数据库有关系吗?
一直以来,人们都认为大数据和NoSQL数据库是天作之合,而关系型数据库则被打上OUT的标签。在大多数IT观察家的眼里,大数据通常是指那些规模大到难以用传统关系型数据库处理的数据集。虽然今天关系模型和SQL依然是数据库世界的统治者,但随着大数据时代的到来,越来越多的数据库并非建筑在“关系”之上,且具有更高的可扩展性。NoSQL流行的原因是,与SQL相比,NoSQL非常容易上手,你不需要任何设计就能开始使用它。但这也是有代价的,很快你就会发现对数据失去了控制。所以,大多数NoSQL解决方案的优点是:快速访问数据(只要你舍得把文件都丢进内存)、快速复制/多个节点的数据扩展、弹性架构(可以快速增加新的列)。那么,大数据时代关系型数据库何去何从呢?我觉得大多数看好NoSQL的用户都是跟风者。大多数公司根本没有像Facebook和Google那么大规模的数据,而且他们其实也根本就支付不起优化和持续开发数据库所需的专家人力成本。SQL不会消亡,NoSQL也无法取代它。因为几乎所有人都需要关系型数据库来管理数据。但随着大数据时代的到来,我个人觉得未来将更多的是SQL和NoSQL的混合使用,而不是谁淘汰谁。
解惑二---关于从事数据库工作,需要哪些经验
原创 2017-05-10 刘士明老师
经常有学生问我,“老师,我现在开始学习Oracle数据库,但是我没工作经验啊,大多数企业都要求有工作经验的DBA”。没错,一个企业很少聘用无经验的DBA,其实可以理解,一个企业的数据怎么可能叫一个无工作经验的人来管理呢,数据在某种意义上来讲,就是企业的生命线。今天,我就来说说,面对这样的困境,我们应该怎么面对呢?
第一,应聘dba职位到底需要多少经验
很多人说没有经验找不上dba工作,当然很多单位在招聘dba时也确实明确提出至少需要几年的工作经验,高端dba职位可能会有这样的要求,其实对我们绝大多数刚刚想转行或者刚刚毕业想从事这个职业的新手来说,对从事dba这个职业所需要的知识储备远远大于所谓的经验。dba职位对新手来说之所以不好找、找上了也不好干,其实最根本的原因不在于没有经验,而在于大家的知识储备不够,很多人学习oracle的时间很短,有的是自学了一段时间,有的是通过培训机构培训了一段时间,有的干脆背题库考了ocp就想找dba工作,这都不现实,大家着急的心情可以理解,因为我也是从那个困难的时侯过来的,学习oracle最大的障碍其实不是oracle本身有多难,而是我们急于求成心切、我们浮躁的心态,当然oracle的东西的确不少,错综复杂的纠缠在一起,短时间内不容易理清头绪,不过只要方法得到,通过坚持学习,总还是可以上手的,学习oracle不需要有多聪明,但是需要能够坐得住、能忍受刚开始的枯燥和寂寞这是必须的。我经常和学生说,如果有两个人,一个是做数据库的,另一个是做语言开发的,谁适应工作快呢,答案肯定是从事数据库的那个人,也就是上手快,但是要把数据库做好就不那么容易了(这里没有对任何的开发人员不敬),需要你有超多的知识储备。
第二,环境很重要
不管是知识储备也好,经验也罢,到底如何积累,最后又离不开初学者共同关注的话题:环境,很多人说自己没有环境,意思是自己接触不到生产环境,从事dba职业的人都知道真真当你面对生产环境的时侯,那上面可不是随便能用来练手的,再说生产环境也没有那么神秘,重要与否还的看他上面跑的是什么应用。那到底高手们又是如何成长起来的?其实一台好一点的电脑可以把你需要的环境都搭建起来,现在的硬件设备已经非常高大上了,我们平时使用的笔记本,有的已经有8g或者16g内存了,在上面跑几个虚拟机一点问题没有,有了虚拟机,基本上我们需要的环境都可以搭建。所以很多人所说的没有经验、没有生产环境、没有unix环境等我觉得都不重要,重要的是缺少毅力、过于浮躁,这也可以理解,在迷茫的时侯每个人都容易迷失方向。学习oracle在windows和linux下足够了。
第三,经验好像没那么重要了
学习oracle的时侯,一切都可以模拟的,只要大家坚持学习,不可能最后没有经验的,积累到一定程度、自信心随之也能增强,到时候再去面试的时侯相信大家能够感觉到:其实所谓的经验真的没那么重要,都是从平时的实验中积累出来的。
第四,关于DBA的薪资
我是很不愿意回答这样的问题的,想想看,从事哪一行,你做精了,薪水都不低的。有些人是属于自信心暴强一类的,会的东西不多,常问初级dba待遇能到多少,时刻关心着银子,我是这么认为的:想要获得什么首先得淡忘什么,这个职业有些特殊,越是初级的,越不容易找到工作,待遇也是低的可怜;越是高端职位,越好找、待遇也是超级诱人的。
第五,学习数据库应该储备哪些知识
既然想从事数据库这个行业,首先还是围绕数据库来储备,至于linux、unix等不用专门学习,搭建一些诸如rac环境需要用到的东西到时候现学就可以了,数据库需要用到的主机知识其实不多。再深层次的还有存储,我们不需要100%都精通。至于存储找个模拟器自己琢磨一下,重要的是理解其中的一些概念,所以我觉得这些东西使用的话都不是很复杂。网路、应用等相关的内容都可以在学习db的时侯逐渐的去学习。
这就是我经常和学生说的,先纵向发展自己,然后再横向发展。你既然选择了数据库这个方向,那么就把它学好学通,然后围绕着数据库去学习一些其他的IT技能,比如操作系统、网络、应用、存储等,IT领域是不分家的。这些都掌握了,再了解一下企业的文化,沟通的技巧等。
最后给大家一点忠告吧
找到一个自己感兴趣的方向去学习,一个人最终可以在那条路上取得成功,完全却决于他的性格,每一个人的成功都不可复制。加油吧,同仁们,同学们!~~~~
解惑三---如何找到第一份DBA工作
原创 2017-05-11 刘士明老师
最近参加OCP培训的学生比较多,很多人问我该如何获得自己的第一份dba工作,我简单的说了说我的理解,和大家分享一下:看似是找一份简单的工作,其实这是个不小的问题,我觉得这是个入行的问题,不简简单单是个入门的问题,谈到入门我们经常提到的是oracle的学习方法等问题,如何快速入门,不同的人学习方法不同,总之离不开勤奋,除了勤奋还得要有兴趣,没有兴趣不可能坚持太久,因为学习oracle是个长期的过程,谁想弄个几个月就想收到成效,甚至说的直白一点就想挣钱这其实不太现实。另外没有兴趣的话也不可能做好一件事,更何况要长期做一件貌似很枯燥的事,所以说要选择dba这个职业,那么我觉得首先的入门,连门都没入就想入行,这是不是有点太轻视这个行业了,我一直觉得dba象个老中医大夫,越老越值钱…另外dba的工作主要还是和数据打交道,数据是企业的命,谁会把命交给你随便玩呢…
入门的问题不多说了,互联网开放到今天,网上的资源已经很丰富了,就看我们能不能摆正心态,静下心来仔细琢磨了…
Oracle是个位于整个应用系统中间层面的系统软件产品,下面有os、storage,上面有应用软件,当然贯穿整个环境的离不开网络,那么对应的职位有系统工程师(主要从事os,storage工作的),有dba,有和软件相关的设计人员、开发人员、架构师等,最后还有网管。做为我们首先要清楚自己目前的工作角色是什么、自己目前掌握的最有力的技术是什么、它和oracle有多大关系。如果你是个系统管理员,那么我觉得转做dba有一些优势,因为oracle再庞大、再复杂它也的跑在系统上,另外oracle的很多原理最后我们发现其实都是操作系统的原理,比如oracle的最小io单位是block,最小空间分配单位是extent,那么os其实也是这样,就拿windows来说,他的最小io单位是扇区,也就是oracle doc里常说的os block,那么分配空间的单位其实是簇;如果是从事软件开发、设计、架构方面工作的想转做dba也有一些优势,因为毕竟oracle也是个软件,很多东西在实现上可能会有相似的东西,比如oracle的专用连接模式其实就和c/s结构很相似,共享连接模式和b/s结构很相似。这样如果大家能有一些实际工作经验再加上平常或多或少用一些oracle,那么转dba其实可能不是件太困难的事情,当然如果你的工作平常可以交叉到上面我提到的各种角色当中去,那么静下心来仔细研究一段时间oracle,最终从事专业的dba也是很容易的事…事实上一个人工作几年之后也不可能在工作中只从事单一的工种,交叉会很多,除非这个人能力确实一般…做为dba来说,他们实际工作当中有多少时间是天天在处理故障呢,其实没有,他们天天做的工作可能都是一些最基本的监控和维护,甚至是打杂,包括开会以及和其它很多部门在协调工作,说的难听一点可能是扯皮…比如创建一个index,这听起来是一个及其普通的工作,可是如果在一个7*24小时的高可用系统的一个频繁访问的大表上创建的话,那么我们就不得不考虑index在创建的过程中对应用所产生的影响,归根到底考虑的问题还是要回到锁的兼容性问题…所以很多人常问dba每天都忙些什么,其实都是些很多琐碎的工作,但是这些琐碎的工作背后可能隐藏着很多风险,这样要求我们每一个dba都要有扎实的功底(说这话并不代表我自己就有很扎实的功底?)。记得有一个哥们一次在qq上问我要truncate 一个100多G的表如何估算一下时间,也就是大约需要多久,我说一个具有2行数据的表需要多长时间,他差不多可能也是这个时间…他不太相信,问我原理,我告诉他我理解truncate其实就是更换了一个data segment,其实本质上是修改了数据字典,100g的数据oracle没做任何访问和调整…最后我建议他自己构造一个几g的表truncate看看时间…说了这么多,其实最终还是告诉大家要时刻坚持学习,首先的入门,如何算入门呢?我是这样认为的,如果你的语言能力比较强,那么看官方文档你就有一定的优势,也就是所说的自学成才;如果你基础不是很好,也没有较强的外语能力,我建议你还是找个培训机构吧,在培训机构学习,老师把知识及自己的实际经历传授给你,这不也是积攒工作经验的过程吗?
最后我不得不说一说刚毕业的学生该如何进入这个行业,一般院校刚毕业的学生现在找工作都很困难,要直接从事dba我觉得难度还是比较大,尽管很多人可能考了证书,但是证书就是证书,最终还是得看实力。刚毕业的学生就是想从事dba的话,我觉得不妨考虑一些大的公司,有些大公司可能每年都有给应届毕业生一些机会,他们会从头培养,这个当然和企业文化有关,很多公司可能都希望招聘能独当一面的dba,这就是所说的工作经验。对于我们没有工作经验的弟兄,不妨先曲线救国,找合适的机会转过来。
解惑四:云时代的来临,DBA该何去何从?
原创 2017-05-19 刘士明老师
今天不发技术文章了,还是根据学生的疑惑,进行一些主观上的解答。
在很多企业中,尤其是拥有庞大数据库集群的大型企业中,DBA们扮演着重要角色。但是,随着技术的不断发展,数据的存储和管理发生了很大的变化,虚拟化、云存储、微服务等技术的发展对DBA的职业生涯提出了考验。如果因此你就认为未来DBA们的工作会越来越轻松,那你就大错特错了,未来,DBA的角色将变得更加重要,虽然现在开发了很多自动化工具,但是技术还没有成熟,需要做的工作还很多,DBA在接下来的日子里存在并将长期存在。
任何数据库新技术的发展都是为了促使数据能够更加专业化,无论是DBA、数据架构师、数据工程师还是数据科学家都应该以此为己任。现今社会是一个数据为王的时代,企业只有依靠数据库才能更加高效的完成管理工作,数据让企业更具竞争力,但是数据的价值还没有完全被挖掘出来,还有很大的发展空间,很多技术也还在研发阶段。
DBA的角色未必是死了,只是转移到了新的位置。DBA应该把更多的目光聚焦在云上,例如哪些数据需要迁移上云,哪些需要迁移下来,如何迁移,以及如何整合云上的数据等等。DBA们要对自己的职责有一个全新的认识,把自己从一个数据库的管理者转变为整个数据库者平台的展示者,将自己的视野看的更宽,那么未来的路不是更窄而是更加宽阔。整个数据生态也在持续发展中,它们改变了DBA的角色,DBA不再只是管理以Oracle服务器为中心的公司数据中心,而是要管理存在于各种云上的数据库。
云时代的到来让DBA们的职业生涯产生了危机,但是有危机感是特别好的事情,有危机才有生机,DBA们也需要与时俱进。未来架构放在云上,架构不是变得更简单,而是在某种程度上变得更加复杂。数据库新技术的不断涌现虽然接手了DBA原先的部分工作,例如硬件容量规划、查询操作、安装和升级等等,但是管理的问题仍然存在。这并不意味着DBA的工作量会减少。例如它们无法查找和修复慢查询或查询产生的碎片,如何使用最少的资源建立最大的规模,还需要DBA专家来处理。
解惑五-开源数据库与商用数据库
原创 2017-05-22 刘士明老师
前段时间看了一篇文章,叫“The Death Of The CommercialDatabase: Oracle's Dilemma”--“商用数据库之死:Oracle的困境”,相当吸引眼球,其实作者只是想表达一些自己主观上的一些观点,比如企业继续迁移到云上,大多数云上数据库服务使用免费开源数据库;开源数据库不断完善,功能日益强大,市场份额大幅攀升成为大赢家;商业数据库不适合新兴使用场合;摩尔定律带来了处理器、内存、固态存储和网络吞吐量等方面的改进等等。其实这样说法太极端了,商业数据库不死,跟不上时代发展的商业数据库才会死。准确地说,商业数据库并没有死,而且到目前为止,商业数据库在功能和技术等方面还是要领先开源数据库一个时代的,尤其与商业数据库的老大Oracle相比,差了几十条马路,而未来只会越差越大。
但是随着互联网的普及,以及互联网赚取收入模式的转变,传统的软件式销售策略已经慢慢的背离时代了。同时,人们对数据库的需求也多种多样了,定制化和个性化是开源数据库致胜的法宝之一。另外一个不可忽视的事实是,云服务越来越流行了,不管是基于商业数据的,还是基于开源数据库的,在云服务商那里,都成了商业数据库,这也许会是开源数据库赚钱的重要途径,同时也是商业数据库起死回生的一剂良药。
不管是商业数据库,还是开源数据库,不存在谁死这一说法,都是共同发展的,共同进步的。