前陣子斟酌要把車賣了,就開始各種搗騰。 最後總結一個最高心法:虛實並進。 自己要利用虛實組合建立story提高賣價,也要清楚知道對方也在虛實之間擺弄殺價,永遠保持警惕,不論聊得多開心。 建立虛底牌 第一步當然是先問原來的購車的車商,看有沒有回購,或是認識的同行,可以報一個比較靠譜的收購價。這一點原車商的支援還滿重要的,除非自己有認識同行友人,畢竟買賣雙方是站在對立面,再怎麼哈拉套近乎,最後還是要在價格上兵戎相見,那原車商已經賺過你的錢,就比較能站在你的立場幫忙。 我的原車商也非常給力,先跟我科普了一下博弈雙方的立場,如果是好賣的車,車行的角度最主要是希望能收到車,雖然收價一定是越低越好,但真的能收到更重要,有點像是公司發你offer,搞了這麼久最主要還是希望你能來,有本事拿到competing offer的我就只好加給你不然你不會來,講到這裡突然發現很多事是相通的XD 另外網路因為方便,很容易就能問到價格,建議先製作一些制式的訊息,車圖片存google photo開共享,廣撒網,就是看有沒有機會問到更高,但也會有一些特別低的,像是X-20W之類的,這是正常的,因為有些車行不熟車種,不知道整理成本,也不知道怎麼出售,那當然就會抓保守一點,我們主要目的是要問到專精的,會整理也會賣的,那就願意出高價收。雖然報價不見得是收價,但會是合理的參考價,可以用來建立合理的story。

前陣子斟酌要把車賣了,就開始各種搗騰。

最後總結一個最高心法:虛實並進。

自己要利用虛實組合建立story提高賣價,也要清楚知道對方也在虛實之間擺弄殺價,永遠保持警惕,不論聊得多開心。

建立虛底牌

第一步當然是先問原來的購車的車商,看有沒有回購,或是認識的同行,可以報一個比較靠譜的收購價。這一點原車商的支援還滿重要的,除非自己有認識同行友人,畢竟買賣雙方是站在對立面,再怎麼哈拉套近乎,最後還是要在價格上兵戎相見,那原車商已經賺過你的錢,就比較能站在你的立場幫忙。

我的原車商也非常給力,先跟我科普了一下博弈雙方的立場,如果是好賣的車,車行的角度最主要是希望能收到車,雖然收價一定是越低越好,但真的能收到更重要,有點像是公司發你offer,搞了這麼久最主要還是希望你能來,有本事拿到competing offer的我就只好加給你不然你不會來,講到這裡突然發現很多事是相通的XD

另外網路因為方便,很容易就能問到價格,建議先製作一些制式的訊息,車圖片存google photo開共享,廣撒網,就是看有沒有機會問到更高,但也會有一些特別低的,像是X-20W之類的,這是正常的,因為有些車行不熟車種,不知道整理成本,也不知道怎麼出售,那當然就會抓保守一點,我們主要目的是要問到專精的,會整理也會賣的,那就願意出高價收。雖然報價不見得是收價,但會是合理的參考價,可以用來建立合理的story。

建立實底牌

有了價錢還不夠,因為網路報價都是X萬實際看車況,如果拿這個做competing offer,車商會說那是報高價騙你去的,現場看車況一定殺價,不準拉。

所以下一步是真的開車去一些車行現場估一下,找一些有做網路/youtuber的車商最好,因為這些店已經有投資在經營網路品牌了,會比較踏實做事,不然被搞個負評損失會比沒有經營網路的車行大很多,而且如果收價滿意,直接脫手節省時間成本也是OK,因為這些車行應該都不需要煩惱後續車況與過戶問題。

