我我的認爲是:要java
如今python在運維數據庫的工做中主要用在python
一、編寫一些運維腳本mysql
二、編寫運維管理平臺web
三、研究互聯網大廠的運維腳本/工具並應有sql
特別是運維開源數據庫的時候,第三點特別重要,例如MongoDB的zabbix監控數據庫腳本就是用老外用python寫的,若是要改一下里面的指標mongodb
確定要用到pythondocker
一些互聯網大廠開源的數據庫腳本和工具,例如mysql相關工具,基本都是用python寫的,這些工具/輪子咱們確定會用到shell
因此python是如此重要,固然用shell也能夠完成第一點,若是強硬用python來寫也只是用python來調用一下某些shell命令數據庫
可是,既然要學python,用python,作一個pythoner,那麼最好全部工做都用python,有些人不這麼認爲,某些任務,shell能夠作的python作不了django
python必定要調用shell命令來作,這個是的,既然是調用shell命令爲什麼不直接用shell
可是我我的以爲shell有個最大的缺點:格式化
shell幾乎是沒有格式的,只有簡單的縮進,也沒有專用的shell編輯器,那麼,當你寫了幾百行代碼的時候,若是沒有很好的縮進習慣,那麼review你的shell腳本
的那我的簡直就是災難,也因爲沒有專用的shell編輯器,編寫shell的時候很容易出錯,也很差調試
用python就沒有這些問題,python能夠用pycharm(本人以爲除了pycharm其餘工具都不行)或者其餘工具,python有嚴格的格式化,編輯器也很是強大
pdb,ipdb,print調試手段手到擒來
我記得以前有個招S銀行技術部的招聘信息,其中有一條
必須會寫shell,而且有寫過單個腳本超過10000行shell代碼的經驗
當時以爲這個要求很是蛋疼,能在單個腳本寫超過10000行shell代碼的多是高人也多是SB,反正以爲招S銀行的技術也好不到哪裏好
據我所知,他們的mysql運維也是外包給某數據庫服務公司,反正大部分都是外包,核心技術應該比較通常
不過,用python不是說徹底不用學shell,畢竟python也是要調用shell命令的,不會shell你怎麼知道怎麼調用shell命令去完成某些任務
只不過不須要學習shell的流程控制語句之類的複雜語法已而
最後,還有一個語言,go語言
go做爲互聯網界的C/C++,雖然發展歷史不長,可是最近幾年確實比較火,go雖然是靜態語言,也是帶GC功能的
由於須要GC,因此go語言不適合作
一、系統編程:系統編程依然是C/C++作主導,因爲GC的關係,性能比不上C/C++
二、大數據:依然是JAVA的天下,當時hadoop誕生的時候,go語言還沒出生,因此大數據領域仍是沒法取代JAVA
三、電商:依然是JAVA的天下,JAVA有最成熟的解決方案,阿里巴巴的業務大量使用JAVA就是一個例子
go語言適合作
一、雲計算:在雲計算領域,go語言沒有對手,go語言通常用於非cpu密集型業務,cdn,對象存儲,docker,consul,k8s
其實性能上,go語言應該是比JAVA遜色很多,發展歷史沒有JAVA長,GC功能沒有JAVA的完善
至於在運維領域,其實go語言的性能比python是要強,畢竟是靜態語言,並且能夠利用多核優點,沒有python的GIL鎖問題
可是在運維領域,更注重的是運維生態,而不是性能,咱們開發的運維工具和運管平臺其實都不須要很高性能
若是沒有運維生態支持,運維將會很是難作,例如,如今每種數據庫基本都有python驅動(mongodb,DB2,oracle,mssql,mysql,pgsql,sqlite等等),
spark編寫做業也能夠用python來編寫,openstack原本用python來開發,有很完善的python API,kvm管理也有很完善的python API,
Linux內置python,Windows安裝python也比較簡單
python有相應的庫能夠編寫Windows服務,國內公有云廠商基本都有python API等等,幾乎每種工具、系統、軟件都支持python
而這種運維生態,go語言是沒有的,緣由是go語言是2009年誕生,到如今才10年時間,而python到如今已經有30年曆史
因此python纔會有這種運維生態,因此纔會有每種工具、系統、軟件都支持python
例如,DB2數據庫就沒有go語言的驅動,mssql對go語言不支持bulk insert語法等等
並且目前互聯網大廠用go語言來寫的開源數據庫運維工具和腳本很是少
固然,若是對python有幾年經驗而且很紮實了,那麼能夠用空餘時間學學go語言
還有一個提醒:據我所知,go語言最流行的web框架beego問題比較多,沒有python的django框架那麼完善
若是要用go語言來開發運維管理平臺,要注意這個坑
最後總結一句:對於運維或DB運維,我的以爲真沒有必要學go語言,畢竟go語言是靜態語言,門檻相對比較高,並且go語言沒有運維生態
固然,若是公司業務的技術棧統一,好比都用java+MySQL+Linux,那麼用go語言來作運維的工做也沒嘗不可,本人就有個朋友在惟品會作運維主管
運維的機器至少幾千臺,統一用go語言做爲運維工做的第一語言,從性能上來講,確實go語言是第一選擇
目前本人負責運維:MongoDB,MSSQL,MySQL,PGSQL
用到的語言有:JavaScript,SQL,Python,Windows的批處理,bash shell
若有不對的地方,歡迎你們拍磚o(∩_∩)o
本文版權歸做者全部,未經做者贊成不得轉載。