本節書摘來自華章出版社《高并發oracle資料庫系統的架構與設計》一書中的第1章,第1.2節,作者 侯松,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視
活在當下,對于it人來說,是再合适不過的說法了。it行業的發展速度堪比高鐵、火箭,每一個it人都在擔心自己的知識領域明天就要過時,不得不每天學習新的知識,無奈的是跑得再快也沒有辦法追得上火箭。
在資料庫的領域裡,也是時刻都在出現新概念和新産品。創新,成了每個人、每個企業都在不斷追逐的東西。現有的東西,做好了是應該的,做不好要接受懲罰;創新的東西,做不好是應該的,做好就是績效。當創新和kpi績效直接聯系到一起的時候,大家都不再是為了創新而去創新,而是為了kpi而去創新,甚至出現了微創新的說法,可以是一種方法的引進,或者一種新資料庫的引進。然而,創新這東西是由需求來驅動的,人家的需求未必是我們的需求。人家的創新就像人家的衣服,人家穿得很漂亮,我們拿來穿可能就很别扭了。
每個行業都有一到兩個領軍的企業,他們在做什麼,同行業的人就跟着做什麼,我也是經常被同行們問起最近在做什麼,如何做的。同行業的借鑒和學習當然是好事,但也要考慮到自身的現實條件,不要在資料庫總容量隻有幾個tb的時候,就非要去搞什麼大資料。
由于市場利益的驅動,很多企業也開始跨行業發展。為了能夠快速地融入并占領不熟悉的行業領域,不惜生搬硬套該行業已成型的東西,由于急功近利而缺乏沉澱,直接導緻東施效颦的結果。更有甚者,不分良莠,言必稱希臘。
去ioe,具體不知道從什麼時候開始,在資料庫領域裡掀起了一波不算大也不算小的浪潮。是贊是貶,是喜是憂,一半一半。
去i:就是廢棄以ibm為代表的高價小型機;
去o:就是廢棄以oracle為代表的集中式資料庫;
去e:就是廢棄以emc為代表的高端儲存設備。
廢棄這些高端大氣上檔次的東西,取而代之的是使用開源的軟體。暫且不說開源軟體的優缺點吧,先來看看為什麼要去ioe呢?不說始作俑者是何用意,後來者更多的是一種盲從跟風的心态,正如前面所說的一樣。下面我們從兩個次元來分析一下看看吧:
1.?以公司為中心
去掉了ioe确實能給公司節省下不少的硬體成本,但如果你就此簡單地認為it成本降低了,那就錯了。這部分節省的硬體成本将轉化成軟體成本附加到it開發和運維上面。這些軟體成本将包括以下幾個方面。
開發運維人員再學習和再教育訓練的成本,如果公司不打算把原班人馬全部開掉。
資料庫開發運維的成本将增加,且不可控。開源資料庫的開發運維和oracle資料庫的開發運維是完全不同的,oracle資料庫有強大的優化機制,讓一些不算太好的sql也能表現得不錯。開源資料庫則不然,需要更多人力投入到優化開發和設計中。不幸的是,這就像一個無底洞,誰也不能預估将需要多少人力成本的投入。
開發運維風險增加,且不可控。使用開源的東西,意味着失去專業廠商的支援,什麼問題都要靠自己解決,萬一解決不了就隻能等死。
面臨成本和風險的不可控,需要穩步發展的企業是否還值得選擇去ioe呢?如果說出于戰略考慮,可以不用受制于ioe,那麼就算去掉了,不是還要受制于pc server嗎?同時,系統的開發運維更加依賴于技術人員,不是更加受制于技術人員嗎?
2.?以技術為中心
以技術為中心,也就是以技術人為中心。我記得我曾經在一次ioe的話題讨論中問過一個問題:“誰願意在情人節跟女友出去約會的時候,突然被叫回來處理故障呢?誰願意在陪孩子親子活動的時候,突然被叫回來處理故障呢?”
如果去了ioe,就失去了專業的服務支援,這些都将變成可能。當然,熱衷于以公司為家的技術人不在讨論範圍内。
客觀地來說,每一種技術、每一種産品都有其作用的領域,沒有萬能的資料庫,也沒有萬能的架構,隻有萬變的需求和随機應變的設計。ioe有其廣闊的作用域,也有其不擅長之處,成熟的設計應該是用其所長,避其所短,不走極端路線。
開源資料庫軟體橫空出世,一下子占領了衆多使用領域。開句玩笑地說,不會一兩個開源資料庫都不好意思說自己是搞資料庫的。是的,開源資料庫就這麼應時應景地來了。
我們前面說了,每一種産品和技術都是有其作用域的,開源資料庫更是如此,可以說某一種開源資料庫就是為了某一種應用場景而研發的。比如,mongodb是一種基于分布式文檔存儲的非關系型資料庫,其優勢在于查詢功能比較強大,提供可擴充的高性能資料存儲,可用于地圖路點資訊的存儲。redis作為一種開源記憶體資料庫,資料儲存在記憶體中,通過網絡直接存取,優勢是速度快,高并發處理能力強。
那如何定位開源資料庫的使用領域呢?立足于傳統行業,我還是持有一種比較保守的觀點:
非核心的外圍業務應用;
最好是作為核心oracle資料庫的擴充,不必獨立進行業務支援。
然而,如果立足點是類似網際網路這些比較前衛激進的行業,那麼萬物皆可開源。