自己開車去估主要有兩個重點:

  1. 取得真實車況與車價。中古車要挑毛病一定挑得出來,但重點是我們不知道那到底是小問題還是大問題。車商收車時,就有可能把問題挑一挑放大,然後說車況太差要整理要成本,不是汽修專業的我們就有可能被唬一唬覺得好像車況真的有大問題,別人收只會更低,趁早趕快賣了吧。
    先給人看車估價的話,至少會被挑出來的點都能先了解一下,有機會就回去跟車商對對看說詞有沒有合理,或者上網查一下。合理就給扣,不合理也要能辨別,並且理直氣壯的講回去。
    舉一些例子:
    a. 漏油還算正常,但這個年份里程漏成這樣我第一次看到,不是很合理,整理要2–3萬跑不掉,我們ㄧ定要整理過才能賣給客人。
    b. 你這看起來是雪地車,有很多鏽蝕,雪地冬天灑鹽,底盤會鏽比較嚴重,車漆也會比較容易被腐蝕。
    c. 有賽車椅嗎,有的話可以到X,沒有至少少10W。
    d. 有跑車排氣管嗎,沒有的話要再少1W。
    e. 紅色的皮椅買的時候是加價,賣的時候是減價。
    挑配備的話術,不用太信他,我建議一律都是找自己的優點回嘴,比如有自動跟車/大天窗/高級音響,配備滿哩程低之類的。
  2. 建立真實感。開去估之前最好是能先把車子整理一下,像是能立即出售的樣子,因為車行也知道很多人只是來詢價,如果不是認真要出售的樣子他最後可能不會報給妳。

底牌還沒建立好時,容易心軟、恥力不夠的人最好不要答應約到府估車,因為讓對方白跑的虧欠感會在無形中影響你的決策。加上自己心中沒底,也就容易被一些看似專業的理由下砍心理防線,最後他們再營造車況這樣差,他們還願意這麼高已經很幫忙了,過村沒店囉。

實際例子:
車行說如果車況好可以直接上架也想X收,但是這個狀況我們真的沒辦法,最多只能X-10W。我就說沒關係不勉強我請你們吃個飯吧,他們就縮了轉回來問你多少可以,這就顯示他們很想收到車,此時應該合理範圍內報高不要害怕。

建立虛實並陳的故事

  1. 讓車商覺得真的要賣,有機會收得到車,比如我工作異動要出國之類的,最好故事絕大部分都是真的,這樣聊天才不會有破綻。
  2. 底牌要夠strong,挑不到毛病,才不會破價。比如原車商就算沒有回收車好了,但幫忙找業內朋友估一個不錯的價格,那我們也可以『包裝』成原車商的回估價,並且說都在原車商那保養車況他很熟悉了,沒有看車扣錢問題,這樣其他車行就很難找到理由把價格往下談,後續就可以說如果沒有比這高,那給原車商收就好了啊。

車況很好可以加價嗎?

收車時其實都沒在看你保養狀況,也不看維修紀錄,一般小擦傷的話也不會拿出來講,被問到有沒有待修時,我說門把燈不亮,車行都是說小問題就不追問了。我的感覺是一些小刮擦傷在中古車因為是常態,都不是大問題。反過來說,平時很追求完美,弄到一下就做局部烤漆,鋁圈刮到一點點就整顆修,最後賣車時是不太划算的。

也不用想先修好再賣價錢比較好,除非是引擎變速箱等不修會惡化的東西,我覺得主要是中古車都有標準收購範圍,再好的車,採購也不敢破頂上去收,在範圍內做事最安全。另外就是車行整理的費用肯定比消費者去修被賺一筆的費用低不少,這也是小問題他們不介意的原因吧。

如果是自售,那可能又是另一回事,我覺得自售買方的標準應該也會比較高,針對一些小問題就要更仔細來回談價,如果原本都整理得很好應該可以試試,但也要有應付一堆問問哥的心理準備。

中招套路分享

談定價格後就寫合約書,合約書一定要花時間一條一條慢慢看,最好在旁邊看他寫,不要聊天,就跟他們說你要專心看一下。像我其實是有看到全年稅費由我負擔,可是我車又不是用到年底,那後面不就是幫別人繳?這種先談完價格,再用埋藏在合約書中的細項陰回來的套路是屢見不顯。

