Skip to content

结束语 如何系统地掌握一门数据库技术?

你好,我是俊达。

今天的这节课,是这个专栏的最后一节课。感谢你这段时间以来的陪伴,大家在评论区的留言我都有看到,多思考多实践确实是学习的最好方法,希望你可以继续坚持下去。今天这最后一讲呢,我们不聊具体的技术细节了,而是来聊一聊我个人对工作和学习的一些体会。

关于工作

数据库是IT技术中比较专门的一个领域,我相信来学数据库技术的,绝大多数情况应该都是和工作相关,而不仅仅是出于个人的兴趣。那么我们如何在工作中取得比较好的结果,获得同事、领导、合作伙伴的认可呢?

积极主动的工作态度

第一点是关于工作的态度。每个岗位都有一些基本要求、工作职责,这是作为一个员工首先要做到的。但是不要被岗位限制了自己的发展空间。要保持一个开放的心态,不要给自己设限,多尝试,就有更多的可能性。我刚开始实习的岗位是软件开发,主要是写代码的。项目中用到了数据库,因此数据库相关的一些问题,我都会尝试去了解、承担。比如我会学着安装部署开发测试环境的数据库、学着迁移数据。比如有时候同事会问我数据库怎么锁了?SQL性能好像比较差,是什么原因?对这些问题,当时的我很多都是不懂的。

遇到类似的问题,你有两种选择。一种是想办法撇清关系,这个事情和我没关系,我不懂,我很忙,我没空。另一种选择是认真倾听,先理解问题,然后再想想问题有哪些可能的解决方法。

这两种选择不一定有好坏之分,每个人都有自己选择的权利,只是不同的选择可能会有不同的结果。第一种选择,回避问题,问题最终可能是和你没有关系了,机会也和你没有关系了。另一种选择,你需要花更多的时间,付出更多的努力,但同时也能锻炼自己分析问题、解决问题的能力。

注重工作效率

第二点是关于工作的效率。每个人一天都只有24个小时。如果每天日常的工作都来不及完成,那自然也没有时间去学习、没有时间去尝试其他的事情。很忙可能有两种情况,一种情况是确实事情太多了,需要增加人手。还有一种情况,是自己的工作效率还有比较大的提升空间。

IT系统的一个重要作用,就是提升效率。作为IT行业的从业人员,我们有很多办法来提升工作的效率。我们可以使用工具,或者自己开发各种工具,将重复性的工作工具化、自动化。我宁愿把时间花在开发一个自动化的工具上,而不是花在每天机械重复的工作中。

思考沉淀总结

第三点是关于思考和总结。每天工作中处理的问题、做的项目、遇到的故障,都可以进行思考、总结,形成文档。建立个人的知识库,这不仅有助于自己快速解决类似问题,还可以为新同事提供宝贵的经验。

定期对自己所学的技术知识进行梳理,形成知识体系。积极参与技术分享活动,在团队内部或技术社区分享自己的技术总结。这不仅可以帮助他人,还能在分享过程中加深自己对知识的理解和记忆。每次系统出现故障后,详细记录故障的原因、现象、影响范围和解决过程。分析故障背后的深层原因,不仅仅停留在表面上。

关于数据库技术

最后我们来聊一聊数据库技术。虽然这个专栏主要讲MySQL,但是这里不限定在某一种具体的数据库,而是一类数据库,也就是常说的关系型数据库,包括Oracle、SQL Server等商用数据库,MySQL、PostgreSQL等开源数据库,以及大量的国产数据库。那么我们应该如何系统地掌握一门数据库技术呢?

在使用中学习数据库

要在使用中熟悉数据库,认识数据库。结合你当前的实际工作,解决好工作中遇到的一些实际问题。了解团队或合作的同事遇到了哪些数据库相关问题,尝试去理解这些问题。

使用数据库,也可以分为几个层面。

  • 首先是学会使用客户端来访问数据库,使用各种编程语言的接口(如JDBC、Python DB API)来访问数据库,使用存储过程来操作数据。

  • 了解并熟悉数据库内部的各种对象和基本概念,比如Schema、Database、表、索引、用户、权限、元数据等,了解某一种特定的数据库中,这些对象分别怎么操作,了解具体的语法。

  • 了解数据库怎么安装部署、参数怎么配置、数据怎么导入导出、监控怎么配置。

  • 学着分析数据库的内部状态,比如当前是不是有锁定,数据库在执行哪些SQL,数据库的空间都用在哪些地方了。

用好官方文档

好的数据库,都有很详细的官方文档。官方文档内容很长,用好官方文档,并不是说要从头到尾完整地阅读文档。但是我们首先要搞清楚从哪里获取官方文档,并熟悉官方文档的结构,通过目录了解文档中有哪些内容。当你遇到一个问题时,要能判断出在官方文档的哪一个章节可能会有问题的答案。

通常官方文档都会涵盖从安装部署、参数配置、SQL和命令语法参考、编程接口文档等。官方文档的一些章节,也适合深入学习,你可以通过官方文档,来了解数据库内部的一些设计、概念和使用方法。你也可以通过官方文档来了解数据库的新特性、新功能、语法变化和安全补丁等信息。对于开源数据库,代码本身也可以看作文档的一个扩展,你可以阅读源码或源码中的注释,来理解数据库。

学一点数据库的基础理论

数据库系统有深厚的理论支撑,掌握一门数据库技术,需要对这些基础理论有一定的理解。很多基础理论,在大学里数据库原理这门课中有讲过。虽然在学校时,由于缺少实际的经验,我们并不知道很多理论知识到底有什么作用,学的时候可能也是一知半解的。但是在工作中,有了一定的数据库使用经验后,再回头去看看这些基础理论,就会有不一样的体会。

对于数据库,需要了解关系模型,了解数据库的几个范式(1NF,2NF,3NF, BCNF等),SQL的基本语法和数据库处理SQL语句的基本流程,事务的ACID属性,以及实现事务处理的几个核心机制,包括REDO、UNDO、锁。

对于基础理论,我建议有条件的还是尽量去阅读一些领域内大师编写的经典的书籍、论文。比如Jim Gray 和Andreas Reuter编写的《Transaction Processing》,Michael Stonebraker 编写的《Readings in Database Systems》里收录的一些经典论文。如果发现翻译版的不好理解,尽量去阅读原文。

用好网络资源

最后一点,是用好网络资源。现在的网络这么发达,搜索引擎、知名的技术社区、以及各个大模型,这里应该能找到你想找的任何知识。比如遇到某一个具体的报错,在网上能找到很多的相关文章。

不过有一点需要注意,就是对网络上找到的信息,要有识别和判断的能力。对于从网上找到的命令、脚本,不要轻易执行。你要先理解这些命令的作用,在测试环境做一些验证。

在正式环境操作时,要搞清楚这些操作会不会带来一些副作用。比如文件误删除是一个比较常见的问题,你可以在网上找到各种数据恢复工具,但是这些工具使用不当,可能会对数据造成二次损害,导致原本能恢复的数据变成无法恢复。因此不要去执行自己不理解后果的一些操作,而是要找专业的人员,操作前还要做好备份。

好了,上面这些就是我个人对工作和数据库技术的一点点理解。希望对你也能有一些启发。

听我讲了这么多,接下来我也想听一听你对课程的意见和建议,这里我准备了一份 结课问卷,希望你能花几分钟的时间填写一下,我们也会做相应的改进,感谢支持!

图片