阿里巴巴離職DBA職業生涯總結:突然35歲~

十五年前,你或許還不懂愛情,看Jack和Rose執手相看淚眼,只是蒙朧的心痛。十五年後,你會和誰一起走進影院,更會和誰一起,走到生命終點。
十五年前,我還不太懂技術,憑興趣玩着C語言。十五年後,當鐵達尼的旋律再次響起,我會選擇和哪門技術,一起走到我職業生涯的終點。

序言


---- 回望雨中的園區,更是回望來時的路。




      此時天空飄着小雨,正如絲絲織雨細如愁。我剛剛離職,一路走出園區,回望了一眼雨中阿里巴巴的大樓,思緒隨着微風,四處飄散。突然想起幾年前我剛到杭州哪天,也是細雨微風。我走進城西的創業大廈,終於見識了大師Biti的風采,也從此開始我的阿里巴巴之旅。
      杭州的特點,是隱匿在山青水秀之間,有很多雅至的主題飯店,團隊第一次出外聚餐,就是在山間繞來繞去,最後到了一處青山環繞、綠水長流之處。Biti在會議上就“什麼是架構”進行了精彩的評論,高度已經超越普通技術人員,至今我仍記憶猶新。但不久之後,Biti調至支付寶,真是遺憾。而這讓我面臨了空前巨大的壓力,因爲Biti一走,我變成了團隊級別最高的DBA。初來乍到,入職剛滿一月,忽然成爲阿里系一個子公司的“首席DBA”,驚喜之餘,感覺壓力之大、常常令我透不過氣來。不過還好,時間總一晃而過,此時此刻,剛剛走出阿里,掏出手機,拍了一張照片,算作我在阿里的留念,更是我人生一段最重要經歷的留念。


PIC1
      回望雨中的園區,更是回望來時之路。…………


來時之路:硅谷,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數據庫的開發語言。各種語言對我來說是駕輕就熟,除了安裝配置,這兩種語言的開發,我很快就撐握了。我的歷史,也因爲這兩個東西而轉折。


無奈的轉型


---- 當夢想的浮華散去,我發現,8年過去,我仍站在原地。



      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文件。如下圖所示:


(PIC2)

      但是,我們考慮一點,LGWR進程只有一個,存儲有兩臺,向A存儲寫和向B存儲寫,必然是兩條語句,一個進程怎麼可能同時執行兩條語句呢。所以,上圖不對,應該如下圖所示纔是:


(PIC3)

      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。

      言歸正傳,能爲客戶解釋這麼多東西,離不開各種技術網站。只要有疑難問題,第一時間先在各大網站搜索資料,然後逐篇閱讀、測試、總結。網絡是我工作、學習必不可少的。但是,我很少在各個網站上發表什麼,因爲我自己的功力尚不足,怕寫出錯誤的東西,耽心影響大家。但看了哪麼多好文章,從來沒有分享過自己的東西,現在想來,也讓我心中不安。於是從去年開始,我開始將這些年的積累逐步總結出來。我相信一個道理,有一個農場主,得到了一種優良小麥種子,但他不懂得分享,只在自家的地裏種這上了這種優質小麥。收穫季節到來時,結果他的優質小麥表現並不如何的好。他很不理解,就去請教一位專家。專家瞭解了情況好告訴他,只他自己種優質小麥,面積太小,旁邊別人普通小麥的花粉,會被傳播到他的優質小麥中,結果,影響了他的優質小麥的質量。第二年,這位農場主將自己的優質小麥種子分享給旁邊其他的農場主。由於有了足夠大面積優質小麥的花粉,到了收穫季節,大家都獲得了大豐收。現在時間已經成熟,我會慢慢將一些心得分享出來,對Oracle數據庫有深入研究興趣的,可以關注我的BLOG,我的目標是“打造世界一流的Oracle深入研究BLOG”,希望有興趣的朋友,大家一起研究、一起進步、一起豐收。也可以關注我的微博:http://weibo.com/u/1873688180 。我的BLOG和微博,不會更新很快,我的宗職是,不是數量、要以質量取勝。

      在乙方工作哪段時間,對於工作,我只有一點感觸。每天,我並不是爲了單位而工作,我是爲了自己而工作。只有自己的技能獲得提升,纔是關鍵。我會選擇個別庫做爲觀察對象,進行深入、細緻的分析,以此來煅煉技能。但人的精力是有限的,再加上單位給的福利待遇也不高,所以大部分庫,只要客戶不找我,我也不去找他們。
      從07年開始,單位成立專門的數據庫運維團隊,決定讓我作爲團隊的Leader。我的工作重點,從單純的技術,慢慢變成了開會,參加各種會議。有些人對此樂此不疲,但我很不習慣。大家把活推來推去,把功勞爭來爭去。不單要開會,還要培養新人。慢慢的,一些庫分給其他人管理,使我可以專心去“開會”。很長時間裏,我無心從事技術,腦子中之想着明天要參加已經開了好多天的某項目架構大會、要最終確定下來的某事故改進會議、……。我心目中的管理會議是這樣:


(PIC4)

實際上的會議是這樣


(PIC5)

      哈哈,我承認圖有點誇張。我實在不適合做扯皮這樣的事。或許隨着我年齡的進一步增長、技術實力的進一步加強。技術上已經沒什麼可學的了,活也幹不動了。每天開開會,扯扯皮,還有點意義。現在,這絕不是我想要的生活。古人都說,“學而優則仕”,我學還沒有優呢,如何去入“仕”呢。

      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就瞌睡。數次不眠之夜的深思,我決定放棄轉型。我知道這對我來說意味着什麼,放棄轉型,也意味着要放棄這份工作。 雖然我很喜歡團隊的氛圍,我對團隊戀戀不捨,但我仍將堅持我的方向。04年、05年時候,我轉過一次型。從開發到DBA,哪時候我還年青。乘年青多去經歷一下不同的人生,沒什麼不好的。但現在不一樣了,三十多歲的年紀,我的優勢是多年來積累的經驗,和我對Oracle數據庫挖掘的深度,DTrace加上GDB,在沒有源碼的情況下,相信對Oracle數據庫的研究已經到了極限。但是,轉型到任何其他一門技術,我還有優勢嗎?

25歲的時候認識到自己原來沒什麼優勢,是可喜的,你終於成長了。35歲的時候,如果也無法從自己身上發掘出優勢,這就有點可悲了。一個網友曾經問“35歲後靠什麼吃飯”,我的回答是:
35歲以後,靠你打下的基礎吃飯。
如果35歲前打下深厚的技術基礎,就靠技術吃飯。
如果打下人脈基礎,就靠人脈吃飯。
如果沒有任何基礎,青春被荒費過去,那就回家靠父母吃飯吧。


下決定是艱難的,我決定堅持自己的技術優勢,繼續研究Oracle數據庫。還好,在11年夏天,我開始籌備我的下一份工作時,發現雖然我年齡很大,但工作並不難找,而且對我要求也都不高,只要Oracle精通就行。這當然沒有問題了。我計劃在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同學”學習了。
      將來做企麼無所謂,有一點很關鍵,就是要認清自己的方向,這很重要。做管理?做技術?都行,這世界上有靠管理成功的,也有靠技術發家致富的。
      你的目標可以是成爲管理者、領導,但不能是“成爲好逸無勞又掙錢”的人。不要幻想着每天什麼活都不幹,上班喝喝茶、扯扯蛋,每月工資高的讓我們這些矮窮醜聽到都嚇的尿褲子。這樣的境界,是要有上一代打下基礎才行。如果你進了各個技術論壇,又看到我這篇文章,這足以證明你上一代沒什麼基礎,就不要再做夢了,趕快起來跟我一起用DTrace+GDB研究Oracle原理纔是正事。
      要想成爲管理人員,或是領導,無外乎三種途徑:
1、在公司混久了,跟着上級、甚至公司創業者一起打天下,有資歷。走這條路,要看運氣,跟對了人就行。
2、潛心研究技術細節,深入鑽究技術,成爲大牛,轉而成爲領導。這就是學而優則仕了。
3、有關係,家人在有關部門任職。

      如果你發現自己沒有跟對人,也沒有關係,要想成爲領導,哪就走第二條路吧。我知道很多優秀的領導,都是這樣走過來的。比如我們團隊的頭,還有Biti,都是如此。其實,就連我所提到的“A同學”,現在的某互聯網巨頭企業中高級管理人員,也是如此走過來的。

      大多數離職的人對以前待過的公司都是頗有微詞的。也是啊,如果不是因爲待着不爽,誰願意走呢。但我對阿里,感覺還是非常好的。因爲阿里,我來到了杭州,在錢江之畔,生活了近3年時光。在阿里,我終於實現了我的目標----讓技術更上一層樓。三年時光匆匆而過,正如一部電影所說,年華就是如此,當你不再擁有,你唯一可以做的,就是令自己不要忘記。


尾聲



      站在遠處,最後看了一眼雨中阿里巴巴園區漂亮的大樓,我生命的這一階段已經過去。這是我生命中目前爲止收穫最多的一個階段,感謝阿里、感謝我們的團隊。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章