類似招式我修鋁圈時也中過,先講鋁圈金額是X,真的換完結帳時說換一個輪胎工錢+1000元,最後變成X+1000,所以最好講價時都確認是『完工價』。

另外,最好能壓上一個過戶時間,越快越好,因為車輛過戶前稅款/罰單/停車費都還是原車主負責,就算合約有寫交車後車行負責,真的有問題時討錢一方都是弱勢。

為什麼要這樣無間道?

除了世道普遍是這樣以外,總的來說還是囚徒困境的單次博弈的問題,背叛的利益大於合作,但至少在多次博弈的職場,肯定不會,也不該這樣。

這次經驗我學到的是,針對單次博弈,要能在不同社會場合察覺並調整融入與環境相近的道德水準。

不過換個角度看,不想花太多心力搞五四三,降低道德水平會導致個人不舒適,時間成本太高的人,都可以給原車商,或挑網路有名的車商快速處理掉即可,差距沒有到很大。

--

--

這兩天聽到一集podcast,有感而發:

矽谷為什麼?EP116 — S&P500上市公司高階主管的三階段管理哲學 挑戰美國職場天花板 | 專訪Etsy資訊長 謝居呈

內容講的都是比較典型的美式管理風格,我個人認為也是相對主流的風格。不過基於我個人在兩岸工作幾年的觀察,固定思維多少都存在,之前的主管怎麼帶怎麼教的,都是最真實的體感烙印,比起書上與training講的形而上,真實經歷更容易實操也更穩健,所以如果沒有特別刻意去思考和改變,大部份的人還是腳踏實地『遵循古法』了。

與其空泛地說怎樣比較好,不如比較一下差異在哪。本來我想把管理風格分成美式與中式,後來想了一下,用成長思維V.S.固定思維去解釋也滿順的,姑且美式就叫做成長型管理風格,中式叫做固定型管理風格吧。

首先,我認為產業與職務特性是影響管理風格很大的先決條件(無關職業優劣),比如研發工程師 X 成長型管理風格,OK;產線作業員 X 成長型管理風格,也許不那麼適合。其中有一些本源的差異:

知識變化速率

軟體產業的知識變化速度極快,需要不斷更新知識因應變化。而變化本身使得不在實作第一線的管理者沒辦法擁有最up-to-date的知識做正確的決定,所以有一部分決策需要仰賴一線軟體工程師input,因此透明、合作來最大化正確決策的機率就是順理成章的事。另一方面,軟體發展的進程也不過是百年內的事,因此這個產業很多東西還在一直在高速發展中,比如之前大數據系統剛出來時,把大數據儲存與計算問題解決了,也使得需要大量數據運算的Deep Learning普及化,cloud/container/kubernetes讓software-defined infrastructure達到工業級水平而大爆發,這些也僅僅是近十幾年內在軟體產業發生的典範轉移,所以能不能跟上時代,持續學習成長的能力就很重要,在這個產業中如果不創新,就會被創新殺死。主管如果故步自封,拖累組織進化的進程,恐怕是要第一個被淘汰,或者讓組織『被淘汰』了。

反過來說,如果完成工作所需的知識幾乎固定不會變動,不需要員工提升組織的知識邊界,而是需要員工穩定、高效率、正確的輸出,那用成長型管理風格可能有點勉強。用固定型管理風格,主管獨立做決策快速給命令、員工遵從階級制度確保命令被貫徹執行,以恐懼建立威信,用嚴懲來嚇阻犯錯,可能相對適合。這裡講得比較極端,具體怎麼拿捏好度就是智慧了。

創新帶來的回報

軟體開發如果更多涉略研發與創新(不見得是research,新的應用、新的實作、新的business model都行),有時也要一點運氣才能成功,但是軟體天性容易複製,網路效應容易放大成果,所以很容易scale,回報也就大, 因此就很適合有相對高一點的創新佔比。

