【IT觀察】作為大數(shù)據(jù)時(shí)代的DBA,如何防止自己被淘汰
原創(chuàng)【51CTO.com原創(chuàng)稿件】
一句話對(duì)比三大數(shù)據(jù)庫(kù)軟件
這個(gè)世界上Oracle、SQL Server和MySQL三大數(shù)據(jù)庫(kù)軟件呈三足鼎立之勢(shì),三者之間互有優(yōu)缺點(diǎn)。網(wǎng)上能查到的內(nèi)容我不再贅述,我把三者的優(yōu)缺點(diǎn)對(duì)比總結(jié)成了三行文字:
Oracle:最貴,功能最多,支持平臺(tái)數(shù)量較多,速度中等,開發(fā)和運(yùn)維比較簡(jiǎn)便,最安全。
SQL Server:價(jià)格適中,功能比較豐富,支持平臺(tái)單一,速度最慢,開發(fā)和運(yùn)維最簡(jiǎn)便,比較安全。
MySQL:價(jià)格***廉,功能最少,支持平臺(tái)最多,速度最快,開發(fā)和運(yùn)維最繁瑣,最不安全。
DBA選擇數(shù)據(jù)庫(kù)的方法
1、按性能和安全性來選擇
大型國(guó)企(銀行)、傳統(tǒng)企業(yè)上市公司(保險(xiǎn))的企業(yè)級(jí)應(yīng)用對(duì)數(shù)據(jù)的完整性和安全性要求***,務(wù)必萬(wàn)無(wú)一失,因此安全性***、功能最齊全的Oracle是傳統(tǒng)軟件的***。一般來說移動(dòng)互聯(lián)網(wǎng)領(lǐng)域的公司對(duì)數(shù)據(jù)的完整性和安全性的敏感程度并不太高,所以互聯(lián)網(wǎng)行業(yè)的從業(yè)者可能有入行幾年還沒見過Oracle的,不過電商、金融類的互聯(lián)網(wǎng)產(chǎn)品對(duì)安全性要求同樣非常高的軟件也應(yīng)該選擇Oracle作為數(shù)據(jù)庫(kù)。
如果公司是非移動(dòng)互聯(lián)網(wǎng)行業(yè)的外企,那么一定要選擇Orcale,一來是洋老板普遍財(cái)大氣粗,二來是外企領(lǐng)導(dǎo)不像國(guó)內(nèi)領(lǐng)導(dǎo)這么依賴對(duì)Windows系統(tǒng)友好的數(shù)據(jù)庫(kù)軟件。
2、按開發(fā)速度和運(yùn)維難度來選擇
一般國(guó)企和事業(yè)單位以及傳統(tǒng)企業(yè)小公司的領(lǐng)導(dǎo)對(duì)軟件(一般情況下只有展示網(wǎng)站,連ERP系統(tǒng)都是買現(xiàn)成的)的要求就是價(jià)格低、快點(diǎn)出結(jié)果;加上國(guó)內(nèi)的傳統(tǒng)的領(lǐng)導(dǎo)對(duì)Windows系統(tǒng)有說不清的迷戀;如此一來選擇SQL Server能同時(shí)滿足這三個(gè)要求,不過一般在這樣的單位不會(huì)存在DBA這個(gè)崗位——讓開發(fā)網(wǎng)站的程序員擔(dān)任DBA的一部分職責(zé)(其實(shí)也就只有備份、恢復(fù)、作業(yè)管理等幾樣)。
3、按價(jià)格和速度因素來選擇
移動(dòng)互聯(lián)網(wǎng)時(shí)代的創(chuàng)業(yè)公司并不需要太糾結(jié)數(shù)據(jù)的萬(wàn)無(wú)一失,但很在意成本,并且對(duì)數(shù)據(jù)訪問速度要求很高。因此資金不太充裕、為了給移動(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是開源的,同時(shí)追求速度快和數(shù)據(jù)安全的公司(移動(dòng)互聯(lián)網(wǎng)領(lǐng)域的電商、金融公司)在資金充裕可以專人負(fù)責(zé)寫一個(gè)自己的MySQL系統(tǒng),滿足系統(tǒng)的高可用和、高并發(fā)、高可擴(kuò)的需求。
盡管MySQL的安全性一直為人所詬病,但經(jīng)過多年改良,安全性已經(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)化只不過是細(xì)枝末節(jié),別人的配置方式也很容易從網(wǎng)上查到。
SQLite是Android系統(tǒng)上運(yùn)行的數(shù)據(jù)庫(kù)軟件,性能與三大數(shù)據(jù)庫(kù)軟件不可同日而語(yǔ),況且在Java語(yǔ)言的IDE里編寫SQL還沒有自動(dòng)提示,有時(shí)候Android程序員對(duì)SQL語(yǔ)句優(yōu)化的要求比DBA還高,在SQL上吃過不少虧的我總結(jié)了一些SQL語(yǔ)句優(yōu)化方案,在此拋磚引玉,并非外行指導(dǎo)內(nèi)行:
(1)在FROM語(yǔ)句中包含多個(gè)表的情況下,把條目最少的表放在前面。比如表一記錄某省人口數(shù)據(jù),表二記錄全國(guó)失學(xué)兒童數(shù)據(jù),那么查詢某省的失學(xué)兒童應(yīng)該把表二放在前面。
(2)在WHERE語(yǔ)句中過濾掉最多數(shù)據(jù)的條件必須卸載前面。列如把性別寫在生肖前面的效率是生肖寫在性別前面的6倍。
(3)避免使用 SELECT * 因?yàn)檫@樣會(huì)查找所有的列名,耗費(fèi)更多的時(shí)間。
(4)在SQL語(yǔ)句的WHERE和JOIN部分中用到的所有字段上,應(yīng)該加上索引。
(5)移除不必要的表,可以減少很多數(shù)據(jù)庫(kù)的流程。
(6)盡管SQL是大小寫不敏感的語(yǔ)言,規(guī)范的SQL語(yǔ)句務(wù)必大寫。
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á)不到線上要求的多用戶、高并發(fā)等壓力,僅在課堂上和自學(xué)是不能成為一個(gè)合格的DBA的,合格的DBA必須在企業(yè)中的實(shí)戰(zhàn)中走出來。一個(gè)合格的DBA必須掌握Linux基本命令和操作、數(shù)據(jù)庫(kù)備份和恢復(fù)、SQL優(yōu)化、數(shù)據(jù)庫(kù)性能優(yōu)化和至少一門腳本語(yǔ)言(如Python)。
移動(dòng)互聯(lián)網(wǎng)時(shí)代雨后春筍般誕生的創(chuàng)業(yè)公司給人一種DBA的角色性變?nèi)醯腻e(cuò)覺,其實(shí)任何IT公司做大后都離不開DBA這個(gè)崗位。DBA的發(fā)展前景一直很不錯(cuò),尤其在大數(shù)據(jù)的時(shí)代里,原本就一直存在的性能問題和安全問題會(huì)更加突出,這意味著企業(yè)對(duì)DBA人才的需求會(huì)越來越旺盛,同時(shí)這也意味著DBA會(huì)面臨比以往更多樣化的困難和更嚴(yán)峻的挑戰(zhàn)。加上近年來的大規(guī)模集群和自動(dòng)化運(yùn)維,很多以前手工維護(hù)的工作現(xiàn)在都可以通過一系列自動(dòng)工具來完成,盡管讓只會(huì)增刪改查的DBA看到了自己的可替代性,但也給對(duì)技術(shù)精益求精的DBA節(jié)約出了鉆研新技術(shù)和新知識(shí)的時(shí)間,使他們更加專注于解決所***的困難。
大數(shù)據(jù)時(shí)代是一個(gè)以數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代,數(shù)據(jù)就是企業(yè)的生命,掌握公司命脈的DBA的崗位越來越重要,作用也越來越顯著,待遇也越來越豐厚,發(fā)展前景也越來越明朗。
【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文作者和出處為51CTO.com】