公司搞淘汰 Oracle 数据库的事情已经搞了好久了,这个事情其实和国内淘宝系搞的去 IOE(IBM、Oracle 和 EMC)是类似的,基本上也是迫不得已,Oracle 的维护成本太高,而公司内部基于 Oracle 数据库的数据仓库,也是问题频出;另一个原因则是 scalability。我相信这两个原因许多人都非常清楚。而这个淘汰,也不是简简单单换一个关系数据库,比如把 Oracle 换成 MySQL,或者换到云上(RDS)。而是有明确阶段性地演进,比如替换到 DynamoDB 这样的 NoSQL 数据库上面去;或者更彻底地,像我们接触到的某个产品,数据本身换到更廉价的存储 S3 上去,元数据才存在 DynamoDB 里,而原本 SQL 执行的运算的部分用 Hadoop 或者 Spark 来完成,这件数据源统一和演进的事情由一个做 infrastructure 的团队来完成。
Oracle 数据库要淘汰,而且还看到了 NoSQL 数据库作为其中的一个替代方案,那是不是说 SQL 要慢慢淡出历史舞台了?
不!
因此不仅回答是 “不”,还要补充一句——“恰恰相反”,和关系数据库本身不同,SQL 不但不会淡出,还要扮演更重要的角色。SQL 和编程语言一样,代表的其实是认识世界和描述世界的一种思维方式。比如下面这样的两个例子。
第一个,我们组日常都会接触的产品,计算成本和利润的逻辑,使用 Scala 写的,跑在 Spark 上面,而随着业务逻辑愈来愈复杂,许多 Data Analyst 介入来处理各种各样的问题,他们相较于工程师来说,代码的能力显然不是长处。但是他们对 SQL 很熟悉,对数据很敏感,把数据抽象成一系列二维表简直是手到擒来。所以我们开始尝试把那些核心运算逻辑重写成 Spark SQL。
第二个,前面提到的那个 infrastructure 团队,对客户要提供一层 JDBC 的封装,让内部的技术能力,也通过 SQL 的形式暴露出来。因为有了类似 Hive 这样的工具,在这种情况下应用层的部分可以尽可能地保持稳定,原本的 Oracle 下的 sql 有改动和转换,但依然是 SQL,只不过执行的不再是数据库引擎,而是 MapReduce 任务了。我觉得这件事情很有意思,也很有挑战性。困难很多,比如索引的问题,运算透明性(包括调试)的问题(SQL 有执行计划之类的工具可以让我们对其执行机制了解清楚,但是换成 MapReduce job 以后显然问题就困难得多了)等等。但是带来的收益是显而易见的,比如说,整个运算资源是弹性的——重要的急迫的任务优先级高,分配资源多,参与运算的 instance 多,从而缩短得出结果的时间。
去 Oracle 是否意味着关系型数据库不成功?
当然不是——
关系型数据库不但在过去的几十年内很成功,而且成功到被乱用滥用了。冯大辉以前说过一个被滥用的例子,阿里旺旺在用户量那么高的情况下,居然还用 Oracle 数据库在做存储。而我身边也有这样的例子,在我换组前,我原来的组,就把持着整个 Amazon 内部最大的 Oracle 数据库,一大堆分区,动不动成天几千万行的数据读写。其实不但是数据库这一层跟不上节奏了,还有工作流引擎也是,老的工作流引擎要淘汰,老团队不维护了,但是因为当时我们组在这个老东西上面的 job 太多,没法切换,成为钉子户,被迫揽下了维护这个老工作流引擎的任务,直到它退休,成为全公司唯一使用它,并且是这一方面淘汰老技术最慢的……
其实整体看来,Amazon 这样的互联网公司淘汰老旧的技术的速度已经算很快了(尤其是和传统软件公司比起来),有时候会遇到引进新技术和造轮子过度的问题(比如好多组都有自己搞的一套听起来高大上的数据存储系统,还有就是工作流系统,也是遍地开花),但是总的思路还是挺激进的:随时准备拆了轮子重造。问题小就解决,问题大就重写。且不说这做法利弊各占多少,每次搞宣传招人的时候,造新轮子和大轮子这一点,确实是吸引人啊。
再一个例子,记得刚工作那会儿,去北京联通开局,负载分担是 F5,服务器挂在单板上,存储用的是磁盘阵列,数据库双机用的是 IBM 小型机(和美国车一样,“保修期” 内屁事儿没有,“保修期” 一过就开始噼里啪啦乱出问题,然后赚修车费)。在当时这几个玩意儿听听就是不差钱的主儿才能购置装配的东西,看看互联网公司谁敢这么搞?无论是云存储还是云计算,用的都是成本很低的硬件,有的功能直接替代由软件完成,但是这恰恰解释了和关系型数据库的发展到辉煌,再到演退相同的现象,这些硬件也是在一定时期内代表了特定的技术流行,如今也慢慢被单设备成本低,但是规模更大的集群代替。
好,从这个问题继续展开,再谈谈 “人” 和 “技能”。
罗胖(罗振宇)的罗辑思维里面,讲到了社会化分工带来的社会进步,也讲到了手工艺人。简单劳动,甚至不简单,但是容易被模拟的劳动,还是不可逆转地慢慢地被机器和软件所替代。于是一大帮程序员都在喊技术至上,要做技术,这也是手工艺人谋生的基础。但是同样是技术,可不尽相同,有的也有逐渐被淘汰的趋势,比如说:
Java 总是在风口浪尖说要被淘汰,而我们也看到随着各路编程语言大张旗鼓地发展繁荣,饱受诟病的 Java 占有率确实下降了。但是 JVM 呢,却欣欣向荣,其原因在于,JVM 是个平台,而 Java 只是一门编程语言。编程语言的可替代性在于,随着机器性能的提升,开发一门更现代更符合问题解决思维的语言的成本,要比做成一个更现代化的稳定的虚拟机平台,要低得多。这也是为什么流行的 JVM 上的语言有那么多,作者往往是个人;但是熟知的 JVM 就只来自那么几家公司。再有一个,则是编程语言本身的缺陷,更难以被 “绕过”。
再比如说,一些曾经热炒的职位,比如 DBA,对于很多人来说,这样的职业已经很难再风光下去。单纯靠维护赚钱,这本来就是一件无法长久的生计。因为 “维护” 这一件事情,要么因为简单而能被机器和软件替代掉,要么因为复杂而被革命掉。工具,永远只是媒介,是可以被绕过的,不是最根本和最核心的问题。数据库和很多其他的技术一样,从软件和工程的最本源独立出来,壮大到现在,慢慢再回归本源。再比如,以往小公司都要招折腾硬件的工程师,刚工作的时候和很多同事一样,都折腾过单板和机架,但是现在呢,可以把存储资源和计算资源挂到云上。因此这样的人才需求会慢慢减少,而门槛却不见得降低,最终就只剩下少数几家能够提供云服务的大户。
因此,以后再遇到那些卖弄自己技术的人,那些虚张声势的人,我们其实可以思考一下,生成自己的判断,他所显摆的技术,到底是解决核心问题的技术,不容易被革命和替代的,还是只是另一种鲁迅笔下迂腐而无聊的 “‘茴’ 字的三种写法” 呢?
文章未经特殊标明皆为本人原创,未经许可不得用于任何商业用途,转载请保持完整性并注明来源链接 《四火的唠叨》
纠正:
“比如我们平常所写的卦字,其实它另两种写法是:掛 罣。”
应为 “比如我们平常所写的挂字,其实它另两种写法是:掛 罣。”
今天搜索 “过度工程” 有幸看了你的文章,很多是非常认同的,比如测试覆盖率。与你不同的是,我不是在某本书上看到这个词,而是根据 “过度设计” 想到的。
不过这里我不说正题,只说点这个回字的事情。首先,回字不是三种写法,而是四种。
另外三种写法:口中两竖,两坚之间两横;下框中有巳;口中有目。
当然,我也嘲笑过。但是当我后来用笔毛抄写佛经,我知道为什么需要知道四种写法。
在古代,文字并不像现在这么严格统一,字写出来,别人读,就需要读的人会认各种字,这是兼容性!
比如我们平常所写的卦字,其实它另两种写法是:掛 罣。
读到这,是不是觉得如果作为以前的读书人确实有必要掌握回字的四种写法呢?
我想说的是,当初大家年幼,鲁迅的文章读多了貌似有道理,却不知自己俨然已经被洗脑。
洗脑不是说鲁迅说的就一定是错的,而是我们在接受这种说教的时候,作出判断缺少思考。
这几天高考,什么能证明现代的教育就一定比过去的教育好呢?
其实当我真正把思维打开得更大之后,我发现现在的教育比过去可能更为迂腐。
这种开大不是仅仅技术或者科学上的,而是以一个婴儿的心态,丢掉一切所学重新观察和思考这个世界,已学知识的阻碍几乎没有。
我逐渐发现所谓的封建迷信原来是宇宙人生的真象,所谓的无神论原来是错的,所谓的进化论原来那么不靠谱,世人被科学的表象所迷惑。这句话说出来,中国(不含港澳台)估计不到百分之五的人会相信。原来那么多大科学家有宗教信仰,原来欺世盗名者那么多,原来历史教科书上所贬斥的人并不一定那么差,颂扬的人也不一定那么好……
我们的认知是需要建立在认知宇宙人生的规律的基础之上。
就比如最平常的 web 开发,假如我说我反对 MVC,主张最普通的分层,估计引来一片人嘲笑。但如果找出真有说服力的理由,估计没几个人能说出来,顶多是经验之谈,或者说一些 MVC 具有的,而分层却可以通过一定的手段同样具有的好处。
当初在大学同学间讨论爱国,我说我不爱国,我爱的是所有人,不以国为界。如果要以国为界,为什么不是省为界,市为界,以县为界等等。但坚持受国的人说不出一个真正有说服力的理由反驳我,他们最多能说的是 “某某英雄如此”,“大家都如此”,“反正应该爱国”,“怎么能不爱国呢?”
再比常用 java 的 web 开发框架,实为把很多 Java 程序换成了 xml 以期能让用户更方便地开发。但有多少人从接近事物本质的角度思考这种做法的利弊。恐怕多数人只是在想:会了这个就多掌握了一门技术,可以找工作或换工作加薪了。
这种行为与思考方式是没有基础的空中楼阁。
是什么限制了我们的思维?正是我们所学的那些,我把这称为 “做井观天”,已学的知识就是井,关键是人不能坐在井底。
本来只想说说回字,没想到会写这么多。
其实真正用什么还是要看平台建设的方向,大小,等等多方面的因素。
说实话,到能识别鲁迅笔下 “‘茴’ 字的三种写法” 之迂腐而无聊还是很需要一段学习的,评价技术也是一样,阅历和眼光都有要求。