訪談中提到創投如果看到一個創業家沒有失敗過的經驗甚至會有點擔心,因為他可能還沒撞過牆,還太過膨漲,不知道怎麼在邊界內做事。有經驗的創業老手知道怎麼take calculated risk,追求好的decision quality提升勝率,但也坦然接受不可控因素,從失敗中挖掘出有用的知識和以前沒考慮到的維度。

前面提到創新總有一點運氣成分,所以有良好的心態面對失敗就很重要。如果是固定型管理風格,管理者面對失敗就很容易敗給人性的弱點,會極力找各種理由,或用模糊的說詞避免直接承認失敗,因為害怕承認自己有所不足會有損自己的威信。這是因為擁有固定思維的主管覺得自己『應該要』比員工厲害,『應該可以』做好,所以有問題的話,一定是其他問題而不是自己有問題。有的主管則是自己都清楚狀況,但就是愛面子拉不下臉。

其實看破不說破,幫忙扶一下主管的面子,維持主管尊嚴確保指揮體系的效率,倒也無傷大雅,不過僅限在固定型工作環境比較適用。不承認失敗的另一面是放棄探究失敗的原因,對於知識相對固定的工作影響不大,但是如果是成長型工作,那所有人都錯失一次寶貴的學習經驗,軟體業impact scale大的天性,也可能令重複犯相同錯誤付出極高成本,更嚴重的是形成糟糕的表面文化。

這邊要注意的是,我們不是讚頌失敗,也要避免習慣失敗,或者用學習成長做藉口美化失敗。具體探究失敗的原因,保持成長心態,接受創新可能帶來的失敗,但如果是明顯可避免、工作態度不正確造成的失敗,也需作出適當的懲罰以設立底線,建立正確的價值觀。

市場供需

最後這個因素就比較現實了,優秀的軟體工程師一直都是都是供不應求,所以需要兩個面向來達成需求:

  1. 培養:找不到人的一個方法就是自己養成,所以要採用成長型管理風格。
  2. 留才:要留住人才就要有誘因,成長型管理風格能夠滿足人才自身的成長與成就感需求。

如果哪天軟體發展漸趨成熟,各種底層/中層/low-code solutions都齊備且能夠滿足80% of business requirements,也許軟體工程師的bargaining power就不存在了,到時候也只能忍氣吞聲求口飯吃,學習成長靠自己吧。不過我相信人類社會的發展一定是持續朝更好的方向前進,屆時大家都能擁有足夠的知識,判斷怎樣的管理方式適用。

最後

過與不及都不好,中庸之道的精妙在於了解整個系統後,如何妥善調控兩個極端中間的邊界來取得平衡。美國作家菲茲傑拉德(F. Scott Fitzgerald)在小說『了不起的蓋茨比』中說:『檢驗一流智力的標準,就是看你能不能在頭腦中同時存在兩種相反的想法,仍能維持正常行事的能力』。先不急著否定,探究事情的本源,也就能理解兩個截然不同的想法有各自背後存在的邏輯,往系統性理解前進一步。

走筆至此,大家應該不難發現我還不具備一流智力,文中多少帶有一些主觀傾向性吧(笑)。

--

--

最近在讀一本書:躍遷,古典著。

裏頭有一段篇幅談到『識別知識的源頭』,大意是說,網路時代的各種文章充斥,很多文章的知識點不是原創而是轉譯過的,就像流言ㄧ樣,不同人的解讀與傳播到最後總是會失去原意。

比如大家都聽過的一萬小時定律,源頭是埃里克森與同事合著的論文『刻意練習在專業獲得的應用』,被格拉德威爾截取其中的一萬小時定律,寫成『異類』這本暢銷書而炎上。原作者埃里克森覺得自己的理念被誤讀,所以又出版一本『刻意練習』,強調沒有確定的時間門檻讓人成為大師,正確的練習才是重點。

