從刪庫到跑路,DBA 如何防止被淘汰?

lhrbest發表於2017-09-14

從刪庫到跑路,DBA 如何防止被淘汰?

之前一段曾刷爆朋友圈的一張圖,廣大 DBA 玩的不亦樂乎。刪庫與跑路,一時成為業內的熱門話題,並由此派生出很多 “創意刪”,“經典跑 “等。


從刪庫到跑路,DBA 如何防止被淘汰?

刪庫容易跑路難,一個沒有刪過庫的 DBA 的人生是不完美的,然而當刪庫成為 DBA 體驗刺激甚至報復的工具,此時插翅也難逃法網恢恢。


從刪庫到跑路,DBA 如何防止被淘汰?


所以不論是作為資料庫的守護者 DBA,還是其他的運維人員,一定要遵循職業道德不斷加強自我修養。


從刪庫到跑路,DBA 如何防止被淘汰?


作為廣大 DBA 的一員,我們扮演神聖的角色,我們希望做使用者最忠實的後盾,在任何疑難問題和故障面前,能夠驕傲地說,有我在!


大資料時代是一個以資料驅動決策的時代,資料就是企業的生命,DBA 是一個高危的行業,接觸並保護企業最核心的資料資產,作為大資料時代的  DBA,如何防止自己被淘汰?


從刪庫到跑路,DBA 如何防止被淘汰?


一句話對比三大資料庫軟體


這個世界上 Oracle、SQL Server 和 MySQL 三大資料庫軟體呈三足鼎立之勢,三者之間互有優缺點。


我把三者的優缺點對比總結成了三行文字:

  • Oracle:最貴,功能最多,支援平臺數量較多,速度中等,開發和運維比較簡便,最安全。

  • SQL Server:價格適中,功能比較豐富,支援平臺單一,速度最慢,開發和運維最簡便,比較安全。

  • MySQL:價格最低廉,功能少但可自由新增,支援平臺最多,速度最快,開發和運維繁瑣但可簡化,比較安全。

從刪庫到跑路,DBA 如何防止被淘汰?


DBA 選擇資料庫的方法


按效能和安全性來選擇


大型國企(銀行)、傳統企業上市公司(保險)的企業級應用對資料的完整性和安全性要求最高,務必萬無一失,因此安全性最佳、功能最齊全的 Oracle 是傳統軟體的首選。


一般來說,移動網際網路領域的公司對資料的完整性和安全性的敏感程度並不太高,所以網際網路行業的從業者可能有入行幾年還沒見過 Oracle 的。


不過,電商、金融類的網際網路產品對安全性要求同樣非常高的軟體也應該選擇 Oracle 作為資料庫。


如果公司是非移動網際網路行業的外企,那麼一定要選擇 Orcale,一來是洋老闆普遍財大氣粗,二來是外企領導不像國內領導這麼依賴對 Windows 系統友好的資料庫軟體。


按開發速度和運維難度來選擇


一般國企和事業單位以及傳統企業小公司的領導對軟體(一般情況下只有展示網站,連 ERP 系統都是買現成的)的要求就是價格低、快點出結果;加上國內的傳統的領導對 Windows 系統有說不清的迷戀。


如此一來選擇 SQL Server 能同時滿足這三個要求,不過一般在這樣的單位不會存在 DBA 這個崗位——讓開發網站的程式設計師擔任 DBA 的一部分職責(其實也就只有備份、恢復、作業管理等幾樣)。

按價格和速度因素來選擇


移動網際網路時代的創業公司並不需要太糾結資料的萬無一失,但很在意成本,並且對資料訪問速度要求很高。


因此資金不太充裕、為了給移動端提供 API 的伺服器選擇 MySQL 是最明智的。


事實上在網際網路領域 MySQL 的市場佔有率是最高的,絕大多數移動網際網路公司都用 MySQL 作為資料庫。


Oracle 和 SQL Server 都是具備完善功能的資料庫生態系統,而 MySQL 僅是一個速度快、相容性好的關係型資料庫軟體。


但好在 MySQL 是開源的,同時追求速度快和資料安全的公司(移動網際網路領域的電商、金融公司)在資金充裕的情況下,可以專人負責寫一個自己的 MySQL 系統,滿足系統的高可用和高併發、高擴充套件的需求。


儘管 MySQL 的安全性一直為人所詬病,但經過多年改良,它的安全性已經超越了 SQL Server。


DBA 如何優化 SQL


一個合格的 DBA 會明白無論選擇 Oracle、MySQL 還是 SQL Server,SQL 語句的優化都是資料庫優化的決定性因素,而對資料庫工具本身的優化只不過是細枝末節,別人的配置方式也很容易從網上查到。


SQLite 是 Android 系統上執行的資料庫軟體,效能與三大資料庫軟體不可同日而語,況且在 Java 語言的 IDE 裡編寫 SQL 還沒有自動提示,有時候 Android 程式設計師對 SQL 語句優化的要求比 DBA 還高。


在 SQL 上吃過不少虧的我總結了一些 SQL 語句優化方案,在此拋磚引玉,並非外行指導內行:

  • 在 FROM 語句中包含多個表的情況下,把條目最少的表放在前面。比如表一記錄某省人口資料,表二記錄全國失學兒童資料,那麼查詢某省失學兒童的表二應該放在前面。

  • 在 WHERE 語句中過濾掉最多資料的條件必須寫在前面。例如把性別寫在生肖前面的查詢效率是把生肖寫在性別前面的 6 倍。

  • 避免使用 SELECT *。因為這樣會查詢所有的列名,耗費更多的時間。

  • 在 SQL 語句的 WHERE 和 JOIN 部分中用到的所有欄位上,應該加上索引。

  • 移除不必要的表,可以減少很多資料庫的流程。

  • 儘管 SQL 是大小寫不敏感的語言,規範的 SQL 語句務必大寫。


DBA 在大資料時代的發展前景


成為一個 DBA 表面上 “僅” 需要 SQL 語言和資料庫基礎管理的知識,所以造成了從業者的水平良莠不齊。


舉一個極端的例子

我有一個留級兩年的同學勉強拿到畢業證後就從事了 DBA,然而理論跟實際相差甚遠。


模擬的環境根本達不到線上要求的多使用者、高併發等壓力,僅靠在課堂上和自學是不能成為一個合格 DBA 的,合格的 DBA 必須從企業中的實戰走出來。


一個合格的 DBA 必須掌握 Linux 基本命令和操作、資料庫備份和恢復、SQL 優化、資料庫效能優化和至少一門指令碼語言(如 Python)。


移動網際網路時代雨後春筍般誕生的創業公司給人一種 DBA 的角色性變弱的錯覺,其實任何 IT 公司做大後都離不開 DBA 這個崗位。


大資料時代是一個以資料驅動決策的時代,資料就是企業的生命,掌握公司命脈的 DBA 的崗位越來越重要,作用也越來越顯著,待遇也越來越豐厚,發展前景也越來越明朗。


尤其在大資料的時代裡,原本就一直存在的效能問題和安全問題會更加突出,這意味著企業對 DBA 人才的需求會越來越旺盛,同時這也意味著 DBA 會面臨比以往更多樣化的困難和更嚴峻的挑戰。


加上近年來的大規模叢集和自動化運維,很多以前手工維護的工作現在都可以通過一系列自動工具來完成。


儘管讓只會增刪改查的 DBA 看到了自己的可替代性,但也給對技術精益求精的 DBA 節約出了鑽研新技術和新知識的時間,使他們更加專注於解決前所未有的困難。






來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2144966/,如需轉載,請註明出處,否則將追究法律責任。

相關文章