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


