我們生活中其實也有非常多例子,比如一些技術課程、Tech Talk、Blog,是的,你在讀的本篇文章前半段也是二手知識(笑),不論是作者有意為之想發表自己的觀點,或是儲備知識不夠導致理解不到位,或是表達不清晰不能準確描述,或想做行銷,都有可能使得訊息不正確傳達,而形成不盡然正確的認知。

不過通常要探詢知識的源頭也並不容易,如果作者沒有留下線頭,本來就沒有這方面知識的讀者又怎麼知道要探尋什麼呢?

另一方面,知識的源頭有可能是well organized papers/books,但也有可能是比較散亂或不易閱讀的形式存在,比如討論串,程式碼,或非母語。這時候有人整理過的二手知識在效率上還是有很高的價值,所以二手知識並非不好,凡是現實的都是合理的,存在即價值。

我覺得二手知識只要把握兩點就能正確發揮其價值:

獨立思考

盡信書不如無書,書中他人分享的經驗知識肯定能增加自身的思考維度與深度,尤其新的維度是沒辦法憑空冒出來的,大家肯定有個經驗是不知道關鍵字所以沒辦法搜尋,這是『知道我知道,知道我不知道,不知道我不知道』中的最後一級。維度/深度增加了,綜合得出的結論就不會是每個人都一樣了,也許你讀過更多先進的思想,能總結出更高級的結論,但不論如何,讀的東西都有可能帶來收穫。

成長心態

我想除了數學這種能証明為真的學科以外,大概沒有什麼事能永遠是對的了。想想地心說與日心說,隔壁棚物理學,總是會有新的想法推翻之前的認知。所以即便是一手知識,也可能不盡然就是正確,但至少能反映當代人知識水平的最高殿堂,而新想法能取代舊的想法肯定是有其優越性在。讀二手知識也是一樣,我原本什麼都不知道,讀了一些,增維升級了,再往後讀到一手知識,就再升級上去,保持開放心態即可。

最後還是要頭尾呼應,講一下Open Source。

Open Source大部分先進的思想與技術都會先露出在社群之中,在Apache Way中更是規範things can be public must be public. 在資訊揭露上對contributors是極其友善的。任何人只要有300萬美金?阿不是,只要有網路就可以輕易的順藤摸瓜取得一手知識,差別在於是否有足夠的前備知識去看懂他們,此時一些品質好的二手知識就能有效作為中介橋樑。

大家應該也都有這樣的經驗,以前自信滿滿的自己,不聽建議而做了某些蠢事,等後來恍然大悟就覺得很丟臉,不過誰沒菜過呢?儘早接觸一手知識,儘早升級擺脫那個認知不全的自己,比起很久以後才明白,或者是永遠都不明白,都好多了。

--

--

2018年4月,我來到杭州A公司展開新的挑戰。

同年11月,我離開了杭州回到台灣。

這是一份短命的工作經歷,但是關於中國,我覺得還是有不少經驗可以分享的。除此之外,我也會加入一些個人的思考,不一定正確,但我認為讀者一定都有能力對事物做更深層次的思考,不會照單全收。

這篇我會著重生活的部分,分幾個大項講:

租房

來到杭州第一個挑戰是租房,A公司這部分類似很多歐美大公司,待遇不錯,除了搬家費,也有一週的酒店住宿讓你找房。經我個人不詳實考究,搬家費與酒店都與同樣在中國的Microsoft還是差了一個檔次。

租房與台灣有幾點不同:

  1. 沒有套房這種東西,除了家庭式3房以上(整租或分租),就是酒店式公寓,大部分都是樓中樓(loft)。
  2. 租金通常一次要先付3個月的份,簽約時還要多付一個月押金,所以第一次付款會很沈重,尤其是需要換匯的新住民。

如果想省仲介費,可以上58同城或一些刊登管道搜尋免仲介費的PO文,這些是業主直租的。

網路

