從刪庫到跑路,DBA如何防止被淘汰?
原創最近刷爆朋友圈的一張圖,廣大 DBA 玩的不亦樂乎。刪庫與跑路,一時成為業內的熱門話題,并由此派生出很多“創意刪”,“經典跑“等。
刪庫容易跑路難,一個沒有刪過庫的 DBA 的人生是不***的,然而當刪庫成為 DBA 體驗刺激甚至報復的工具,此時插翅也難逃法網恢恢。
所以不論是作為數據庫的守護者 DBA,還是其他的運維人員,一定要遵循職業道德不斷加強自我修養。→從小公司,一路跌跌撞撞到騰訊,論高級DBA的自我修養!
作為廣大 DBA 的一員,我們扮演神圣的角色,我們希望做用戶最忠實的后盾,在任何疑難問題和故障面前,能夠驕傲地說,有我在!
大數據時代是一個以數據驅動決策的時代,數據就是企業的生命,DBA 是一個高危的行業,接觸并保護企業最核心的數據資產,作為大數據時代的 DBA,如何防止自己被淘汰?
一句話對比三大數據庫軟件
這個世界上 Oracle、SQL Server 和 MySQL 三大數據庫軟件呈三足鼎立之勢,三者之間互有優缺點。
我把三者的優缺點對比總結成了三行文字:
Oracle:最貴,功能最多,支持平臺數量較多,速度中等,開發和運維比較簡便,最安全。
SQL Server:價格適中,功能比較豐富,支持平臺單一,速度最慢,開發和運維最簡便,比較安全。
MySQL:價格***廉,功能少但可自由添加,支持平臺最多,速度最快,開發和運維繁瑣但可簡化,比較安全。
DBA 選擇數據庫的方法
01.按性能和安全性來選擇
大型國企(銀行)、傳統企業上市公司(保險)的企業級應用對數據的完整性和安全性要求***,務必萬無一失,因此安全性***、功能最齊全的 Oracle 是傳統軟件的***。
一般來說,移動互聯網領域的公司對數據的完整性和安全性的敏感程度并不太高,所以互聯網行業的從業者可能有入行幾年還沒見過 Oracle 的。
不過,電商、金融類的互聯網產品對安全性要求同樣非常高的軟件也應該選擇 Oracle 作為數據庫。
如果公司是非移動互聯網行業的外企,那么一定要選擇 Orcale,一來是洋老板普遍財大氣粗,二來是外企領導不像國內領導這么依賴對 Windows 系統友好的數據庫軟件。
02.按開發速度和運維難度來選擇
一般國企和事業單位以及傳統企業小公司的領導對軟件(一般情況下只有展示網站,連 ERP 系統都是買現成的)的要求就是價格低、快點出結果;加上國內的傳統的領導對 Windows 系統有說不清的迷戀。
如此一來選擇 SQL Server 能同時滿足這三個要求,不過一般在這樣的單位不會存在 DBA 這個崗位——讓開發網站的程序員擔任 DBA 的一部分職責(其實也就只有備份、恢復、作業管理等幾樣)。
03.按價格和速度因素來選擇
移動互聯網時代的創業公司并不需要太糾結數據的萬無一失,但很在意成本,并且對數據訪問速度要求很高。
因此資金不太充裕、為了給移動端提供 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 節約出了鉆研新技術和新知識的時間,使他們更加專注于解決***的困難。
本文來自 51CTO開發者社群原創文章,轉載請聯系授權。如果你也愿意分享你的故事,請加 51CTO 開發者 QQ 交流群 312724475 聯系群主小官,期待你精彩的故事!
玖哥
Android 高級工程師
畢業于合肥工業大學軟件工程系,擅長 Android 開發,亦了解前端、后端等技術。知識面廣,且熱愛文學和歷史,被譽為“Android 工程師中段子編得***的,段子手中Android玩得最 6 的”