1. 程式人生 > >【IT觀察】作為一個DBA,如何選擇資料庫

【IT觀察】作為一個DBA,如何選擇資料庫


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

這個世界上Oracle、SQL Server和MySQL三大資料庫軟體呈三足鼎立之勢,三者之間互有優缺點。網上能查到的內容我不再贅述,我把三者的優缺點對比總結成了三行文字:

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

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

MySQL:價格最低廉,功能最少,支援平臺最多,速度最快,開發和運維最繁瑣,最不安全。



DBA選擇資料庫的方法

1、按效能和安全性來選擇

大型國企(銀行)、傳統企業上市公司(保險)的企業級應用對資料的完整性和安全性要求最高,務必萬無一失,因此安全性最佳、功能最齊全的Oracle是傳統軟體的首選。一般來說移動網際網路領域的公司對資料的完整性和安全性的敏感程度並不太高,所以網際網路行業的從業者可能有入行幾年還沒見過Oracle的,不過電商、金融類的網際網路產品對安全性要求同樣非常高的軟體也應該選擇Oracle作為資料庫。

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

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

一般國企和事業單位以及傳統企業小公司的領導對軟體(一般情況下只有展示網站,連ERP系統都是買現成的)的要求就是價格低、快點出結果;加上國內的傳統的領導對Windows系統有說不清的迷戀;如此一來選擇SQL Server能同時滿足這三個要求,不過一般在這樣的單位不會存在DBA這個崗位——讓開發網站的程式設計師擔任DBA的一部分職責(其實也就只有備份、恢復、作業管理等幾樣)。

3、按價格和速度因素來選擇

移動網際網路時代的創業公司並不需要太糾結資料的萬無一失,但很在意成本,並且對資料訪問速度要求很高。因此資金不太充裕、為了給移動端提供API的伺服器選擇MySQL是最明智的。事實上在網際網路領域MySQL的市場佔有率是最高的,大多數移動網際網路公司都用MySQL作為資料庫。

儘管MySQL不是一個安全的系統,但好在MySQL是開源的,同時追求速度快和資料安全的公司(移動網際網路領域的電商、金融公司)在資金充裕可以專人負責寫一個自己的MySQL系統,據說電商巨頭阿里巴巴的資料庫就是改造過的MySQL。

DBA如何優化SQL

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

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

(1)SQL語句務必大寫

(2)利用索引

(3)減少對錶的查詢

(4)儘量多使用COMMIT,及時釋放資源

(5)刪除重複記錄

(6)避免SELECT *

(7)WHERE語句中過濾掉最多資料的條件放在前面

展望DBA的發展前景

成為一個DBA表面上“僅”需要SQL語言和資料庫基礎管理的知識,所以造成了從業者良莠不齊,舉一個極端的例子,我有一個留級兩年的同學勉強拿到畢業證後就從事了DBA。然而理論跟實際相差甚遠,模擬的環境根本達不到線上要求的多使用者、高併發等壓力,僅在課堂上和自學是不能成為一個合格的DBA的,合格的DBA必須在企業中的實戰中走出來。一個合格的DBA必須掌握Linux基本命令和操作、資料庫備份和恢復、SQL優化、資料庫效能優化和至少一門指令碼語言(如Python)。

移動網際網路時代雨後春筍般誕生的創業公司給人一種DBA的角色性變弱的錯覺,其實任何IT公司做大後都離不開DBA這個崗位。DBA的發展前景一直很不錯,儘管近幾年的大規模叢集和自動化運維讓DBA感到一點危機之外,不過隨著大資料時代的到來,DBA的作用會越來越顯著,DBA的發展前景也會變得越來越明朗。



【首發於51CTO:http://mdsa.51cto.com/art/201708/548960.htm