翻牆是肯定要的,我個人常駐兩套方案,付費VPN和SSR。具體細節有很多專業文章在講,這邊就不展開。那為什麼要兩套?

  1. 兩套可用性比較高,VPN哪天突然被封了也是很自然的。根據不準確的觀察,一些大節日付費VPN會不work,打客服也說沒辦法,原因可以自行想像,不過通常大節日VPN封掉SSR也難逃一死。
  2. VPN和SSR都要client支持,而client不一定跨平台(筆電、手機、平板),付費VPN當然什麼client都有,SSR client好一點的要買才有。
  3. 有些網站VPN才能看到,SSR看不到,而且VPN可以選擇不同國家,碰到某些需要當地IP的場景有奇效(看劇)。

至於翻牆效果,我這麼解釋吧,就像洗澡一樣,還是有可能會洗到一半會沒水或是變冷水。通常晚上封包會大量丟失。所以總的來說,在中國翻牆工作還是挺傷生產力的,但也可以部分mitigate,比如搞搞cache,改連中國mirror等,這種就要根據工作內容去特化解法。

很多人會寄希望於公司有高速穩定的VPN,這個要具體分析,比如說有的公司是會限流,有的是設白名單,有的是拉整條專線接到日本等,quality差距會很大,所以最好還是先找在這家公司的人私下問問具體情況。

食物

A公司的食堂很棒,選擇多、便宜、美味。

外食的話,粗略計算大概是台灣消費的1.2倍。吃的東西差距不大,總的來說滿習慣的。有一些台灣沒有的,在杭州很夯的食物:小龍蝦、鱸魚、中式燒烤(醬的味道我很喜歡)。衛生是還OK,自己看起來都覺得怪的不要吃就了吧,比如在比較髒的馬路邊的燒烤。

外賣(餓了嗎、美團)便宜又方便,會經常使用。

娛樂

跟台灣一樣,逛街、唱歌、看電影、踩景點、看風景等。

電影比台灣便宜,尤其3D的便宜不少,3D眼鏡要買,但是很便宜,下次忘記帶也不心痛就買新的吧。台灣3D票價貴很多,眼鏡再怎麼消毒我還是不太想戴。

交通

短程打車、腳踏車、電動腳踏車是比較常用的,但是這種共享類型的交通要思考用槍時機,比如上下班時間,是否下雨都會影響,例如晚下班沒半台腳踏車可用,下雨打車要等50分鐘。公車也很多,但是要注意營運時間,有的只運行到7、8點。

較遠一點的移動會搭配高鐵、地鐵、巴士,基本上大眾交通票價都滿便宜的。注意高鐵用台胞證訂票有諸多不便,要現場取票,排隊會排很久,經常有人説趕不上了要插隊等。

恩,很敏感的話題…

可以分兩塊來講,公司內的人都是很好溝通的,和人交流和台灣沒太大區別,我和一起培訓兩週的小夥伴們建立了非常深厚的情誼,曾一起兩天一夜遊歷黃山,甚至我離職後有機會再去到上海,還特別坐了動車去杭州和的大家一起遊千島湖。我想是因為A公司的文化有點類似苦行僧,小夥伴們聚在一起時總能有話題和共鳴吧。

