zoukankan      html  css  js  c++  java
  • 5-10年的DBA如何独当一面

    在线运行SQL工具
    
    推荐可在线执行SQL的工具: http://sqlfiddle.com/
    
    这款工具,有两大特点:
    
    支持六大数据库,MySQL,Oracle,SQL Server,PostgreSQL,SQLite;
    支持在线编辑及执行SQL,无需自搭数据库环境
    简单了解下:
    
    
    
    image
    
    整个页面分为1,2,3个区域。
    
    区域 1 的编辑器用来创建数据库 schema ,比如建表,新建数据;
    区域 2 则用来编辑和执行 SQL;
    区域 3 用来展示 区域 2 中的 SQL 执行结果
    使用这款工具,无需你手工安装数据库便可以完成本指南所有的 SQL.
    
    完美!我们成功的完成了第一步。
    
    六、SQL 简易实战
    
    接下来,让我们为巧妇准备好精米。
    
    INSERT
    
    使用这条 SQL 命令,将添加全班同学的个人信息,包括姓名,学号,性别,身高,肤色,有无胡子,以及男女朋友关系,(当然这可不能让班主任知道。)
    
    INSERTINTOStudents(
    
    StudentId,
    
    Name,
    
    Gender,
    
    Height,
    
    Mustache,
    
    SkinColor
    
    )
    
    Values
    
    ( '001',N '陈冠奇',N '', 186, 'No',N ''),
    
    ( '002',N '谢堂风',N '', 182, 'No',N ''),
    
    ( '003',N '黄博',N '', 176, 'Yes',N ''),
    
    ( '004',N '李少杰',N '', 172, 'Yes',N ''),
    
    ( '005',N '徐少斌',N '', 163, 'No',N ''),
    
    ( '006',N '张白芷',N '', 172, 'No',N ''),
    
    ( '007',N '张少函',N '', 163, 'No',N ''),
    
    ( '008',N '灵昆',N '', 181, 'No',N ''),
    
    ( '009',N '夏平',N '', 158, 'No',N ''),
    
    ( '010',N '莫文丽',N '', 156, 'No',N '')
    
    INSERTINTORelationships(
    
    RelationshipId,
    
    BoyId,
    
    GirlId,
    
    BeginDate,
    
    CurrentActive,
    
    EndDate
    
    )
    
    Values
    
    ( 1001, '001', '006', '2002-04-01', 'Y', null),
    
    ( 1002, '003', '009', '2001-04-01', 'Y', null),
    
    ( 1003, '005', '010', '2003-04-01', 'N', '2004-04-01'),
    
    ( 1004, '002', '010', '2004-04-01', 'N', '2004-05-01'),
    
    ( 1005, '004', '010', '2004-05-01', 'N', '2005-08-01')
    
    接下来我们用 SQL 做一些有意思的事情:
    
    查找身高大于180cm的男同学:
    
    SELECTName
    
    FROMStudents
    
    WHEREHeight > 180andGender = N ''
    
    查找身高大于170cm的肤白女同学:
    
    SELECTName
    
    FROMStudents
    
    WHEREHeight> 170andSkinColor = N ''andGender = N ''
    
    查找最高的女同学:
    
    SELECTName
    
    FROMStudents
    
    WHEREHeight = ( SELECTMAX(Height) FROMStudents WHEREGender = N '')
    
    andGender = N ''
    
    查找有恋爱关系的同学:
    
    SELECTBoy.Name asBoyName,
    
    Girl.Name ASGirlName
    
    FROMRelationships Rel
    
    INNERJOINStudents Boy onRel.BoyId = Boy.StudentId
    
    INNERJOINStudents Girl onRel.GirlId = Girl.StudentId
    
    最帅的陈冠奇居然留胡子了,让我们记录下:
    
    UPDATEStudents
    
    SETMustache = 'Yes'
    
    WHEREName= N '陈冠奇'
    
    帅奇留胡子的原因居然是,陈冠奇和张白芷前两天分手了,我们要记录这段关系的破裂:
    
    UPDATERelationships
    
    SETCurrentActive = 'N',
    
    EndDate = '2008-04-01'
    
    WHEREBoyId = ( SELECTStudentId FROMStudents WHEREName= N '陈冠奇') AND
    
    GirlId = ( SELECTStudentId FROMStudents WHEREName= N '张白芷')
    
    任何的痛苦都离不开恋人的离去,张白芷居然去国外留学了,因此花名册少了这个人:
    
    DELETEStudents
    
    WHEREName= N '张白芷'
    
    帅帅的陈冠奇,怎么甘心就此沉沦,他又找了莫文丽做女朋友:
    
    INSERTINTORelationships(
    
    RelationshipId,
    
    BoyId,
    
    GirlId,
    
    BeginDate,
    
    CurrentActive,
    
    EndDate
    
    )
    
    Values
    
    ( 1006, '001', '010', '2008-04-01', 'Y', null)
    
    好奇的小乐,查了查莫文丽的后台,发现她居然曾有过三次恋爱关系:
    
    SELECTRelationshipId
    
    FROMRelationships
    
    WHEREGirlId = ( SELECTStudentId FROMStudents WHEREName= N '莫文丽')
    
    恭喜!到此为止,所有的SQL基本操作你都会了。
    
    七、SQL 晋级分水岭
    
    有竞争力的技术肯定是要花大功夫来磨炼的,否则人人看一遍就会的东西,卖得出什么高价呢!
    
    因此当大家都度过第一阶段之后,如何意识到还有第二阶段,第三阶段,甚至第四阶段就很重要了。那会影响你的长期发展。舒适区是留给平庸者的。
    
    从技术角度,我们习惯将 SQL 数据库开发分为 4 个阶段:入门,初级,高级,资深。
    
    注:技术角度可分这四个阶段,并不代表做到资深,你一定能年薪百万。可千万别这么想,很多朋友咨询我的第一个问题是,“黄老师,以我的水平,能要个30K不?” 这我不打包票,能做到什么收入完全看你水平和天意(没错,很多时候,赚大钱靠运!)
    
    在本文中,我只谈 SQL 技术水平的晋级,不谈其他。
    
    上面的入门指南,相信你看完之后,写 SQL 基本掌握了。这一阶段过后,就是要通过反复的操练这些 SQL ,直到你熟透这些 SQL 命令和语法。
    
    帮你度过这阶段最好的方式,是什么呢?刷题。没错,简单粗暴。这里推荐牛客网,你可以试着去刷:
    
    
    
    image
    
    左边是题目,右边编辑 SQL, 点击【保存并调试】即可运行 SQL。系统会提示,你的答案是否通过!
    
    刷完这 60 多道题目,相信你的感觉一定很好!
    
    小编推荐:
    
    墨天轮,专注数据库,为技术爱好者倾力打造,承载技术人的持续成长,汇聚最新技术动态、前沿主题课程。官网链接:modb.pro。
    
    再推荐基本经典的小书,可以兼顾理论与实战,具体看哪一本,依据你使用的数据库软件来:
    
    《SQL 必知必会》(综合)
    
    《T-SQL Querying》中文《T-SQL 查询》(SQL Server适用)
    
    《Oracle编程艺术》(Oracle适用,只要是 ASK Tom 主编 Thomas Kyte 的著作不会错)
    
    八、SQL 数据库深入学习
    
    当你跨过了第二个阶段,所有的 SQL 命令都会了,看到 SQL 题目也有自信了,自认为天下数据,为 SQL 皆可取的时候,你应该来挑战下高难度了
    
    现在你的角色是河南郑州大学的学生会主席,所有学生的信息都归你管。别小看了这学生会主席,2017 年郑州大学在校人数总共有7.26万人。此时,你再查找个又白又高的女生,嘿嘿…别想歪咯,数据查询就会很难了。看你急不急!
    
    怎么办呢,SQL 命令你也玩熟了,但每次查个人都要花费个20,30秒,查个交友记录,快则1,2分钟,慢则半天!
    
    此时,你该修炼下 SQL 性能调优了。而 SQL 数据库开发真正的挑战才正式开始!
    
    要研究数据,就要从体系着手,我总结了一下目前正在使用的 SQL Server,它的知识点可以用 20 张思维导图来表达。而 SQL 性能调优正是与这 20 个知识点息息相关。
    
    这20个知识点可以在这篇文章中找到:
    
    20 图归纳 SQL 数据库知识点
    
    如果你使用的是其他数据库,那么一份详细的数据库体系图,是必不可少的。它就是深夜里的北极星,为你照亮了前进的方向。
    
    当然你跟我一样,对纸质书情有独钟的话,这里推荐几本:
    
    综合类的数据库调优书:
    
    《数据库索引设计与优化》
    
    《数据查询优化器的艺术》
    
    Oracle 相关调优书:
    
    《Oracle Concepts》
    
    《Oracle 体系架构》
    
    《Oracle DBA 手记》(云和恩墨出品都是精品,咳咳,不是小编加的,原本就有!)
    
    MySQL 相关调优书:
    
    《高性能 MySQL》
    
    SQL Server 相关调优书:
    
    《Inside SQL Server 》系列
    
    《T-SQL 性能调优密集-基于 SQL Server 2012 窗口函数》
    
    这些书看下来应该会耗掉你2-3年的时间。当然,如果你愿意痛饮咖啡,用007(一周工作7天,每天连续12个小时)的速度来看书,那也可能1年左右就够了。但不建议这么干,身体健康比什么都重要!
    
    九、SQL 人的职业生涯
    
    当任何超过5秒的SQL,在你手下都变成了秒出时,你可能会昂天长啸,“老子终于天下第一啦”。不过且慢,你别忘记了,你还是会被项目经理催着干活,比如改个字段,改个需求,改处bug等等。此时,你恐怕最需要的是,一个得力的左膀右臂,一个能打的需求分析,更重要的是搞定灵活多变的业务变更,甚至你要挽起袖子,自己盯着业务变更,发布更灵活适配的数据模型。此时数据建模,业务管理,数据治理,数据挖掘,安全审核等等都来了
    
    此时,正是你职业生涯的分水岭。
    
    若你觉得你就是干不了开会,扯皮,来回折腾的活儿,就喜欢指挥机器干活,那就选择偏技术的方向,比如运维DBA,数据库研发。从事这条路线,意味着你要懂的更多的边角料知识,比如操作系统,网络协议,自动化编程,架构设计,分布式计算,云计算等。这些知识资料早已有现成的资料可以参考,只要耐得下心来学,一定有成功出头的那一天。但也极其容易放弃,因为东西实在太多,太杂,而且有些边缘性的学科,一时半会你还用不到,比如网络协议。但如果不懂网络协议,碰到数据库安全的问题,你就容易败下阵来,死的很惨。你的任何一个缺点都会伴随每一次的故障而被无限放大,被很多同事视为毫无战斗力,让你自己都开始怀疑自己,鄙视自己。所以干这行,首先要有一颗强大的心脏,在无数的口诛笔伐之下,你要坚挺自己的信念,不要怀疑自己的判断,丢失基本判断能力。
    
    且运维不仅仅是个智力活,还是个体力活。
    
    白天所有运行在数据库上的应用都好好地跑着,一般不会有大问题,看上去 DBA 很轻松。但是一到晚上,你们的活儿才刚刚开始。有索引重建,磁盘告警了;有 ETL Job 失败,数据库卡住了;有集群节点宕机,需要更换机器了,等等。总之 7*24 的重活,累活都来了,而且是必须赶在天亮业务开始之前修复。有时候,那些夜猫子也很凶悍,大晚上非还要抢点货,点个夜宵啥的。一下单,系统崩溃了,你的美梦也就泡汤了。或许你感冒了,正在休息,不行你得起来;或许你正在电影院看着复联呢,不行,你得回公司。总之,为了工作,为了抢修数据库,你必须第一时间赶赴现场。多少年轻的DBA都曾在高压现场,留下了人生中第一口鲜血。
    
    你说DBA那么累,傻子才选,你走第二条路,扯皮!
    
    恭喜你,你选了一条可以通向公司高层的路。也许是 CTO,也许是CEO。通过做数据运行,数据产品,或者数据分析,你认识了全公司上上下下的大小头目,今天与运营总监吃个饭,明天与生产总监喝个咖啡。总之他们提的一切需求,都希望你全部搞定。你说你团队人手不够,公司不肯招人,跟他们有什么关系?你说你excel就能实现的功能,为什么非要整一套炫酷而无任何实用价值的可视化报表分析软件?他们就想要!你说你这个需求要1个月才能做好,他们拍着你的肩膀说,“你可以的,要相信自己。俩天,顶多两天就能搞定!”
    
    你带着这么多需求回到你的办公室,看着满脸青春的这些小伙小姑娘们,刷着微博,舔着朋友圈,个个脸上洋溢着热焦玛的香气。你好忍心让他们陪你加班到凌晨,还自费打滴滴么!
    
    好不容易,2个shot的星爸爸热焦玛下肚,你来了精神。熬到凌晨2点,连续2,3天回家看不到老婆/老公的笑脸,还给自己打气,一切都是为了家庭。等到交上报告一看,“这里数据改一下,口径要和运营部统一”,“哪里整个版面太丑了,影响公司形象,再修得漂亮一些。还有,这些报表都要加上权限,不能让其他部门人看到。好吧,明天下班前我们再谈”。
    
    好吧,这回你只得厚起脸皮请小朋友们一起改了,晚餐自费交了KFC全家桶,全组加班人员,一律打车报销。你默默的在群里丢了一个又一个红包。收到一个又一个的“老板帅气,老板再来一个,宝宝没抢到”
    
    终于赶在deadline之前做完了,“怎么样,我说你可以的吧,看好你哦。这样,我们昨天几个人会后碰了下,发现你原来的设计也挺好,只是稍微还要再改改;还有,数据需要增加导入导出功能…”
    
    如此反反复复,来来回回的折腾,某天你突然感慨,原来“别人用了一年,真的学到了我十年所用会的SQL技术”。此时,你会坚持自己的选择是对的吗,假如不幸的是,公司投资人撤资了,你所熟悉的环境没了,怎么办?
    
    因此,在这些零零碎碎的项目锻炼中,你能否总结有效的规律,提高自己业务沟通的能力,掌握数据治理的策略,严格把控项目管理的进度,都成了你的必修课。一旦松懈和迷茫,可真是万劫不复!
    
    十、SQL 数据库必读书单
    
    如果你选的是 DBA,除了各家数据库文档要通读之外,还需要补充云计算相关:
    
    《数据库系统实现》
    
    《云计算通俗讲义》
    
    《让云落地:云计算服务模式》
    
    《云计算架构技术与实践》
    
    《Kubernates权威指南》
    
    《微服务架构设计模式》
    
    如果你选的是业务设计(无论是运营,产品,数据分析,尤其是数据分析师),那么这些书,肯定是要读一读的
    
    Kimball 的系列书:
    
    《维度建模权威指南》
    
    《数据仓库与商业智能宝典-成功设计、部署和维护 DW/BI 系统》
    
    业务场景解决方案:
    
    《计算广告》
    
    《推荐系统实战》
    
    《决战大数据》
    
    《大数据之路-阿里巴巴大数据实践》
    
    《企业IT架构转型之道》
    
    《设计数据密集型应用》
    
    大数据系列:
    
    《Hadoop 权威指南》
    
    《Spark 权威指南》
    
    《Hive 编程》
    
    《Hive 实战》
    
    《Spark 高级数据分析》
    
    《Hadoop构建数据仓库实践》
    
    以上就是基本路线了,能在5-10年搭好这个基础,你定当可以独当一面。 
  • 相关阅读:
    leetcode-Single Number
    设计模式六大原则(4)——接口隔离原则
    设计模式六大原则(3)——依赖倒置原则
    设计模式六大原则(2)——里氏替换原则
    设计模式六大原则(1)——单一职责原则
    观察者模式
    转:画图工具
    android 博客列表
    app crash率的标准
    查看某一个开发者代码修改量的脚本(ios平台可用)
  • 原文地址:https://www.cnblogs.com/vmsysjack/p/12322545.html
Copyright © 2011-2022 走看看