导读:
去年很多朋友私下或新浪微博上在总结自己的职业生涯与职业规划,也感觉到很纠结与彷徨,尤其技术人的职业生涯,随年龄增加,一些优势逐渐丧失。4月13日数据库技术大会的主办方举行的晚宴上,也让本人主持一个大家感兴趣又贴合实际的话题,最后选择的话题是 “三十岁后的IT人 如何抉择人生路”,遗憾的是预订酒店饭桌是几个房间打通的长排格局,而不是一个大厅方式(总共:8桌),大家无法围绕在一起,为此只是小范围讨论了下,今天看到曾经阿里巴巴数据库团队的海波兄弟总结分享,非常有意义,转载给大家共同欣赏!
十五年前,你或许还不懂爱情,看Jack和Rose执手相看泪眼,只是蒙胧的心痛。十五年后,你会和谁一起走进影院,更会和谁一起,走到生命终点。
十五年前,我还不太懂技术,凭兴趣玩着C语言。十五年后,当铁达尼的旋律再次响起,我会选择和哪门技术,一起走到我职业生涯的终点。
序言
—- 回望雨中的园区,更是回望来时的路。
此时天空飘着小雨,正如丝丝织雨细如愁。我刚刚离职,一路走出园区,回望了一眼雨中阿里巴巴的大楼,思绪随着微风,四处飘散。突然想起几年前我刚到杭州哪天,也是细雨微风。我走进城西的创业大厦,终于见识了大师Biti的风采,也从此开始我的阿里巴巴之旅。
杭州的特点,是隐匿在山青水秀之间,有很多雅至的主题饭店,团队第一次出外聚餐,就是在山间绕来绕去,最后到了一处青山环绕、绿水长流之处。Biti在会议上就“什么是架构”进行了精彩的评论,高度已经超越普通技术人员,至今我仍记忆犹新。但不久之后,Biti调至支付宝,真是遗憾。而这让我面临了空前巨大的压力,因为Biti一走,我变成了团队级别最高的DBA。初来乍到,入职刚满一月,忽然成为阿里系一个子公司的“首席DBA”,惊喜之余,感觉压力之大、常常令我透不过气来。不过还好,时间总一晃而过,此时此刻,刚刚走出阿里,掏出手机,拍了一张照片,算作我在阿里的留念,更是我人生一段最重要经历的留念。
回望雨中的园区,更是回望来时之路。…………
来时之路:硅谷,IT传奇的开始。
—- 人可以依靠梦想活一段时间,但不会一直下去。
“坐落在纵横交错的高速公路之间的,是巨型的商业园区和简陋的三卧两浴的平房住宅,其间最高的建筑是变电站的铁塔和架着电话线的水泥杆子。真正的工作是员工们在简陋的、用屏风隔开的小办公室里,眼睛盯着电脑屏幕静静完成的。每个人都试图做一些前人没有做过的东西。”这就是李彦宏在《硅谷商战》中谈到的硅谷的样子。
曾经有两个在一家公司供职的工程师,去找硅谷著名的投资家史蒂夫·朱维森,这位资深风险投资家对他们提出网上数据库系统并不感兴趣,他问:“你们还有其他主意吗?”其中一个叫比尔·巴迪亚的工程师就说,他还想通过因特网来提供免费的电子邮件账户,从网上广告为获取收入。10天之后,朱维森连商业计划都没要便掏出30万美元帮助他们成立了Hotmail公司。Hotmail后来以10亿美元的天价买给了微软公司。
这在当时看来有些离谱,但这样的故事到处流传,充斥着各类励志杂志,也充满着我的心。
世界上赚钱的公司多的是,但没有哪家公司的口号是改变世界。看看现在的IT、互联网公司,每个公司的口号中几乎都包含着改变世界的梦想。而且从微软、苹果这类老一代革命家,到Google、Facebook这类硅谷新星,也的确有很多家公司或多或少的改变了世界,或至少是深深影响了世界。
IT,互联网,这是一个传奇的行业。当我的手抚过键盘,当眼光划过满屏自己写的代码,澎湃的激情,从来都没有息灭过。但无论多大的激情最终都会有息灭的时候。人可以依靠梦想活一段时间,但不会一直下去。
1996年,我职专毕业。职专,是差等生的代名词。职专生的梦想,一般都是成为某武侠小说的男主角,有一个酷酷的名字,有一堆惊艳的红艳。我也不例外。但这一切,在96年的夏天到来时,突然中止了。原因我应聘到了一个很小规模的计算机培训中心—“辰星计算培训中心”。还有,我看了辰星书柜中的电脑报合订本。
有一篇故事我仍然记得,《软件辉煌》,其中详细讲述了盖茨创办微软的经历,还有Word的开发历程,……。一群大男孩,用电脑改变世界。美国,硅谷,IT界,从来都不缺这样的故事。虽然这样的故事从来没有在东方某个伟大的国家发生过。
合上电脑报,一个想法出现在我的脑海中,哪就是我要做中国的比尔。盖茨。年轻人总有梦想,不是吗?一年后,1997年的夏天,四个辰星公司的“核心”员工,告别辰星,踏上创业之路。四人熟读微软、乃至硅谷的历史,这些历史让他们热心沸腾。
40年前,晶体管之父肖克利博士的故乡,美国西海岸的圣克拉拉,八名怀着梦想的年轻人离开肖克利半导体实验室,创办了可谓硅谷摇篮的仙童半导体公司。这就是著名的八叛逆。而我们,则自许“四叛逆”。我们在和辰星仅一墙之隔的地方,买了二十台电脑,投资达十万,创办了红星计算培训中心。哪一年,我们十八岁。
光辉岁月
—- 青春总是这样苦涩,但在长长生命之中,装在记忆这个坛子里,慢慢的发醇,最后却能化为无比的感纯。这或许就是生命的魔力。
………………
梦想总是遥不可及
是不是应该放弃
花开花落又是一季
春天啊你在哪里
青春如同奔流的江河
一去不回来不及道别
只剩下(平凡)的我没有了当年的热血
看那漫天飘零的花朵
在最美丽的时刻凋谢
………………
红星的创办,让我们的年青岁月,都达到了顶峰,此后再无超越。我们在同学中间成为传奇,成为创业的典泛。甚至有同学的同学,还幕名前来,向我们请教人生。
在红星除了讲课,我们还为一些传销公司开发核算、财务软件。我还用C和汇编,写各种有趣的程序。我用汇编写过一个DOS下内存驻留的程序,写完很有成就感,自信潢潢。但转念一想,要
学的东西如此之多,不知何年何月才能学完,霎那间又充满急燥。
哪段青春岁月真是难又形容。快乐与泪水,自信与自悲,坚持与旁徨,……,各种各样的感情交织着,匆匆的,过去了,不再来。
寒来暑去,花儿谢了又开、开了又谢,时间就如同夏日傍晚的凉风,轻轻的带走了岁月,只给人留下,多样的回忆,哪怕这回忆是如此的沈重。
小学三年级时,还是1987年,我在书店看到一本书,作者是诺查丹马斯。书中详细介绍了他的一系列预言,从狮心王理查的死期,到西特勒的出现。当然,最后是1999年人类大灾难,恐怖大王从天而降。很不巧,当时哥哥刚刚带我看完电影《超人》。超人故乡星球毁灭的特效,虽然在现在看来虽然拙劣不堪,但当时强烈震憾了我幼小的心灵。如今再看诺查丹马斯的预言,我几乎已经看到了地球在强烈的地震、大火中,变为一片废墟。出了书店,我万念具灰。我马上找到我的一众好朋友,将这个恶耗讲给他们:“我们只剩12年好活。”,未了,看着他们一个个脸如死灰,我却突然心情大好起来,悠载悠载的回家写作业去也。有了这种经历,使我完全相信微博上的一句话:不要向任何人诉苦,因为20%的人不关心,剩下的80%听到后很高兴。这是题外话,我们继续。
12年后,1999年到了,我却再无所谓。或许大家一起死了,比我迷茫的活着更好。曾经辉煌的红星,只不过几年,便已面目全非,曾经的朋友,分道扬镖。在千禧年来临的前夜,我和几个同样迷茫的年青人,喝着劣质的白酒,挥洒着青春,也挥洒着生命。
青春总是这样苦涩,但在长长生命之中,装在记忆这个坛子里,慢慢的发醇,最后却能化为无比的感纯。这或许就是生命的魔力。
我相信人生是一段段例行公事,一段忙完又一段,直到尽头。在红星的大门关上哪一刻,我告诉自已,一段生命结束了,要开始新的一段了。
2000年春暖花开之际,我踏上新的征程。通过以往学员的关系,到了我市一家百年老字号—五福糕点,做学徒。强烈的急燥心理,令我急切的寻找一条可以快速发家致富之路,我当时的选择是:糕点师。但我并没有忘记我的梦,我的盖茨之梦,我的程序员之梦。2000年周星驰贺岁片《喜剧之王》上映,其中一句“我是一个演员”,深深打动了我。我想,或许有一天,别人吃着我做的极品慕丝,我却告诉别人:”其实,我是一个程序员”。
罗红可又先做糕点,开好利来,赚了钱再当摄影师,我也可以。成长就是这样,我的目标,已经从创办Intel的肖克利八判逆,或盖茨等世界级大腕,变成了中国人罗红。其实,极便是罗红这样的成就,也是高高在上的。所又,我成熟了,但还不够成熟。我想成为一个不普通的人,原因就是我是一个太普通的人。
几个月后,我放弃糕点,拎起菜刀,成了一个饭店的帮厨学徒。
几个月后,我放下菜刀,在路边摆摊买精品。
几个月后,我开了一家精品店。
几个月后,精品店倒闭,我赔光了所有钱。
这就是成长的代价。路不去走,就不知道原来走不通,更不知道哪条路可以走通。
其实,在这一年左右的时间中,也不是没有收获。在饭店做帮厨学徒时,我认识一个厨师。当其他厨师都是打台球、或站在街边对着过往的美女吹口哨时,他在练习刻花,或者学习。他说,他的目标是要上天津一所厨师大学。我们一直保持着若有若无的联系,我要看看他的坚持是否会有结果。我想,他也这么想的,他也想看看,我的坚持,会不会有结果。因为,无论在干什么,我也从没有中断学习。我不会吃口哨,台球打的也不好,他在苦练刻花时,我通常会拿起严蔚敏《数据结构》、同济大学版的《离散数学》等等。从96年到现在,从我看完比尔。盖茨故事哪一刻起,无论的目标如何变化,我可以自豪的说,我的IT梦,从没有一天停止过。也从没有在哪个阶段,停止过学习。
还在五福糕点时,虽然这个决定有点晚了,但我还是决定放下DOS。开始看《Windows程序设计》这本号称Windows下的圣经。当我拿起菜刀时,同时,严蔚敏的数据结构,已经开始看第二遍了,这本书后来成为我走北上、南下必带的书。而在精品店时,对于始终不明所又的编译原理,我也没有放弃,买了本号称龙书的,但我最终对编译原理还是不明所以。……。
4年后,那名厨师告诉我,他并没有去上厨师大学,他在北京的一家饭店,一个月已经拿到八、九千块。6年后,他仍在北京,但薪水已经到达一万五了。到我入职阿里巴巴高级数据库专家时,他已经到了广州,薪水和我在阿里不向上下。之后,我们失去联系,不再有彼此的消息。因为我们在各自的身上,都已经找到结果。
残酷的青春
—- 在某一阶段,或许我们在寻找的和拒绝的都是自己。
中国最神密的部门是有关部门,最危险的工种是临时工。2001年的夏天,我来到郑州,到了我向往以久的事业单位,省计算中心,可惜从事最危险的职业:临时工。
从小,妈妈就教导我:“要好好学习,长大了进事业单位,有个铁饭碗。”
我问妈妈:“为什么只有事业单位才有铁饭碗,其他的就没有吗?”
“其他单位会破产啊,效益不好会倒闭,发不下工资。”妈妈没加思索的回答我。
我又不理解了,“哪会为什么事业单位就不会效益不好呢?”
“事业单位是国家吗,国家可以印钱啊。钱不够了就印。所以事业单位永远都不会缺钱。”妈妈回答我。
我想起阿甘正传中的一句话,Momma always had a way of explaining things so I could understand them. 妈妈总是有办法让我明白道理。
妈妈的目标,就是让我能进事业单位。现在,我终于进了,这多亏了一个亲戚。但我只是个临时工。我的工作是讲课,还有为其他各个大小企、事业单位开发各种程序。我在计算中心一共待了7年,前2年,都是作为程序员,后来才转DBA。哪两年,我也为河南的不少企、事业单位开发了大大小小不少程序。现在想想,还有些后怕。常常午夜梦回,惊出一身冷汗。万一哪天我当年写的程序有问题,会不会被跨省追捕回去。或许我下半辈子最好待在,和中国没有引渡协议的国家,才能真正安全。
事业单位大家都互喊老师,在阿里的时候,大家都互喊同学。所以后来到阿里后,感觉年青了几岁,哈哈。在事业单位,正式的愁每天无事可做,临时的愁每天有太多事要做。常常一个上午跑两个单位解决问题,下午又要回去参加会议、讨论新软件的架构。在马不停蹄的忙碌中,我一直在考虑我将来的发展。谁都明白一个道理,如果想从一个行业中脱颖而出,只有两种常见的可能:要么技术牛*,要么占得先手。技术牛*这个,不容易做到,所以,对我来说,取得成功的最简单方法只有一个,“取得先机”。
我们都明白一个很简单的道理,当火焰烧起来的时候,你才想到去加柴火,只能收获一堆灰烬。于是,我开始以我自己的判断,从众多的技术种类中,找到一个还在发展中的技术。
经过苦苦的寻觅,了解了众多专家学者的一直看法,我选定了承载我希望的东西—-VRML。VRML是HTML的3D版,当时一些专家预测,未来的网页,都将是这个样子的。
想想看,3D的网页,酷吧。打开网页,首先看到一扇门,用鼠标点一下,门打开了,随着鼠标的移动,你的虚拟形象走进房间,这是一个客厅,有三三两两的网友进进出出,大家互相在聊着天,还有几个网友在角落中私聊,…………,怎么样,这样的网页够酷吧。
那是01年的仲夏,傍晚的凉风,让经历了一天酷暑的人,感到格外轻松。夕阳西下的天边,还飘着几朵云彩,恰到好处的点缀着色彩绚丽的天空。我骑着自行车,轻松的穿行在大街小巷。我的心情格外的好,因为我刚买了一本书,是专门讲VRML的。而且,我找遍了整个书店,只找到一本关于VRML的书。这更加证实了我的猜想,VRML目前还比较小众,是一门方兴末艾的技术。只要抓住时机,在VRML全面代替HTML前,将VRML学的比较精通。等到VRML大行其道时,我的名字将随着VRML一起,响彻全国。哈哈哈哈,……,想到末来的美好前景,我几乎忍不住要逛笑起来。但命运如同横穿马路的汽车,在你得意忘形时,将你的梦想击的粉碎。
2004年,一晃三年过去了。HTML势头不减,Flash红遍国内,之于我的未来希望:VRML,不提也罢。这从一个测面证明,不要相信所谓专家、学者的预测。绝大多数的预测,都是错误的。就像IBM创史人托马斯·沃森曾经作出了:“全球只需5台计算机”的预言一样。专家对未来的预测,往往是不靠谱的。企业家公开发表的预测,往往更不靠谱,他们的预测是为了对他们的产品和市场策略作宣传。就如同早些年Larry Ellison(拉里。埃里森)将预言未来PC将不再是主角,NC(网络计算机)都是主流。可惜早些年我不明白这些道理,浪费了几年时间。
如果能成功的抢占“先手”,无疑会以最小的代价、获得最大的成功。但是,如果你自以为是“先机”的东西没有发展起来,一切都将是竹蓝打水,一场空。
抢得“先手”固然可以使用自己更快的功成名就,但刻意的去抢,往往适得其反。成功抢得“先手”,这是上帝赐给你的礼物,可遇而不可求。这段经历让我明白,不要刻意追求快,欲速则不达,还是一步一个脚印来得稳托。
其实仔细想一想,历史上固然有比尔。盖茨、乔布斯,有Google、FaceBook,等等人或者公司,以创新、抢先赢的市场和尊敬。但是,成功的人一定都是少数,还有更多的人,同样的才华横溢、同样的聪明无比,但是,他们的创新、他的“先机”,都失败了。历史不会记得他们,因为,历史,是胜利者的丰碑。
硅谷的风险投资商厉害吧,他们肯定不会将钱随便投给不靠谱的人、不靠谱的项目。但是,即使经过硅谷风投认定靠谱的事,成功率仍只能达到20%左右,80%的失败者没有人会记得。
几年的坚持,几年的努力,只不过去学了一个毫无用处的东西。其实从03年开始,我就想过要放弃,我可能压错了宝、选错了方向。无数个夜晚在孤灯前学习,换来的只是毫无价值的技术!
我的内心,很不愿意承认这个实事。人有时候最难否定的,就是自己。一直坚持到04年,还是一个仲夏的傍晚。依然是凉风习习,天空依然是绚丽多姿。我沿着金水河随意的漫步,我想,是不是要放弃了。一根接一根的抽着烟,买了几罐啤酒,一罐接一罐的喝着,夕阳将我的影子拖的老长老长。在某一阶段,或许我们在寻找的和拒绝的都是自己。你认为它错了,后来发现又对了,释然之后你担然承认,自己执着了。错和对重要吗,关键是它过去了。
是的,过去了。
这之后不久,因为工作需要,我开始接触一个新的东西,Form和Report,是一种很少人听说的,一种叫Oracle数据库的开发语言。各种语言对我来说是驾轻就熟,除了安装配置,这两种语言的开发,我很快就撑握了。我的历史,也因为这两个东西而转折。
灯塔:ITPUB
04、05年,我一直在做Oracle开发,主要使用的就是Form、Report,当然,还有OCI。在一些项目中使用OCI,纯粹是出于对C语言的偏爱。其实大多数我们的软件,可以全部使用Form和Report。
我从开发转型为DBA,是一个很偶然的事件。04年底,在给海关做一个项目时,认识了一名搞网络的技术人员,他刚刚考过CCNP,正在向CCIE努力。当时,我从没想过要考什么认证,因此,也不了解这些认证。听了CCIE,也没什么概念。他跟我讲,Oracle有一个很牛的认证,OCM。考过了后可以身价倍增。我回去在网上查了一下,说是当年亚州只有4名COM等等,总之就是很牛*。这个结果令我大吃一惊,我没想到一个认证,能有如此难度与作用。从此,我开始了我的转型之路。
其实我们单位从02年就开始使用Oracle,几年下来,也基于Oracle开发了不少项目。很多地方有时也要求我们在项目交付的同时,提供容灾、高可用方案。但这些是我不肖做的。曾经的我对SA和DBA是如此的不肖一顾,“只是搬搬机器、装装系统的民工”。我的梦想是创造,创造独一无二的程序,获得巨额风投,凭一已之力改变世界,我能,我可以。当梦想的浮华散去,我发现,8年过去,我仍站在原地。我的盖茨
我是从备份、恢复切入到DBA这个行业的。04年底,我们为海关做了一个项目。项目完成后,我为他们搭建了DataGuard,同时,写了个脚本每周未备份DataGuard。当然,在项目软件中我也做了个按钮,如果需要,他们可以随时点这个按钮触发对备库的备份操作。软件中还有个按钮是将备库直接激活的,激活之后,备库要重搭,并且,如果Redo文件有问题的话,激活会丢失些数据,不过,这个项目的数据丢掉些他们可以接受。整个这些东西,我做为了高可用、容灾的方案,浓重的写进项目文档。当然,免不了介绍的天花乱缀。哪个时代,大家对Oracle都没有什么概念,你只要能把库装上,都会有人说你牛。客户测试了备份、切换这些功能,再加上看了我天花乱缀的文档,对于灾备方案、高可用方案非常满意。我们领导后来得知这一情况后,专门问我是否有意转型做DBA,我自然没有问题。我已经厌倦了开发,或者说,厌倦了老是为了别人的需求,开发程序。听说DBA还算轻闲,我计划转做DBA,再利用剩余时间开发自己的程序。但不可否认的是,Oracle是有它独特的Mei力的。随着对Oracle学习的越来越深,我慢慢的发弃了我的开发梦。
这一切的转变,都是很自然的,自然到我每每想起,总觉得那是命中注定。
数万年间我和Oracle相遇了,没有早一秒,也没有晚一秒,哪也没有别的话说,唯有说一句,原来你也在这里。
海关的项目之后,我开始考虑,如何让用户的数据在切换时也可以保持不丢。最后考虑的结果很简单,就是将Redo每组中设两个成员,每个成员都在不同的存储上。但当时有记得有人说这样做会对性能有影响,即使存放日志的两台存储一模一样。但也有人说没有影响。我在网上查了很多资料,大家的说法,莫衷一是。最后经过测试,结论很简单,有影响,但影响不大。对于这个结论,我想大部分读者也不会满意。到底影响在什么地方呢?
每组中两个成员,每个成员在不同的存储中,存储性能是一致的。说这种情况下写Redo性能不会有影响的人,主要是认为LGWR会同时写两台存储中的两个Redo文件。如下图所示:
但是,我们考虑一点,LGWR进程只有一个,存储有两台,向A存储写和向B存储写,必然是两条语句,一个进程怎么可能同时执行两条语句呢。所以,上图不对,应该如下图所示才是:
LGWR发送命令写A存储中的RedoFile,不必等待写完成(因为是异步IO),LGWR再发送命令写B存储中的RedoFile。LGWR只有一个进程,不可能同时发命令写A存储和B存储中的两个Member,只能逐个来。但因为I/O是异步的,向B存储中写Redo Member,不必等向A存储中的写操作结束,而是如图中所示,有部分操作是平行的。
从总的时间消耗上看,图1中错误的理论,共耗时1.002 ms, 图2中正确的理论,共耗时1.003 ms。当然,时间是我随意加上去的,但对于现代的计算机系统,“发出一条命令”,“接收一个通知”,消耗 0.001 ms 应该是过高的估计了。 写磁盘的1 ms,应该是差不多了,大部分数据库写日志的响应时间,应该都是几ms左右的。通过上面两个图的分析,可以得出结论,让LGWR写两个存储,对性能有影响,但影响不会太大。多了图2中最后一阶段的操作:“B存储向LGWR发出写完成通知”。
有了这个结果,再后面的容灾架构,如果客户要求不丢数据,我都要求客户准备两套一模一样的存储,每个日志组的两个Member,分别放在不同的存储中。后来DBA逐渐增多,客户哪里,会有自己的甲方DBA,对于灾备系统,当我提出要两台一模一样的存储时,一些客户会有疑问。我会详细解释LGWR的原理,其实,向客户解释的过程,也是传播自己思想的过程。向客户解释的原理越多,客户对我的信任感也越强,后面的事情也越好办。
这些经历,也直接促成了我后面的学习习惯—-重视原理。虽然原理这东西很虚无,但为了更好的说服客户、取得客户的信任,有时我不得不向客户解释这些东西。
说点题外话,总有人问研究内部有什么用,我觉得最重要的作用就是,可以更好的忽悠客户。
哈哈,这是玩笑话,有用没用看自己爱好。有兴趣就去研究,没兴趣就去做别的。这个问题不必纠结。
如果真有兴趣去研究了,也一定会有回报。如果没去研究,也可以当好一名普通的DBA。
言归正传,能为客户解释这么多东西,有一个网站功不可未,就是ITPUB。我05年注册了帐号,此后,只要有疑难问题,第一时间先上PUB上搜索。PUB成为了工作、学习必不可少的网站。但是,我很少在PUB上发表什么,因为我自己的功力尚不足,怕写出错误的东西,耽心影响大家。但看了哪么多好帖,从来没有回过帖,现在想来,也让我心中不安。于是从去年开始,我开始将这些年的积累逐步总结出来。我相信一个道理,有一个农场主,得到了一种优良小麦种子,但他不懂得分享,只在自家的地里种这上了这种优质小麦。收获季节到来时,结果他的优质小麦表现并不如何的好。他很不理解,就去请教一位专家。专家了解了情况好告诉他,只他自己种优质小麦,面积太小,旁边别人普通小麦的花粉,会被传播到他的优质小麦中,结果,影响了他的优质小麦的质量。第二年,这位农场主将自己的优质小麦种子分享给旁边其他的农场主。由于有了足够大面积优质小麦的花粉,到了收获季节,大家都获得了大丰收。现在时间已经成熟,我会慢慢将一些心得分享出来,希望和大家一起研究、一起进步、一起丰收。
在乙方工作哪段时间,对于工作,我只有一点感触。每天,我并不是为了单位而工作,我是为了自己而工作。只有自己的技能获得提升,才是关键。我会选择个别库做为观察对象,进行深入、细致的分析,以此来煅炼技能。但人的精力是有限的,再加上单位给的福利待遇也不高,所以大部分库,只要客户不找我,我也不去找他们。
从07年开始,单位成立专门的数据库运维团队,决定让我作为团队的Leader。我的工作重点,从单纯的技术,慢慢变成了开会,参加各种会议。有些人对此乐此不疲,但我很不习惯。大家把活推来推去,把功劳争来争去。不单要开会,还要培养新人。慢慢的,一些库分给其他人管理,使我可以专心去“开会”。很长时间里,我无心从事技术,脑子中之想着明天要参加已经开了好多天的某项目架构大会、要最终确定下来的某事故改进会议、……。我心目中的管理会议是这样:
实际上的会议是这样:
哈哈,我承认图有点夸张。我实在不适合做扯皮这样的事。或许随着我年龄的进一步增长、技术实力的进一步加强。技术上已经没什么可学的了,活也干不动了。每天开开会,扯扯皮,还有点意义。现在,这绝不是我想要的生活。古人都说,“学而优则仕”,我学还没有优呢,如何去入“仕”呢。
07年我技术进步缓慢,如果一直这样下去,我不知道,如果有一天单位辞掉我了,我该何去何从。没有了技术优势,一个单位的中下层管理人员,你到51JOB上搜索一下,有招聘“技术团队管理者”这样岗位的吗。而且,计算中心是事业单位,从05年开始,我就一直谋求可以转成正式的“在编制”人员。为此,我、包括我们全家人,使用了很多方法。但是,我们的希望最后都落空了。其实,我本来也没抱太大希望。
08年初,为了将来的发展,我决定辞职。这个决定或许已经有点晚了,但是,如果不马上行动,将来只会更晚。
在阿里巴巴遇见最好的DBA团队
我不喜欢飘泊的生活,也不喜欢新鲜的城市。只想在我家乡哪座著名古都中,像被固化在虎珀中一样去生活。但我的人生却注定要去飘泊,而且,是在三十而立之年,才刚刚开始。千万不要刻意去选择自己的生活,因为你只能猜到开头,却猜不到结果。
我的第一站是北京,因为有朋友说可以为我介绍工作,但这份工作是Oracle讲师。我的技术还没有达到一定水平,还需要提高。这时候去做讲师,实在非我所愿。我的内心的理想目标,是去阿里系的公司:阿里巴巴、淘宝、支付宝。这些公司“大师”级的人物层出不穷,我想也应该是很多DBA的目标。但自己投简历过去,成功可能很小,我一向不喜欢自已投简历过去。所以,在09年初,考完OCM之后,我就一直想做点东西出来。正好一个朋友找过来,于是我们合作,很快就有了“Oracle日志挖掘研究版”这个程序。也很快的,阿里巴巴就给我打了电话。
到阿里面试是很爽的,来回的机票、酒店全部都已经订好,就好像到杭州来了个一日游。我是中午到的创业大厦,先被HR领到一个大厅里,做了一份笔试卷子,说是60分钟,但其实没有人在旁边计时,晚一会儿也无所谓。笔试题难度不高,和网上流传的阿里巴巴笔试题差不多。做完笔试题,就是著名大师Biti的面试了。这是第一次见到Biti,个子不高,但人很精神,说话极有条理。
Biti面试时的难度也不高,大家聊的很好,就像朋友闲聊一样。所以,这趟杭州之行,让我觉得很完美,即来杭州旅了一次游,又和一些朋友聊了聊技术。
本来我计划当天晚上就回去,Biti面试完,被告知阿里巴巴B2B的技术部老大Andy想见见我,如果我时间上没有问题,HR会退掉当天的订好的机票再重新订,当晚住宿的酒店也已经安排好了。
当时很是受宠若惊,马上告诉HR没有问题。
第二天其实还是有点紧张的,不知道Andy会问我什么问题。见到Andy后才感觉,Andy人也很随合。Andy问了两个问题给我留下很深的印象,一是建立一个数据库层和应用层之间的统一中间层,对下可以支持各种数据库是否有必要。还有一个,是如何拆分一个大数据库为多个数据库。
第一个问题,我的回答的很中庸,一个可以忽略下层数据库是什么的中间层,对性能会有影响,对开发效率、代码重用率会有提升,搞一个是有必要的,对于特别要求效率地方,仍可以使用老的方式,一般情况下,使用中间层就可以了。我估计这是Andy当时正在考虑的问题,但后来阿里巴巴并没有大张旗鼓的搞这么个东西,我想Andy最终还是认为搞这个东西意义不大。
第二个问题,拆分数据库的方法,我曾经主导过一个大库的拆分,要求应用的每张表,都有主键。然后就像HASH分区一样,以每个表的主键为准,将数据做个HASH运算,分布到多个库中,我直接把我做过这个项目详细说了一下。也是后来我才知道,原来阿里巴巴这边刚刚做过一个大表的拆分,拆分方法和我说的类似。
上午的面试很快就过去了,我专门让HR帮我订晚点的机票,这样,下午有时间去西湖游览一下。
这次杭州之行,给我的感觉是,杭州不错,面试很愉快,但打车很难。下午在西湖边打车,用了好久。后来才知道,在哪个时间点打车,能打到已经是运气了。
两个月后,我告别待了10个月的北京,来到杭州,入职阿里巴巴。
中国的大型互联网企业,有很多相似之处。比如说一样有入职培训,一样每年有年会,一样的有Outting,一样的嘴上说一套、底下做一套。比如公司一直在讲诚信,但在出了一些事情之后,从公司发给我们员工的邮件来看,没有看到诚信二字。但这很正常,在我们国家,到我这个年龄,如果还相信公司说的什么或老板说的什么,哪脑袋就真有点问题了。
阿里的入职培训和其他公司一样,讲一讲企业文化,再把人拉到户外做做拓展运动,结束,没有持续性。和我一起参加入职培训的有几十人,半年内有差不多三分一离开公司,一年内大概只剩三分之一留在公司。我和另外两个入职培训时认识的朋友合租一套三室两厅,一年后,他们都走了,只剩我自己独住一大套房子。大家来阿里的目的很简单,渡金。我的室友之一,半年后顺利跳到了teradata。另一个是做客服的,一年后跳到另一个规模略小的互联网公司,做了客服经理。当然,我到阿里,最大的目的并不是渡金,而是学习。我的目标是成为Oracle大师,阿里孕育了哪么多Oracle大师,到了阿里,我就和目标接近了。
但可能是我在面试时忽悠的有点过了头,阿里给了我一个很高的级别:高级数据库专家。这既让我兴奋,又让我感到无比大的压力。在我入职时的09年,整个集团的技术人员,达到这个级别、和这个级别之上的,不过几十人而已。在B2B,高级专家之上的,只有十几个人。我们DBA团队中,只有一个人比我级别高,就是Biti。这让我的压力,稍微小了点,有什么大事,我前面至少还有
Biti在扛着。但是,一个月后,Biti就调到支付宝。我成了阿里巴巴B2B级别最高的DBA。一下子变成了“首席DBA”,我内心深入无比激动,但是,这也让我无比害怕。
来到阿里,我对自己的定位是学习、经历,我的目标,是成为技术大师,我从不会改变这个目标。但公司对我的期望,显然不是这样的。但这没有关系,这并不会防碍我学习。
在阿里的日子过的很快,好像回到了上学时代。每天三点一线,上班、到食堂、下班。DBA团队是我见过的最好的团队,几位领导对每个人都很负责,诚心实意的为每个人着想,努力为每个人提供发展机会。大家之间没有争抢,没有钩心斗角,只有努力的做好事情。很高兴在这里渡过了快乐的近三年时光。在此,对领导、对团队中每个兄弟表示感谢。阿里的数据库维护水平,自然是没得说的,用一句通俗的话来形容,我就像掉到了水中的海绵,如痴似渴的吸收着养份。
我到公司时,MySQL刚刚在公司有第一例非常成功的案例。之后的几年间,公司的MySQL团队从无到有,迅速壮大,MySQL的应用也是遍地开花。再之后NoSQL如同凄美的昙花,匆匆一现,却也给公司内Oracle的应用带来不小的震动。对于开发,Oracle有如过街之鼠,几乎人人喊打。之后,一切又都归于平静和理性。NoSQL出局,MySQL重点发展,去Oracle已成必然。从11年开始,我也面临艰难转型,根据公司情况,我决定转型到GreePlum数据仓库。但转型是困难的,几本大部头的书,一看就困。Oracle是越学越精神,一看GreePlum就瞌睡。数次不眠之夜的深思,我决定放弃转型。我知道这对我来说意味着什么,放弃转型,也意味着要放弃这份工作。 虽然我很喜欢团队的氛围,我对团队恋恋不舍,但我仍将坚持我的方向。11年夏天,我开始筹备我的下一份工作,并计划在12年春节的时候离开。
阿里巴巴二三事
在阿里,我见识到了Biti留下来的管理制度与管理水平。我们的数据库,很少出莫名其妙的问题。按照托尔斯泰的说法,好的数据库个个相似,差的数据库各有各的不同。好的数据库,无外乎性能尚可,有完善的备份恢复和高可用机制、并定期测试,很少奇奇怪怪的问题,绝大多数报错、性能曲线的波动都可以找到原因,等等。差的数据库总有千奇百怪的问题、林林总总的报错、莫明其妙的当机。
其实,达到阿里数据库的管理水平,DBA只做了一间事,就是更加关心自己负责的库。
每次性能曲线的波动,都要找到原因,甚至定位到SQL。对于新上线的SQL语句,进行严格的审查。对于大操作,格外小心。Statspack、AWR报告,要观注、观注、再观注。基本上也就这些了吧。我把这种管理模式,叫做精细化管理。
说到这里,我想起了一件事,姥姥家住在一条古老的小巷里,在小巷南口,相隔不远有两家买锅葵(一种面饼)的,但一家门庭冷落,另一家则客流不断。很多人宁愿多花点时间排队,也要买另外一家店的锅葵。有一次,我跟一位住在这块的老表谈起这事,为啥一家店生意清冷,另一家店生意兴隆。我老表很郑重的告诉我,“这就是用的功夫不一样。”我霎时间明白了。
当然,我见到过很多乙方公司的DBA,每个人要管几十个库,在这种情况下,根本无暇顾及什么性能指标、AWR报告,只要数据库不当、只要客户不主动来找就行了。不出事情,哪有什么功夫去看AWR报告什么的。至于乙方的这种管理方式,我先称之为粗犷化管理。
这种粗犷化管理试,也是国情所定,我们无法改变环境,但我们可以改变的,是我们自己。我有一个朋友,初中同学。初中时学习不好,技校毕业。毕业后在工程公司做技工,其实干的活和民工没有差别。在体验到现实的残酷后,他没有被生活磨平楞角,反而越战越勇,真正的奋斗起来。他的目标是考取注册监理师认证,很自然的,这个目标成了很多人茶余饭后的笑料。不是说这个目标多不现实,而是,就算你考上了注册监理师,又能怎样呢?你怎么才能找到第一份监理师的工作呢?就算有证书,谁肯要一个民工做监理师呢?
面对嘲笑,我们唯一能做的事,就是努力坚持自己的方向,不要去做无谓的争辨。在干完一天烦重的工作后,他回去还要挑灯夜读。几年的坚持,他终于考上了注册监理师。就在为第一份监理师工作发愁时,机会不期然而至,工程公司的一个朋友将他推荐到另一个公司。虽然干的活和民工没区别,但他是技校毕业,算是技工,底层实践经验丰富,又有了注册监理师证书,他成功的跳到另一个工程公司,成为监理师。轻松完成了从民工到工程师这个华丽的脱变。而且,一切又都是如此的自然而然。两年后,他又跳到北京一家更大规模的公司。公司将他派到新Jiang,在工地上,他巧遇以前的同事,他们还在顶着风沙,在工地上辛苦的工作。目前,他正在自学英语,他的计划是希望跳到外企。我相信他一定可以成功。
自助者天必助之,古人的经验之谈,难道都是骗人的吗。
相信有些乙方的DBA也在痛苦中迷茫,如何在粗犷化管理中,实现自己职业生涯的突围。我建议呢,可以选一两个库,以提升自己水平为目标,进行精细化管理。关注这一两个库的细节,你会发现,水平可以更快的增加。
在阿里,我的第一次事故,让我记忆深刻。那是一次加节点操作,前期操作已经成功,最后一步在执行rootaddnode.sh脚本时,中途出错,导致OCR信息被损坏,所有节点全HANG。进行OCR恢复后,才恢复正常。原因非常奇怪,rootaddnode.sh要调用srvctl向OCR中写入新节点信息,而srvctl因为缺少个包,执行失败异常退出了,OCR信息也被写坏了。
在进行这次加节点操作前,我在虚拟机中反反复复测试,做了大量的准备工作,但没想到,最终还是出了大事故。
从这件事后,我再做其他操作都更加仔细,特别是RAC。RAC下操作总会调用这个哪个一堆的脚本,我会先把脚本看一下,大概了解这些脚本都干点啥。就像加节点,我会先调用Srvctl config命令,显示一下配置信息。如果可以显示成功,再进行加节点操作。
“不要在周五做重要的事情,这会让你整个周未都没有好心情”,这是这次加节点操作给我留下的另一个忠告。
在阿里最深刻的,还是职场之道给我的震撼。在此,引用一位PUBER的发帖:
A同学,遇到问题,召集会议写报告搞风险评估,凤凤火火,完事后到处汇报心得,各部门都知道了数据部的功劳。
B同学,遇到问题,默默一个人搞定。
这B同学确实厉害,很多问题都独立搞定,A同学连oracle的pga是啥都不知道,但他就是跟公司的高手们关系好,会求助,会推动。
当你有一天听到领导们背后议论A和B的时候,你会发现,他们一致都比较欣赏A。为什么他们会欣赏A呢?不是B是高手么?因为领导们已经长期不做技术了,观察人更喜欢观察人的沟通协调能力,像B默默搞定问题,谁也不知道是咋回事,还以为这问题很简单呢。结果呢?B郁闷离职。。。职场故事无新鲜事,类似故事每天都在发生。
以前一直以为是故事,直到见到一个活生生的、传奇般的“A同学”。除了这位Puber提到的,我觉得“A同学”一般还要有一个特长,就是会起名字。一个普普通通的架构,起个好名字,简值是有化腐朽为神奇的作用啊。
看一些中央领导的简历,升迁之迅速,往往让我惊叹。很多人不惑之年,都做到了高级领导,拥有数套房子和无数个情人,成功进级高帅富他爹。我一直很奇怪,人家都是怎么玩的。自从见过“A同学”后,我了然了。“A同学们”的成功是很迅速的,他们身轻如燕,稍有青风拂过,便能乘风而起,一飞冲天。
“A同学们”也要有一定的能力,这是基础。但是,和他们的综合实力相比,他们的能力可以忽略不记。
他们可以把GDP搞的很高,但不会把国家搞的很强。
如果一个集体、一个部门甚至一个国家,越来越弱,那一定是“A同学们”太多了。
“A同学”后来跳到另一巨头民企担任很高的职位,依旧是风声水起、威风八面,于是我就知道,哪家民企的发展是到头了。如果以释伽“成、住、坏”三阶段发展论来讲,个人认为哪家民企的“成”阶段已经过去,进入“住”阶段,如果没有“B同学”大量加入,数年之后,或许就是“坏”阶段了。
个人认为,单以职场发展来论,“A同学”值的效仿。现在的职场,好像春秋战国,即使你所待的“国家”,已经进入“坏”的阶段了,没关系,换一个国家就是。就像春秋战国时一位“士”人的言论,是当大王、诸候好呢,还是做大臣好呢。当然还是大臣好。一个国亡了,王的结局只有死,但大臣呢,换个地方再做大臣就行了。“A同学们”,永远会受到市场追捧的。他们就像漆黑中的萤火虫,那样的鲜明,那样的出众,那样的拉轰。
但我向来没有“A同学”的能耐,只能向“B同学”学习了。
将来做企么无所谓,有一点很关键,就是要认清自己的方向,这很重要。做管理?做技术?都行,这世界上有靠管理成功的,也有靠技术发家致富的。
你的目标可以是成为管理者、领导,但不能是“成为好逸无劳又挣钱”的人。不要幻想着每天什么活都不干,上班喝喝茶、扯扯蛋,每月工资高的让我们这些矮穷丑听到都吓的尿裤子。这样的境界,是要有上一代打下基础才行。如果你进了ITPUB这个论坛,又看到我这篇文章,这足以证明你上一代没什么基础,就不要再做梦了,赶快起来跟我一起用DTrace+GDB研究Oracle原理才是正事。
要想成为管理人员,或是领导,无外乎三种途径:
1、在公司混久了,跟着上级、甚至公司创业者一起打天下,有资历。走这条路,要看运气,跟对了人就行。
2、潜心研究技术细节,深入钻究技术,成为大牛,转而成为领导。这就是学而优则仕了。
3、有关系,家人在有关部门任职。
如果你发现自己没有跟对人,也没有关系,要想成为领导,哪就走第二条路吧。我知道很多优秀的领导,都是这样走过来的。比如我们团队的头,还有Biti,都是如此。其实,就连我所提到的“A同学”,现在的某互联网巨头企业中高级管理人员,也是如此走过来的。
大多数离职的人对以前待过的公司都是颇有微词的。也是啊,如果不是因为待着不爽,谁愿意走呢。但我对阿里,感觉还是非常好的。因为阿里,我来到了杭州,在钱江之畔,生活了近3年时光。在阿里,我终于实现了我的目标—-让技术更上一层楼。三年时光匆匆而过,正如一部电影所说,年华就是如此,当你不再拥有,你唯一可以做的,就是令自己不要忘记。
尾 声
站在远处,最后看了一眼雨中阿里巴巴园区漂亮的大楼,我生命的这一阶段已经过去。这是我生命中目前为止收获最多的一个阶段,感谢阿里、感谢我们的团队。