而面對一般大眾,有些事情會需要寬心,重申一下,都是比例問題:

  1. 插隊:
    換個角度思考可能比較舒心(?),自由競爭,搶到算你厲害,搶輸算我技不如人,也是一種遊戲規則,只是我們習慣另一套排隊的規則。不論如何我是排隊派的,如果卡位厲害就能搶贏上車進電梯,那反過來也是歧視一些弱勢的群體,欠考慮了。與此同時,中國也很努力在做教育,宣導文明排隊,只是教育需要以世代為單位的時間。
  2. 說話音量:
    講話很大聲,大聲放影片,都是滿正常的日常遭遇,台灣當然也都有,機率小一點。
  3. 肢體接觸:感覺personal space是比較小的,比如排隊,總是會被後面的人或多或少touch到或推擠到,完全不是我覺得舒適的人與人之間距離,我不知道後面的人是不是下意識覺得往前擠可以加快排隊速度???
  4. 互信:
    我直接分享一些經驗吧:
    (a). 吃飯問店家說要開發票可以嗎,回答OK我們才進去吃,之後說發票用完了下次找他拿,下次登門說還沒補發票下次再來,就這樣跑了3+次,每次都有理由,最後才開到發票,幸好這家店在我回家的半路上…
    (b). 到上海出遊一樣吃飯問發票說OK,結帳時說留地址幫我寄過去,就這樣了無音訊,微信問幾次無下文,美團負評才主動私訊我講很多經營困難的話討同情…
    總的來說都能感覺到店家不老實,當然也是有很多店家很誠實,有一家拉麵店真的事後寄發票給我,花了不少運費,很良心。
  5. 道德:
    舉個實例,辦公室突然跑來一個人急著充電,想要拿走隔壁同事的充電器,同事人不在,我上去跟他說要問主人借才行,他說沒差吧。我不知道這是因為文化價值觀上比較傾向共有的觀念嗎?
  6. 政治:
    小區的警衛找我閒聊知道我是台灣來的,會很自然而驕傲地說你看我們祖國很棒吧。

總的來說,我覺得這是一段很有價值的經驗,經驗就是從實務中體會那些難以言喻的不同點在哪,有了對比,就能型成一個有變量的維度,而不斷增加看事情的維度就是認知升維的過程。

如果要我對這段經歷下一段註解,我會說我認識了很棒的朋友,經歷過難忘的時光,挑戰過很有趣的工作:)

--

--

今天參加某conference,講者說雲端提供的NoSQL比傳統B-tree database快,因為B-tree database使用SQL介面,需要額外轉譯執行,而NoSQL只要使用簡單的API calls (get, put, scan),少了SQL這一層。聽起來似乎有點道理,就以此為開頭,講一些我的想法吧。

NoSQL也是可以有SQL介面的,Apache Phoenix / Casandra CQL / MongoDB query language是一些例子,不過SQL提供的強大功能如aggregate / join在NoSQL上因為data partitioning的關係所以不完全支持,即便支持也因為效能問題需要謹慎使用,所以SQL+optimizer帶來的優勢不是很大(在OLAP系統中反而非常吃重),比較多的還是提升易用性。但SQL+optimizer是運行在CPU+Memory+小量metadata的環境高速迭代,針對database這種read/write against disk的場景來說,SQL對性能能起多大決定性作用,我是打問號的。

換個角度來看,NoSQL通常以high write throughput為主打,因為寫時主要是append write ahead log和mem table就完成了,但相對讀時要做的事情就比較多了,需要讀取mem table和掃on disk的SS tables來整理出需要的rows和versions。比起維護單一version的B-tree database來說,NoSQL不見得比較快。另外NoSQL在flush mem store和運行compaction時帶來的性能影響也不若B-tree database這麼省心。

不過講者說的另一段話是沒錯,那就是B-tree database因為是二元樹形式,因此只能在一定的量級內提供能良好效能,而NoSQL有比較好的scalibility。

NoSQL不論是Range或是Hash Partitioning的實作,都能利用key和partitions的mapping關係,排除大量無效的搜索空間,而且這個操作幾乎與資料量N無關;B-tree要locate到row則需要LogN的時間,比較容易受資料量影響效能。

總的來說,我不會說NoSQL就比較快,它們有各自的強項such as NoSQL has better scalability; B-tree database has better support over ACID. 縱然有如Spanner這類NoSQL(or NewSQL)利用原子鐘等特殊硬體打破網路不確定性的限制做到distributed transactions,在NoSQL上達成ACID需要更高的成本(特殊硬體、等待延遲、運算量)是不變的。

--

--

Evans Ye

軟體工程雜談。歡迎打臉,幫助我成為更好的自己:)