加入知乎也有一两年时间,参与过不少数据库的讨论。不少想入行或者刚入行同学,经常想问哪个数据库更流行啊,做DBA这一行有没有前途啊,或者是某个据库的某个特性怎么使用啊。方向性问题不好回答,太细的技术问题回答不了。最近几天有空,把一些方向性的问题做些小结,算是补充回答。
先拿自己的技术经历现身说法,没兴趣的同学可以略过这部分。
读研阶段学的是数据库,时间是06-09。有门课老师手写了的两段锁协议的严格证明,还有点印象。比较有实践性的课程是老板的大作业,自己实现一个SQL解析器。那会谷歌三驾马车的论文刚出来,国内学术圈还未波及,老板的课题组开始关注hadoop也是10年之后的事。三驾马车论文发在了OSDI上,数据领域的顶级是VLDB和SIGMOD,关注度不高也正常。学术圈网红stone braker跟谷歌的论战,还是后来关注“飞总”的公众号才了解到。实验室关注的偏理论的领域是空间数据库,时空数据建模,偏实践的领域是XML数据库(json没现在流行),乐观并发锁,空间索引等。大多实验室同学毕业后都是普通码农,跟专业领域脱钩了。有同学去Sybase,算是为数不多留在圈内的,其实后来sybase也不存在了。数据库的巨头在都美国,而数据库作为一项基础软件,特别需要时间的积累。整个基础软件领域,大企业没积累的意愿。那会甚至没什么互联网大厂,已经衰落的某度当时是冉冉升起的明星。互联网、云计算兴起之后,国内这一领域是存在弯道超车的机会。
毕业之后进入电信行做了一枚普通码农。开始写了一段业务代码,需要手写sprintf函数拼接查询的SQL,没有ORM这种东东。第一次接受隔壁组的DBA老师傅培训SQL规范,印象颇深,原来数据库有这么多的坑。感觉oracle的PL/SQL是个好东西,存储过程开发效率高,但是需要专业的研发DBA把关,否则数据量大了并发高了坑太多,一个查询语句写的不好就完了。虽然在线更新存储过程容易,但是要重建索引这类的操作风险太大。研发DBA技术门槛挺高的,需要对数据库的各种技术原理掌握熟练,会做数据库设计,能定位性能问题。
后来转做infrastructure软件,搞了一段分布式数据库。那会NoSQL开始逐渐流行,11、12年吧。做分布式数据库那段虽然时间短,但是很有挑战的,data sharding/replication,CBO,列存,等等,那会开始接触。学校学到的一些基础概念,开始体现出来作用,并发控制,索引,等等。
再后来就混迹互联网了,技术的演进曲线也进入互联网的节奏。搞了一段KV,撸了一个NoSQL的轮子,搞了一段CDH,还做了NewSQL的POC,也算是跟数据存储不分家了。个人方面,接触了不少DBA同学,有幸给盖国强老师提过几个问题,认识了盖老师公司的一个很好的朋友。NewSQL和Big data方面,也有幸接触pingcap,cloudera,kylin的同学。总的感觉是,数据库领域正在加速发展,面临一场颠覆式革命:
- 在传统行业,不得不承认oracle构建了一个很大的生态圈。例如圈内的恩墨、沃趣都挺不错。以前公司需要一个自己的研发DBA专家,现在这些工作可以交给恩墨他们来做。数据库运维的自动化程度越来越高,中小型企业对DBA的依赖度越来越低。一个例子就是SQL审计,原来需要DBA老师傅人肉来看,现在有工具了。另一个例子是前几年比较火的数据库一体机概念,各种硬件相关的参数配置都不需要DBA做测试调优了,厂家出厂时配好。
- 互联网领域的数据库,开源免费是王道,定制开发是实力,云数据库是未来,对传统DBA的需求逐渐变小。小用户,mysql/pg完全够用。大用户主要面临两个问题,单机性能不行,跨数据中心多活。这俩问题无法规避,没有现成方案。巨头级玩家,有自己的数据库内核团队,做分库分表、分组复制等插件式的定制开发。现在阿里云能动一些大手术甚至自己造轮子,还是要点个赞,毕竟是国内基础软件领域为数不多的干货。大厂有问题可以直接反馈到数据库内核团队,不再是传统模式。
- 云数据库的崛起。Amazon推出了servelesness,开发者不需要为配置一个专门的数据库链接。与此同时,oracle也在推智能数据库管理的概念,o记的描述中,部分数据设计工作都不需要了,DBMS会根据实际数据分布和访问情况智能创建索引。除了传统厂家,pingcap,cockroach等新玩家也看中了云数据库的领域。云计算一个核心理念就是降低人工运维的成本。云数据库不需要传统型DBA。
- 数据库界的urban legend。GPU数据库,AI做索引,这些话题很热门,但感觉三五年之内还很困难。
写到最后,必须总结啦。10年前,做个精通oracle的老师傅,可以说是高大上的岗位;目前也很高端,但是可替代性很强;未来呢,未来以云数据库开始,以智能数据库为终极目标,DBA老师傅,成本高还不可靠。
这是一个最坏的时代。IT技术更新换代太快,老技术被无情的淘汰,不可谓不坏。但是,这也是一个最好的时代。新技术的发展离不开人的智慧。社会永远离不开老师傅,老大夫,老先生。不需要的是裹足不前的老师傅。目前想做数据库领域的研发,国内的机会有很多,各大云厂商都是刚需。另外一方面,数据库领域的近亲Big Data,技术成熟度至多还处于关系库10年前的DBA老师傅年代。sparkSQL的CBO才刚刚出来,即使传统的数仓产品,成熟度也不高。如果觉得写代码Debug很辛苦,写SQL很拉风,可以关注下BigData领域,至少还有10年的黄金发展期。
罗哩罗嗦写了这里么多,希望多各位知友有所帮助吧。