搜狗技術團隊爲何從oracle轉mysql 【轉】

日前,CSDN採訪了搜狗商業廣告數據庫負責人王林平。目前搜狗主要使用的數據庫是MySQL、MongoDB、HBase來存儲數據。爲何從Oracle轉向MySQL?在他看來,原因有三:第一,降低運維成本;第二,降低軟件成本;第三,提高可擴展性

CSDN:首先,請做個自我介紹,目前所負責的領域以及所在公司。

王林平:大家好,我是王林平,目前在搜狗商業平臺研發部工作。 
主要負責商業廣告數據庫的維護、優化、架構設計、流程體系建設、自動化運維平臺建設等工作,目前比較關注數據庫備份恢復、性能優化、運維自動化等幾個領域。

CSDN:你是從何時加入搜狗的?從事數據庫開發和運維這麼多年給你最大的感悟是什麼?

王林平:我是2011年初加入搜狗的,到搜狗快五年了,經歷了數據庫團隊由小到大逐步成熟的過程。從事運維工作已經八年多,感受最深的有兩點:

  • 第一,責任心重於一切。我們維護的是企業最核心的信息—-數據,一旦數據丟失或者數據異常,帶來的損失不可估量。高度的責任心和良好的職業道德是成爲一個好的運維工作者的的最重要前提。

  • 第二,自我驅動很重要。運維這項工作在學校的專業裏面是沒有的,如何開始做運維,如何做好運維,如何讓運維工作更有價值,都是需要我們自己去探索,不斷給自己提出新的目標並探索解決的方案,能爲企業創造更高的價值。

CSDN:目前搜狗主要使用的數據庫是什麼?爲何想到從oracle轉向MYSQL呢?

王林平:目前搜狗主要使用的數據庫是MySQL、MongoDB、HBase來存儲數據。MySQL主要存儲對數據狀態有要求和更新頻繁的數據;MongoDB主要用於存儲計費數據、日誌數據和流水數據;HBase主要用來做數據分析和存儲大數據內容。

從Oracle轉向MySQL主要是出於三個方面的原因:

  • 第一,降低運維成本。Oracle數據庫自動化運維實現難度和成本較高,而MySQL運維自動化難度和成本相對較低,當數據庫實例不斷成倍增長的時候,使用MySQL可以在有限人力的情況下維護更多的數據庫實例。
  • 第二,降低軟件成本。Oracle License成本較高,MySQL及其分支目前是免費的。
  • 第三,提高可擴展性。MySQL是開源數據庫,便於有技術能力的公司根據業務發展情況自己開發定製一些數據庫周邊服務,使數據庫使用的擴展性提高,而Oracle對這方面的支持比較一般。

CSDN:你怎麼看待MYSQL的性能?有哪些優缺點? 搜狗基於MYSQL的開發場景有哪些?

王林平: MySQL在單實例性能方面和Oracle相比還有一些差距,我們通過規範和技術手段來降低這些性能差距帶來的問題。

首先,大量甚至海量數據的增刪改、查詢、聚合查詢的性能還有待提高。爲了規避這些問題,我們在開發規範裏面要求MySQL的實例大小低於150G,要求帶變長行的錶行數不超過500w,儘量降低查詢、修改、刪除腳本的複雜度,以原子查詢的方式訪問數據庫。

其次,MySQL的優化器還不夠完善。MySQL的優化器還更接近於基於規則的優化,而不是基於成本的優化,對複雜查詢的智能優化有待提高。因此MySQL數據庫多表聯合查詢的性能還不如Oracle。我們的開發規範要求開發人員儘量避免三個表以上的表關聯查詢。

第三,原生版本的MySQL主從延遲挺嚴重,遠高於Oracle數據庫。爲此我們將批量更新和批量刪除的事務的粒度拆分的比較細,同時在覈心業務上使用SSD硬盤來降低主從延遲對業務的影響。

MySQL有以下優點:靈活、可配置、可二次開發、方便維護管理,集羣的性能和擴展性強。 
MySQL的缺點是存儲和查詢的數據量、併發數有限,主從非強一致。這就要求DBA必須對數據庫的業務深入理解,合理規劃併發數、數據量,進行預估、拆分等架構優化來規避這些不足。

我所在的商業廣告部門很多平臺是面向客戶的高併發、高壓力的系統,應用MySQL數據庫存儲廣告物料、客戶資料、計費、資金、日誌、管理平臺、基礎架構平臺等業務數據。不同平臺對性能、穩定性、安全性要求不同,我們會根據平臺特點選擇合理的MySQL部署和配置方式。

CSDN:據瞭解,搜狗實現了數據庫的“一鍵部署”功能,請問這是怎樣的一種解決方案?

王林平:可以理解“一鍵部署”是一種理念和工具的實現。這個理念是基於MySQL數據庫本身的特點出現的,MySQL數據庫的安裝配置步驟相對簡單,安裝過程中出錯的概率相對比較低,隨着業務量增加這種重複勞動量急劇增加,給DBA造成很大的負擔,重複勞動的價值並不高,因此考慮對這部分工作進行自動化。

起源:最初是爲了降低部署成本,開發了一個很簡陋的腳本工具,只是將數據庫目錄創建好,二進制包解壓縮,並給出DBA啓動數據庫的命令。

