68,589
社区成员
本人在菊厂十来年的职业生涯中一直深耕数据库方向。也带着团队。
这里,个人针对数据库的学习,说说自己的一些发展看法和经验。
个人认为,学习任何一门技术都是有目的的:要么是为了考试不挂科、要么就是为了靠技术赚钱吃饭等等。
我们必须以目标为导向,寻找我们学习数据库的理由。毕竟没有人愿意通过学习数据库技术来修身养性吧。
既然学习数据库技术是带有浓浓的功利性质,那么我们针对不同的目标,应该怎么学习?如何快速达到我们的目标?
对于大多数在校大学生而言,“不求满分,但求及格”的心态很正常,毕竟我也是过来人。
而对于学霸们,这条建议就忽略吧,毕竟门门满分是基本目标。
你觉得数据库内核代码难,不好学?
那考试会考吗?都考哪些? 考试不考的话就可以先放一放,忘掉烦恼。
你觉得数据库存储过程写起来很费劲?
那考试会考吗?都考哪些? 考试不考的话就可以先放一放,忘掉烦恼。
你觉得数据库功能参数非常多,既记不住,又难以明白其原理?
那考试会考吗?都考哪些? 考试不考的话就可以先放一放,忘掉烦恼。
针对这些难题都知道怎么面对了,试问还有什么难的吗?
那么,如何实现数据库学好呢?
记得当初我们学习的课本是《数据库概论》,作为学生,考试内容当然是从课本中来。
高考是怎么过来的? 就学习一本书,考试60分通过而已,很困难吗?
概念原理、关系模型、物理模型、E-R图、数据存储类型、ACID特性、数据库三范式等等概念性的知识点,就当语文来学习,总结、提炼并背诵。
重点是数据库SQL语句,你把它当数学题做,做多了就熟练了。
考前一周怎么办? 老师画的重点必须整明白,过来人都知道。
这样,一门“语文”+一门“数学”,还有老师画的重点,考试通过我认为对于我们普通的大学生而言不是问题吧。
在准备拼命奋斗前,我们需要明白,当下想吃一碗什么样的饭?
数据库相关的IT技术岗位,常见的主要是:应用开发、内核开发、DBA等。
2.1 应用开发岗位
关于应用开发岗位,如果涉及到数据库技术,常见的就是以数据库使用为主。
此时,我们完全可以认为,数据库就是一款存储数据的软件而已,应用开发只要会使用它就行了。
这样,不同的数据库版本、不同的管理方式、不同的工作原理、不同的架构设计等等,大部分我们可以不用关心。
在数据库方面,我们重点就是放在SQL语句的编写、存储过程函数的编写,以及数据库的基本常识就可以了。
针对存储过程函数的编写,完全可以当作就是一门编程语言,那么作为应用开发人员,搞编程是最拿手的技术了。
由此可以看到,把握技能重点内容,数据库对应用开发人员而言就不能算是难事,超出SQL代码以外的技术完全可以请DBA或内核人员帮忙搞。
2.2 数据库内核开发岗位
这个数据库内核开发岗位相比于应用开发岗少很多。
数据库是一套复杂的软件,需要多人协通开发,少则数百人,多则数千人。
这个岗位虽然与数据库有关,但是“责任田”很明确。
SQL引擎、存储引擎、安全、高可用、公共组件、客户端接口、数据库工具等等基本都有专人负责,由架构师或技术总监统一调度开发工作。
这里的开发技能是基本要求,对数据库底层原理、算法以及接口和函数调用要非常熟悉。
虽然要求对数据库底层非常熟悉,但由于“责任田”很明确,这个要求开发人员完全可以掌握属于自己的“一亩三分地”的数据库内核代码,其他的数据库功能有一个基本了解就可以了。
就拿我个人而言,每次咨询内核开发大佬们的问题时,总是先看看那张记录“责任田”的EXCEL表,找对人是关键。不然就会等到一个“Sorry~”的答案。
这个岗位重点突出、要求专而精,拥有匠心,逐个钻研,拿下自己的“责任田”就算满足要求了。如果一不小心,连其他人的“责任田”都拿下了,那恭喜你已经成为大佬了。
2.3 DBA岗
DBA的岗位目前还算比较多,侧重点是数据库管理。
从绝大多数的DBA课程就可以看到,基本的学习路线是:
Linux基础-->安装部署和集群搭建-->SQL语句-->对象管理-->底层技术讲解-->备份恢复和容灾技术-->性能调优。
目标如果是从事DBA岗位,那么建议可以遵循这个学习路线去学习。
从个人的学习经验说,刚开始搞懂数据库的所有功能确实有些吃力,但是IT技术的学习基本都是遵循着先模仿、再深入、最后再超越出师。
这方面的数据库学习,建议寻找专门的DBA课程做一个系统的学习,模仿-->探究-->融会贯通。
作为DBA,数据库的稳定运行是职责所在,它要求我们对数据库的功能使用非常了解。所以,侧重点在数据库管理方面。
关于数据库内核的研究,可以帮助我们更好地完成DBA工作,但并不要求我们精通。
关于存储过程、SQL的熟练程度,对DBA的要求主要是会简单和常见的SQL编写就可以了,如果是偏SQL优化的DBA,还需要对SQL执行逻辑和算子非常熟悉,要知道利用数据库的工具诊断和优化SQL。
总而言之,数据库是一门技术,它难与不难主要看自己当下的侧重点,掌握学习思路和学习方法,抛去暂时用不到的技术内容,可以大幅降低学习数据库的难度。
凡事基本都是先易后难,先把必须的那些技术内容学到手,满足当下需求是王道。
然后,随着经验累积,厚积薄发,技术更上一层楼也就显得顺理成章。
以上内容仅代表个人观点。
也欢迎大家和我多多交流,一起为国产数据库发展贡献出自己的力量。