最近在新开的群里面,有一些群友的对话,让我不得不写这一片文字,来说说我的想法是什么。
事情的经过是,我在群里面转载一篇文字,关于软件重构的重要性,虽然作为一个DB 人员,软件的重构看似与 我们这部分群体无关,但实际上 DBA 是最接近于软件和软件产品,甚至是软件项目的。
下面一些同学,提出数据库不就是运维吗,不是很悲催吗,虽然这样说的同学不多,但给我一个很想表达不同观点的冲动。
搞数据库的到底是不是搞运维的 ?
我的回答是NO,NO, NO
那么为什么搞数据库的我不认为是搞运维的,首先我要重申一点,我个人一点都不认为,搞运维的是低端的,是不值钱的,想法我认为搞运维的同学,实际上技术水准应该更高,甚至要高于普通的开发者。至于运维同学怎么想,我想会有运维的同学来,去写这样的文字,来反驳。作为 DB 人员,我1000000万个不同意,搞数据库的就是搞运维的这样的观点。
反驳的理由和原因如下
在反驳之前,我们先说说数据库是什么,数据库是软件开发中,至关重要的一环,软件项目中,可能没有MQ ,KAFKA, 甚至特别小的项目中,连前端和架构都没有,但一个软件项目中,一定有数据,随之而来的就是一定有数据库,哪怕他是sqllite,他也是数据库。早前的一些软件产品也是基于数据库开发而来的,尤其是ORACLE,通过大量的存储过程组织,来编写一些财务系列,甚至金融类的一些软件。
随着软件的消费群体和使用的群体的扩大化,软件行业有了突飞猛进的发展,各种架构和各种的软件项目的形成,越来越复杂化,而数据库部分实际上也在快速的变化,举例 MQ 系列,主流的使用的软件不过3-4种,而数据库主流的则数不胜数,类型也形式多种多样,RDBMS , NOSQL ,NEWSQL , 网状,时序,缓存 等等,这些处理数据的都是数据库家族中的一个部分。
所以一个DB 人员是不可能将以上的这些内容全部融会贯通的,这也就是说DB 人员是要分类的,这和软件人员分类是一样,有JAVA,.NET, PYTHON, GO ,所以 DB 人员的分类和属性的标定性,并不比软件开发人员少,甚至可能更多。
反驳理由如下
1 DB人员,需要对所使用的数据库软件,有深层次的认知,这里面包含了数据库软件,与系统层之间的关系,与开发软件契合度之间的关系,同时数据库软件本身的设计原理,也是DB人员需要了解和理解的,做到这些,才是一个合格的 DB 人员的标配。
否则不能标称自己是 DB 人员,只能是一个数据库操控或操作人员。
2 DB 人员还应该与时俱进的跟进数据库的发展的脚步,数据库发展的速度之快,上到五花八门的数据库不同的类型和不同的功用需要了解,并对开发软件的项目逻辑进行适配,下到各种数据库软件的特性和本身的小毛病,进行细致的了解。
否则不能标称自己是DB 人员,只能是一个数据库操控或操作人员
3 DB 人员还应具备与软件项目设计中的一些业务理解,和设计思路的了解,甚至是介入,目前数据库产品本身在项目中,已经不是一个数据库可以完全HOLD住 项目的形成,尤其一些大型的项目,所以DB 人员需要有经验来分析和引导,一个项目的数据库的种类与那些业务逻辑和设计更能适应,降低开发项目中的成本(包含因为选择不适合数据库导致开发人员更多的代码,和架构上面的付出),所以DB与整体的项目的成本还有关系。
否则不能称自己是DB 人员,只能是一个数据库操控或操作人员
4 DB 人员对于一些简单的程序设计里面的知识也应该有了解,不了解软件开发中的一些知识,很容易车手掣肘,或被人甩锅,如软件开发中,对于高并发没有进行控制,架构也没有考虑,直接将全部的突发性并发,短时间加载到数据库,而最终由数据库买单的事情,屡见不鲜,而很多情况下,没有懂行的数据库人员,最终这些问题,由数据库产品和数据库操控人员买单。所以一个DB人员需要懂一些软件设计的思路和方法。
否则不能称自己是DB人员,只能是一个数据库操控或操作人员
5 DB 人员还应该具备,自我开发的和设计规避数据库短板的能力,如PG 中的一些AUTOVACUUM 的问题,如何能在软件设计中避免,或我们设计一些程序来缓解这些问题,设计出一些辅助的架构甚至是产品,也是DB 人员应该具有的能力,至少应该有相关的思路。
否则不能称自己是DB人员,只能是一个数据库操控或操作人员
更高级的DB 人员,甚至能对数据库的源代码进行修改,从数据库使用中发现问题,提出问题,解决问题,否则 各大软件公司的 BUG 提交栏上 那些提交BUG 的信息是从哪里来的,有一部分就是 DB 人员提出,甚至给出解决方案的。
基于此,DB 人员是一个综合性的,一个融合性的岗位,如同某相声演员在表演中提出的,相声演员就是文化的杂货铺,数据库DB 人员本身也是一个融合了数据库运行维护知识,数据库开发知识,数据库原理论,数据库底层硬件匹配和操作系统部分知识,以及具有设计思路,和尽量规避软件设计在数据库选择和使用中产生风险的岗位。
说完这些你还觉得,DBA 是一个运维人员,这不是搞笑吗 ?
DATABASE + ADMINISTRATOR = DBA , 没有DB 知识只知道建立索引,进行数据导出导入的那些,只能叫administrator ,没有DB ,因为DB 没有那么浅薄, 而光有DB知识,没有多少年管理经验和采坑的,只能叫DB 没有A.
一屋子的开发,可能连一个DBA都没有,但有DBA的企业 必定是大型企业,这点已经说明了一切。
最近问问题的同学挺多的,也有问有没有群的,实在是忙没有建群,所以问的人多了,想想还是建一个群,但本人写文章不懒,其他的比较懒,因为问POLARDB的问题的多,所以建立了一个POLARDB和PG,MYSQL,MOGNODB,REDIS,SQLSERVER以及文章问题的讨论群。希望能帮助自己也帮助大家共同提高,要进群的,可以添加微信 liuaustin3 ,来申请加群.