在读研究生的时候,关系型数据库一直处在鄙视链的底端。对于大数据时代而言,关系数据库仿佛已经是陈旧落后技术的代表。但在工作以后才发现,那些对于NoSQL的大肆宣传往往和实际脱离很大,在目前大部分的业务系统,特别是没有上云的系统中,「关系型数据库」依然处于主导地位。Oracle依然是业界的老大哥,而不像大部分人认为的那样行将陌路。虽然NoSQL数据库在大型数据中心的地位愈加巩固。但对于大部分的离线业务系统而言,Oracle为首的关系型数据库依然占据主导地位,我们日常维护的大部分业务系统,网站使用的数据库,基本为Oracle和MySQL。
除了在本身做互联网或者软件开发的公司,大部分公司的数据库维护人员对于SQL的了解仅仅限于导入导出数据和对数据进行一定程度的筛选。更加复杂的用途,大部分时候都直接购买专业的或者定制的软件进行处理。这时候,如果你是一个SQL专业人员,你就知道自己有多嚣张了,别人干好几天的工作可能你的一条不到100个词的SQL语句就能解决。但这一切在没有工作前是完全体会不到的。
在大学学习的时候,对于关系数据库了解最深的就是安装和使用Oracle,由于没有实际的业务需要,很难理解SQL语言的强大。特别对于计算机专业而言,Oracle繁杂的安装,复杂的操作方式和SQL语言执行的低效,让对于过程化的C语言的痴迷的程序员们对SQL这一类集合型语言嗤之以鼻。但是当在实际工作中运用时才发现,SQL确实能在实际工作中大放异彩。因为当你投身实际的业务中时,你会发现大部分电脑和服务器上并没有C或者Java的开发环境,而且实际工作中的大部分系统都是离线系统,不可能像在实验室环境那样通过Yum或者Apt去迅速获取所需要的安装包。总而言之,想通过使用C、Java或者Python(这个可能好些)迅速实现业务需求是不现实的事情。但是这件事情对于熟悉SQL语言而言就变得异常简单。只要一个简单的数据库访问软件,如Navicat(到实际工作中才明白Navicat高价的原因),就可以在数据的海洋里为所欲为。只要你集合论学得好,基本可以解决90%的数据使用难题。如果这样还不行,还可以使用SQL的过程化语言进行复杂数据处理。总之,你不用配置任何环境就可以获取所需要的数据。然后周围的人都像你投来崇拜的眼光。
对于更加复杂的业务系统需求而言,SQL同样显得非常的高效,你可能只需要写几个简单的Python语句和SQL语句,就能够构建符合需求的业务能力。这样的方式可以不仅可以在实际过程中节约大量的代码量,而且可以极大的减少调试错误的时间。很多程序员会觉得SQL执行效率低,喜欢用底层数据库接口去操作,如游标。但是在实际过程中,SQL执行效率低的原因往往是SQL写的不好,而不是SQL不具备快速执行的能力。
除此之外,SQL的嚣张之处还在于和其他业务系统的融合,基本所有版本的Excel(Microsoft Office,OpenOffice)和可视化的BI系统(如PowerBI和FineBI)都支持直接连接数据库,可以通过SQL语言直接抓取数据。这对解决数据处理时的一致性问题具有良好的效果。因为大部分的Excel在工作时都需要对更新的数据做重新处理,费时费力,如果想省力,还需要掌握VBA编程(微软编程的复杂性不言而喻)。可以说,掌握了SQL,你在数据使用上将比大部分人更加具有效率。
可以说,在数据时代,SQL是高效率获取数据信息的最佳工具。