發展:爲了平臺化運維需求豐富了功能。隨着業務的不斷髮展,數據庫實例越來越多,由幾十增長到了上百個,甚至幾百個,規模化運維要求有集中的信息管理平臺,因此一鍵部署工具將數據庫、服務器、實例信息做了入庫管理,同時爲了有效提高自動化運維的效率,我們對操作系統、硬件等信息進行了標準化,一鍵部署工具還需要對這些信息進行校驗,一鍵部署工具還對備份系統、監控系統做了初始化。一鍵部署工具執行完之後,數據庫的使用和基本信息的入庫工作,包括後續工作的準備工作都完成了,可以投入生產環境使用。

展望:我們的運維自動化起步是從一鍵部署開始的,未來我們更傾向於將95%甚至比例更多的工作用Web工具實現,同時有完整的交互界面,一鍵部署可能會隨着業務和需求的增長越來越龐大,會拆分成N鍵部署,但是依舊高效,期待鼠標點幾下、手指觸碰幾下就完成數據庫部署和運維高效時代到來。

CSDN:安全問題,一直是數據庫運維人士關注重點,你們是如何確保數據庫安全問題的?

王林平:數據的安全我理解應該從兩個大的維度去分析,第一是訪問安全,不會出現不應該有的訪問,不會因爲不應該有的訪問崩潰,用戶的敏感數據不會泄露;第二是數據安全,數據可恢復,不丟失。

訪問安全,我們是基於操作系統的安全機制和數據庫自身的安全機制來保證的;在操作系統的安全層面,我們採用IPTABLES白名單的方式,僅允許指定範圍的IP的內網服務器訪問數據庫,同時嚴格隔離線上和線下。在數據庫自身安全機制上面,我們針對細粒度IP進行授權,並且回收了表的創建、刪除、DDL操作權限;同時我們開發、部署了數據庫訪問巡檢工具,實時屏蔽不合法的訪問。針對訪問安全,爲了降低授權成本,我們研發並全部使用自動化授權工具授權。

數據安全,我們主要是通過多級備份策略來保證的,多級備份策略是指:熱備份+邏輯備份+二級備份+定製備份。熱備份保證數據庫可以在一週內恢復到某個時間點,邏輯備份作爲熱備份的補充;二級備份主要是將歷史上的邏輯備份做一下遠程雙份備份,以規避誤操作帶來的損失;定製備份是針對一些特殊業務需求,做按天切片備份,滿足業務對某天數據恢復的需求。同時爲了確保數據快速恢復,我們儘量把單實例的大小控制在100G以內。熱備份+邏輯備份+二級備份可以滿足大部分廣告數據的恢復需求,而對於資金、計費、財務類數據,由於涉及到審計,我們會與業務方確認是否需要補充定製備份。

CSDN:在你看來,一名優秀的技術人應該具備怎樣的素質?

王林平:技術人的範圍有些廣了,我談一下運維人員的必備素質吧。 
首先是知識沉澱。基礎知識是做好工作的基石。系統的學習各類基礎知識,熟悉數據庫、操作系統的架構及相關工具的使用,熟悉主流腳本語言的開發,同時還需要對故障定位有一定的理解。

其次是經驗沉澱。要耐得住寂寞,不斷積累經驗。做運維工作需要豐富的經驗,高併發、大數據量運維經驗,大量服務器和實例的運維經驗。在關鍵的時候這些經驗會拯救企業的服務和數據。

再次是業務沉澱。要具備較強的業務理解能力,深入並精通所在崗位的業務。技術是爲業務服務的,技術人員到一個新的崗位會的只是通用技術,技術適應並結合業務才能發揮更大的作用。

最後是軟技能的沉澱。較強的執行力,適應業務、技術的創新能力,良好的溝通協作能力和組織能力,優秀的團隊配合能力;細緻、冷靜、沉穩,優秀的判斷能力和緊急狀況擇優處理能力;充分的理解和被理解。要有不斷更新自己的慾望和自我驅動力。互聯網技術日新月異的,行業的發展非常迅速,必須不斷地學習新知識和技能,才能跟上時代,更好的成長。

CSDN:給從事數據庫運維的開發者分享些建議吧。

王林平:有幾點想法分享下:

  • 第一,運維工作最重要的是穩定性。判斷是否要做一件事比做好一件事更重要。

  • 第二,自動化運維已經成爲當前主要的運維方式。互聯網運維進入自動化時代,以開放的心態面對現狀展望未來,修煉自己全面技術能力很重要,除了會拿來,更需要會創造,讓人去想,讓機器做事。

  • 第三,工作工具很重要。有一套自己的工作工具,可以事半功倍。

  • 第四,需要建立服務意識和服務體系。作爲後臺支撐團隊,提供更好的數據相關服務是最重要的。

  • 第五,低頭走路別忘記擡頭看天。做好本職工作的同時要時刻考慮自己和團隊的價值是什麼,對業務和產品有什麼貢獻。

CSDN:其他有需要補充的嗎?

王林平:從數據庫運維發展歷程來看,主流的互聯網公司的路線基本類似,不同公司在不同的領域有自己的優勢。我們在規模化運維方面積累了一些經驗,也在國內外一些技術交流大會上學習到了許多經驗,希望整個行業能夠加強交流頻度和深度,互通有無,使數據庫運維更快速地發展。

(責編/夏夢竹,尋求報道或投稿,請聯繫[email protected]

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