运维DBA要不要学python

我个人认为是:要

现在python在运维数据库的工作中主要用在

1、编写一些运维脚本

2、编写运维管理平台

3、研究互联网大厂的运维脚本/工具并应有

特别是运维开源数据库的时候,第三点特别重要,例如MongoDB的zabbix监控数据库脚本就是用老外用python写的,如果要改一下里面的指标

肯定要用到python

一些互联网大厂开源的数据库脚本和工具,例如mysql相关工具,基本都是用python写的,这些工具/轮子我们肯定会用到

所以python是如此重要,当然用shell也可以完成第一点,如果强硬用python来写也只是用python来调用一下某些shell命令

但是,既然要学python,用python,做一个pythoner,那么最好所有工作都用python,有些人不这么认为,某些任务,shell可以做的python做不了

python一定要调用shell命令来做,这个是的,既然是调用shell命令为何不直接用shell

但是我个人觉得shell有个最大的缺点:格式化

shell几乎是没有格式的,只有简单的缩进,也没有专用的shell编辑器,那么,当你写了几百行代码的时候,如果没有很好的缩进习惯,那么review你的shell脚本

的那个人简直就是灾难,也由于没有专用的shell编辑器,编写shell的时候很容易出错,也不好调试

用python就没有这些问题,python可以用pycharm(本人觉得除了pycharm其他工具都不行)或者其他工具,python有严格的格式化,编辑器也非常强大

pdb,ipdb,print调试手段手到擒来

我记得之前有个招S银行技术部的招聘信息,其中有一条

当时觉得这个要求非常蛋疼,能在单个脚本写超过10000行shell代码的可能是高人也可能是SB,反正觉得招S银行的技术也好不到哪里好

据我所知,他们的mysql运维也是外包给某数据库服务公司,反正大部分都是外包,核心技术应该比较一般

不过,用python不是说完全不用学shell,毕竟python也是要调用shell命令的,不会shell你怎么知道怎么调用shell命令去完成某些任务

只不过不需要学习shell的流程控制语句之类的复杂语法已而

最后,还有一个语言,go语言

go作为互联网界的C/C++,虽然发展历史不长,但是最近几年确实比较火,go虽然是静态语言,也是带GC功能的

因为需要GC,所以go语言不适合做

1、系统编程:系统编程依然是C/C++做主导,由于GC的关系,性能比不上C/C++

2、大数据:依然是JAVA的天下,当时hadoop诞生的时候,go语言还没出生,所以大数据领域还是无法取代JAVA

3、电商:依然是JAVA的天下,JAVA有最成熟的解决方案,阿里巴巴的业务大量使用JAVA就是一个例子

go语言适合做

1、云计算:在云计算领域,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

本文版权归作者所有,未经作者同意不得转载。

Original: https://www.cnblogs.com/lyhabc/p/10778847.html
Author: 桦仔
Title: 运维DBA要不要学python

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/590815/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • DB审核查询平台Archery–安装部署可能遇到的问题

    Archery是archer的分支项目,定位于SQL审核查询平台,旨在提升DBA的工作效率,支持多数据库的SQL上线和查询,同时支持丰富的MySQL运维功能,所有功能都兼容手机端操…

    数据库 2023年5月24日
    069
  • Flyweight 享元(结构型)

    一:描述:(该模式实际应用较少) Flyweight 享元模式是对大量细粒度的元素进行共享和重用。减少对象的创建减轻内存; 注和单例模式不同的是:享元模式的各个对象佣有各自的行为并…

    数据库 2023年6月11日
    0111
  • 自动补全、回滚!介绍一款可视化 sql 诊断利器

    Yearning简介 ================= Yearning MYSQL 是一个SQL语句审核平台。提供查询审计,SQL审核等多种功能,支持Mysql,可以在一定程度…

    数据库 2023年6月9日
    0126
  • Python 3.10 is coming!

    看看Python 官网的文档 whatsnew,Python 3.10 已然距离我们越来越近了,然我们看看 Python 3.10 相较于 Python 3.9 有哪些改变吧 新特…

    数据库 2023年6月6日
    0103
  • 浅谈事务隔离级别、MVCC及相关特性

    文采不是太好,应该会有地方表达不清楚,烦请指正。 需要事先准备测试表: CREATE TABLE test ( id int(11) NOT NULL, name varchar(…

    数据库 2023年6月16日
    094
  • Golang 接口(interface)

    Go 语言的接口遵守LSP(里氏替换原则),即 一个类型可以自由地被另一个满足相同接口的类型替换。 接口类型具体描述了一系列方法的集合,一个实现了这些方法的具体类型是这个接口类型的…

    数据库 2023年6月16日
    077
  • 《SpringBoot官网文档:2.1.5》

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    数据库 2023年6月14日
    088
  • 二进制方式部署K8S(kubernetes)集群(测试、学习环境)-单主双从

    1. 二进制方式部署(一主多从) 1.1 环境准备 角色 IP 组件 master 10.27.134.250 kube-apiserver、kube-controller-man…

    数据库 2023年6月9日
    080
  • Mysql事件调度实现字段自动刷新

    mysql中事件与触发器,触发器是当mysql运行起来之后因某些设定的语句而触发执行,事件则可自定义一次或者周期性执行的任务,在mysql中有特定的线程来管理它,即”事…

    数据库 2023年5月24日
    091
  • 使用 GitHub 协同开发规范

    记一下项目开发的规范,统一开发规范可以有效提高共同开发效率和代码质量 本文档图片的 winsoullin 理解为团队正式发布的仓库,Nightnessss 理解为个人仓库 Fork…

    数据库 2023年6月9日
    0121
  • 23种设计模式之分类总结

    关于设计模式的学习要告一段落了,学习的这一路上,也收到了不少小伙伴的留言,以及点赞给了我莫大的鼓励,我在这里谢谢大家的鼓励。。。 我会再接再厉,嘿嘿。。。 以上的话虽是真心话,但是…

    数据库 2023年6月6日
    0283
  • XPath和Selenium的使用

    XPath 是一门在 XML 文档中查找信息的语言 /: ——># 从根节点选取: //: ——># 不管位置,直接找 /@属性名 ——># 获取对应属性值 /t…

    数据库 2023年6月9日
    077
  • SpringMvc(四)- 下载,上传,拦截器

    1、图片下载 图片下载:将服务器端的文件以流的形式写到客户端,通过浏览器保存到本地,实现下载; 1.1 图片下载步骤 1.通过session获取上下文对象(session.getS…

    数据库 2023年6月16日
    069
  • [spring]spring和mybatis的整合与事务处理

    1.导包 junit junit 4.13.1 mysql mysql-connector-java 8.0.29 org.mybatis mybatis 3.5.3 org.sp…

    数据库 2023年6月16日
    096
  • 第八章:变量、常量和基础类型

    本篇翻译自《Practical Go Lessons》 Chapter 8: Variables, constants and basic types 1 你将在本章中学到什么? …

    数据库 2023年6月6日
    0132
  • Logback实现按业务输出到对应日志文件

    一、方案 由于需要按业务生成不同的日志文件,看到按业务来区分,我的第一感觉就是业务其实是可以按包名来区分的。所以其实我们只要实现不同的包下面的日志输出到不同的文件,就能实现需求了。…

    数据库 2023年6月6日
    0282
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球