程序员需要了解数据库知识么?
极客时间《朱赟的技术管理课》学习笔记 09
12 每个工程师都应该了解的:数据库知识
2018
最近打算学习一下 MySQL 的基础知识,订阅了一个专栏,不出意外的,现在已经远远落后于专栏的更新速度。
最早接触的数据库是 Oracle,SQL Server 也用过一些,还曾经试图成为 DBA,但是因为止步于单位的数据量比较小,实践练手的机会也不多。现在的情况是“外来的和尚好念经”,数据库的管理已经外包出去了。
一个公司如果数据库从来不出问题,那一定是因为没有业务量或者流量。
这句话说的没错,只是我没有遇到过因为业务量或者流量造成的数据库问题,感觉更多的是因为应用写的不够好。
在 2006 年前后,单位曾经上过一个 ASP.Net + Oracle 的项目,当时就遇到访问超时的问题,但是感觉问题主要出现在应用写的不够好,以及数据库的访问方式上。当然,那个时候的 ASP.Net 似乎还是 1.0 到 2.0 之间的版本,可能本身也存在一些问题。
个人感觉,对于数据库,如果在选型上没什么发言权的话,那么不妨拿来就用,一般的应用不会遇到数据库本身的瓶颈,不妨把关注的重点放在如何用好手头的数据库上。
对数据库有一定的了解,在项目之初就注意建立合适的索引,设置合理的备份机制,写好查询语句即可;当业务有了起色,数据库的确成为瓶颈的时候,再考虑如何优化。
参考链接:https://eng.uber.com/mysql-migration/
2021
上面留言是在 2018 年左右写的,后来在极客时间学习了《MySQL 实战 45 讲》和《SQL 必知必会》,后来还学过一段时间的 Elasticsearch 和 Redis,感觉自己其实在理论上已经基本合格,但是在实战经验上就相对匮乏。
如果没有删过生产库,没有造成应用宕机,那么就不会成为好的 DBA。
现在似乎很流行把 Elasticsearch 甚至是 Redis 当做数据库来用,再加上 MySQL,似乎已经可以应付大部分的业务场景了。
看到留言里面大部分都在说,这篇文章类似数据库的简单科普,不过我觉得其实已经涵盖了作为程序员需要了解的大部分数据库知识。索引、事务、锁、缓存、主从……,如果都能有所了解,那么应该已经超过 60% 的技术人员,并且可以和面试官谈笑风生了。
我也觉得作为一个公司或者团队,根据业务需要,可以考虑选择不同的数据库,当然也得考虑到团队现有的人员储备。
版权声明: 本文为 InfoQ 作者【escray】的原创文章。
原文链接:【http://xie.infoq.cn/article/71f4f093094c861f8a2c42b94】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论