從刪庫到跑路,DBA如何防止被淘汰?
原創(chuàng)最近刷爆朋友圈的一張圖,廣大 DBA 玩的不亦樂乎。刪庫與跑路,一時成為業(yè)內(nèi)的熱門話題,并由此派生出很多“創(chuàng)意刪”,“經(jīng)典跑“等。
刪庫容易跑路難,一個沒有刪過庫的 DBA 的人生是不***的,然而當刪庫成為 DBA 體驗刺激甚至報復的工具,此時插翅也難逃法網(wǎng)恢恢。
所以不論是作為數(shù)據(jù)庫的守護者 DBA,還是其他的運維人員,一定要遵循職業(yè)道德不斷加強自我修養(yǎng)。→從小公司,一路跌跌撞撞到騰訊,論高級DBA的自我修養(yǎng)!
作為廣大 DBA 的一員,我們扮演神圣的角色,我們希望做用戶最忠實的后盾,在任何疑難問題和故障面前,能夠驕傲地說,有我在!
大數(shù)據(jù)時代是一個以數(shù)據(jù)驅(qū)動決策的時代,數(shù)據(jù)就是企業(yè)的生命,DBA 是一個高危的行業(yè),接觸并保護企業(yè)最核心的數(shù)據(jù)資產(chǎn),作為大數(shù)據(jù)時代的 DBA,如何防止自己被淘汰?
一句話對比三大數(shù)據(jù)庫軟件
這個世界上 Oracle、SQL Server 和 MySQL 三大數(shù)據(jù)庫軟件呈三足鼎立之勢,三者之間互有優(yōu)缺點。
我把三者的優(yōu)缺點對比總結(jié)成了三行文字:
Oracle:最貴,功能最多,支持平臺數(shù)量較多,速度中等,開發(fā)和運維比較簡便,最安全。
SQL Server:價格適中,功能比較豐富,支持平臺單一,速度最慢,開發(fā)和運維最簡便,比較安全。
MySQL:價格***廉,功能少但可自由添加,支持平臺最多,速度最快,開發(fā)和運維繁瑣但可簡化,比較安全。
DBA 選擇數(shù)據(jù)庫的方法
01.按性能和安全性來選擇
大型國企(銀行)、傳統(tǒng)企業(yè)上市公司(保險)的企業(yè)級應用對數(shù)據(jù)的完整性和安全性要求***,務必萬無一失,因此安全性***、功能最齊全的 Oracle 是傳統(tǒng)軟件的***。
一般來說,移動互聯(lián)網(wǎng)領域的公司對數(shù)據(jù)的完整性和安全性的敏感程度并不太高,所以互聯(lián)網(wǎng)行業(yè)的從業(yè)者可能有入行幾年還沒見過 Oracle 的。
不過,電商、金融類的互聯(lián)網(wǎng)產(chǎn)品對安全性要求同樣非常高的軟件也應該選擇 Oracle 作為數(shù)據(jù)庫。
如果公司是非移動互聯(lián)網(wǎng)行業(yè)的外企,那么一定要選擇 Orcale,一來是洋老板普遍財大氣粗,二來是外企領導不像國內(nèi)領導這么依賴對 Windows 系統(tǒng)友好的數(shù)據(jù)庫軟件。
02.按開發(fā)速度和運維難度來選擇
一般國企和事業(yè)單位以及傳統(tǒng)企業(yè)小公司的領導對軟件(一般情況下只有展示網(wǎng)站,連 ERP 系統(tǒng)都是買現(xiàn)成的)的要求就是價格低、快點出結(jié)果;加上國內(nèi)的傳統(tǒng)的領導對 Windows 系統(tǒng)有說不清的迷戀。
如此一來選擇 SQL Server 能同時滿足這三個要求,不過一般在這樣的單位不會存在 DBA 這個崗位——讓開發(fā)網(wǎng)站的程序員擔任 DBA 的一部分職責(其實也就只有備份、恢復、作業(yè)管理等幾樣)。
03.按價格和速度因素來選擇
移動互聯(lián)網(wǎng)時代的創(chuàng)業(yè)公司并不需要太糾結(jié)數(shù)據(jù)的萬無一失,但很在意成本,并且對數(shù)據(jù)訪問速度要求很高。
因此資金不太充裕、為了給移動端提供 API 的服務器選擇 MySQL 是最明智的。
事實上在互聯(lián)網(wǎng)領域 MySQL 的市場占有率是***的,絕大多數(shù)移動互聯(lián)網(wǎng)公司都用 MySQL 作為數(shù)據(jù)庫。
Oracle 和 SQL Server 都是具備完善功能的數(shù)據(jù)庫生態(tài)系統(tǒng),而 MySQL 僅是一個速度快、兼容性好的關系型數(shù)據(jù)庫軟件。
但好在 MySQL 是開源的,同時追求速度快和數(shù)據(jù)安全的公司(移動互聯(lián)網(wǎng)領域的電商、金融公司)在資金充裕的情況下,可以專人負責寫一個自己的 MySQL 系統(tǒng),滿足系統(tǒng)的高可用和高并發(fā)、高擴展的需求。
盡管 MySQL 的安全性一直為人所詬病,但經(jīng)過多年改良,它的安全性已經(jīng)超越了 SQL Server。
DBA 如何優(yōu)化 SQL
一個合格的 DBA 會明白無論選擇 Oracle、MySQL 還是 SQL Server,SQL 語句的優(yōu)化都是數(shù)據(jù)庫優(yōu)化的決定性因素,而對數(shù)據(jù)庫工具本身的優(yōu)化只不過是細枝末節(jié),別人的配置方式也很容易從網(wǎng)上查到。
SQLite 是 Android 系統(tǒng)上運行的數(shù)據(jù)庫軟件,性能與三大數(shù)據(jù)庫軟件不可同日而語,況且在 Java 語言的 IDE 里編寫 SQL 還沒有自動提示,有時候 Android 程序員對 SQL 語句優(yōu)化的要求比 DBA 還高。
在 SQL 上吃過不少虧的我總結(jié)了一些 SQL 語句優(yōu)化方案,在此拋磚引玉,并非外行指導內(nèi)行:
- 在 FROM 語句中包含多個表的情況下,把條目最少的表放在前面。比如表一記錄某省人口數(shù)據(jù),表二記錄全國失學兒童數(shù)據(jù),那么查詢某省失學兒童的表二應該放在前面。
- 在 WHERE 語句中過濾掉最多數(shù)據(jù)的條件必須寫在前面。例如把性別寫在生肖前面的查找效率是把生肖寫在性別前面的 6 倍。
- 避免使用 SELECT *。因為這樣會查找所有的列名,耗費更多的時間。
- 在 SQL 語句的 WHERE 和 JOIN 部分中用到的所有字段上,應該加上索引。
- 移除不必要的表,可以減少很多數(shù)據(jù)庫的流程。
- 盡管 SQL 是大小寫不敏感的語言,規(guī)范的 SQL 語句務必大寫。
DBA 在大數(shù)據(jù)時代的發(fā)展前景
成為一個 DBA 表面上“僅”需要 SQL 語言和數(shù)據(jù)庫基礎管理的知識,所以造成了從業(yè)者的水平良莠不齊。
舉一個極端的例子
我有一個留級兩年的同學勉強拿到畢業(yè)證后就從事了 DBA,然而理論跟實際相差甚遠。
模擬的環(huán)境根本達不到線上要求的多用戶、高并發(fā)等壓力,僅靠在課堂上和自學是不能成為一個合格 DBA 的,合格的 DBA 必須從企業(yè)中的實戰(zhàn)走出來。
一個合格的 DBA 必須掌握 Linux 基本命令和操作、數(shù)據(jù)庫備份和恢復、SQL 優(yōu)化、數(shù)據(jù)庫性能優(yōu)化和至少一門腳本語言(如 Python)。
移動互聯(lián)網(wǎng)時代雨后春筍般誕生的創(chuàng)業(yè)公司給人一種 DBA 的角色性變?nèi)醯腻e覺,其實任何 IT 公司做大后都離不開 DBA 這個崗位。
大數(shù)據(jù)時代是一個以數(shù)據(jù)驅(qū)動決策的時代,數(shù)據(jù)就是企業(yè)的生命,掌握公司命脈的 DBA 的崗位越來越重要,作用也越來越顯著,待遇也越來越豐厚,發(fā)展前景也越來越明朗。
尤其在大數(shù)據(jù)的時代里,原本就一直存在的性能問題和安全問題會更加突出,這意味著企業(yè)對 DBA 人才的需求會越來越旺盛,同時這也意味著 DBA 會面臨比以往更多樣化的困難和更嚴峻的挑戰(zhàn)。
加上近年來的大規(guī)模集群和自動化運維,很多以前手工維護的工作現(xiàn)在都可以通過一系列自動工具來完成。
盡管讓只會增刪改查的 DBA 看到了自己的可替代性,但也給對技術(shù)精益求精的 DBA 節(jié)約出了鉆研新技術(shù)和新知識的時間,使他們更加專注于解決***的困難。
本文來自 51CTO開發(fā)者社群原創(chuàng)文章,轉(zhuǎn)載請聯(lián)系授權(quán)。如果你也愿意分享你的故事,請加 51CTO 開發(fā)者 QQ 交流群 312724475 聯(lián)系群主小官,期待你精彩的故事!
玖哥
Android 高級工程師
畢業(yè)于合肥工業(yè)大學軟件工程系,擅長 Android 開發(fā),亦了解前端、后端等技術(shù)。知識面廣,且熱愛文學和歷史,被譽為“Android 工程師中段子編得***的,段子手中Android玩得最 6 的”