十五年前,你或许还不懂爱情,看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上发表什么,因为我自己的功力尚不足,怕写出错误的东西,耽心影响大家。但看了哪么多好帖,从来没有回过帖,现在想来,也让我心中不安。于是从去年开始,我开始将这些年的积累逐步总结出来。我相信一个道理,有一个农场主,得到了一种优良小麦种子,但他不懂得分享,只在自家的地里种这上了这种优质小麦。收获季节到来时,结果他的优质小麦表现并不如何的好。他很不理解,就去请教一位专家。专家了解了情况好告诉他,只他自己种优质小麦,面积太小,旁边别人普通小麦的花粉,会被传播到他的优质小麦中,结果,影响了他的优质小麦的质量。第二年,这位农场主将自己的优质小麦种子分享给旁边其他的农场主。由于有了足够大面积优质小麦的花粉,到了收获季节,大家都获得了大丰收。现在时间已经成熟,我会慢慢将一些心得分享出来,希望和大家一起研究、一起进步、一起丰收。

  在乙方工作哪段时间,对于工作,我只有一点感触。