最近刷爆朋友圈的一张图,广大 DBA 玩的不亦乐乎。删库与跑路,一时成为业内的热门话题,并由此派生出很多“创意删”,“经典跑“等。
删库容易跑路难,一个没有删过库的 DBA 的人生是不***的,然而当删库成为 DBA 体验刺激甚至报复的工具,此时插翅也难逃法网恢恢。
所以不论是作为数据库的守护者 DBA,还是其他的运维人员,一定要遵循职业道德不断加强自我修养。→从小公司,一路跌跌撞撞到腾讯,论高级DBA的自我修养!
作为广大 DBA 的一员,我们扮演神圣的角色,我们希望做用户最忠实的后盾,在任何疑难问题和故障面前,能够骄傲地说,有我在!
大数据时代是一个以数据驱动决策的时代,数据就是企业的生命,DBA 是一个高危的行业,接触并保护企业最核心的数据资产,作为大数据时代的 DBA,如何防止自己被淘汰?
一句话对比三大数据库软件
这个世界上 Oracle、SQL Server 和 MySQL 三大数据库软件呈三足鼎立之势,三者之间互有优缺点。
我把三者的优缺点对比总结成了三行文字:
Oracle:最贵,功能最多,支持平台数量较多,速度中等,开发和运维比较简便,最安全。
SQL Server:价格适中,功能比较丰富,支持平台单一,速度最慢,开发和运维最简便,比较安全。
MySQL:价格***廉,功能少但可自由添加,支持平台最多,速度最快,开发和运维繁琐但可简化,比较安全。
DBA 选择数据库的方法
01.按性能和安全性来选择
大型国企(银行)、传统企业上市公司(保险)的企业级应用对数据的完整性和安全性要求***,务必万无一失,因此安全性***、功能最齐全的 Oracle 是传统软件的***。
一般来说,移动互联网领域的公司对数据的完整性和安全性的敏感程度并不太高,所以互联网行业的从业者可能有入行几年还没见过 Oracle 的。
不过,电商、金融类的互联网产品对安全性要求同样非常高的软件也应该选择 Oracle 作为数据库。
如果公司是非移动互联网行业的外企,那么一定要选择 Orcale,一来是洋老板普遍财大气粗,二来是外企领导不像国内领导这么依赖对 Windows 系统友好的数据库软件。
02.按开发速度和运维难度来选择
一般国企和事业单位以及传统企业小公司的领导对软件(一般情况下只有展示网站,连 ERP 系统都是买现成的)的要求就是价格低、快点出结果;加上国内的传统的领导对 Windows 系统有说不清的迷恋。
如此一来选择 SQL Server 能同时满足这三个要求,不过一般在这样的单位不会存在 DBA 这个岗位——让开发网站的程序员担任 DBA 的一部分职责(其实也就只有备份、恢复、作业管理等几样)。
03.按价格和速度因素来选择
移动互联网时代的创业公司并不需要太纠结数据的万无一失,但很在意成本,并且对数据访问速度要求很高。
因此资金不太充裕、为了给移动端提供 API 的服务器选择 MySQL 是最明智的。
事实上在互联网领域 MySQL 的市场占有率是***的,绝大多数移动互联网公司都用 MySQL 作为数据库。
Oracle 和 SQL Server 都是具备完善功能的数据库生态系统,而 MySQL 仅是一个速度快、兼容性好的关系型数据库软件。
但好在 MySQL 是开源的,同时追求速度快和数据安全的公司(移动互联网领域的电商、金融公司)在资金充裕的情况下,可以专人负责写一个自己的 MySQL 系统,满足系统的高可用和高并发、高扩展的需求。
尽管 MySQL 的安全性一直为人所诟病,但经过多年改良,它的安全性已经超越了 SQL Server。
DBA 如何优化 SQL
一个合格的 DBA 会明白无论选择 Oracle、MySQL 还是 SQL Server,SQL 语句的优化都是数据库优化的决定性因素,而对数据库工具本身的优化只不过是细枝末节,别人的配置方式也很容易从网上查到。
SQLite 是 Android 系统上运行的数据库软件,性能与三大数据库软件不可同日而语,况且在 Java 语言的 IDE 里编写 SQL 还没有自动提示,有时候 Android 程序员对 SQL 语句优化的要求比 DBA 还高。
在 SQL 上吃过不少亏的我总结了一些 SQL 语句优化方案,在此抛砖引玉,并非外行指导内行:
- 在 FROM 语句中包含多个表的情况下,把条目最少的表放在前面。比如表一记录某省人口数据,表二记录全国失学儿童数据,那么查询某省失学儿童的表二应该放在前面。
- 在 WHERE 语句中过滤掉最多数据的条件必须写在前面。例如把性别写在生肖前面的查找效率是把生肖写在性别前面的 6 倍。
- 避免使用 SELECT *。因为这样会查找所有的列名,耗费更多的时间。
- 在 SQL 语句的 WHERE 和 JOIN 部分中用到的所有字段上,应该加上索引。
- 移除不必要的表,可以减少很多数据库的流程。
- 尽管 SQL 是大小写不敏感的语言,规范的 SQL 语句务必大写。
DBA 在大数据时代的发展前景
成为一个 DBA 表面上“仅”需要 SQL 语言和数据库基础管理的知识,所以造成了从业者的水平良莠不齐。
举一个极端的例子
我有一个留级两年的同学勉强拿到毕业证后就从事了 DBA,然而理论跟实际相差甚远。
模拟的环境根本达不到线上要求的多用户、高并发等压力,仅靠在课堂上和自学是不能成为一个合格 DBA 的,合格的 DBA 必须从企业中的实战走出来。
一个合格的 DBA 必须掌握 Linux 基本命令和操作、数据库备份和恢复、SQL 优化、数据库性能优化和至少一门脚本语言(如 Python)。
移动互联网时代雨后春笋般诞生的创业公司给人一种 DBA 的角色性变弱的错觉,其实任何 IT 公司做大后都离不开 DBA 这个岗位。
大数据时代是一个以数据驱动决策的时代,数据就是企业的生命,掌握公司命脉的 DBA 的岗位越来越重要,作用也越来越显著,待遇也越来越丰厚,发展前景也越来越明朗。
尤其在大数据的时代里,原本就一直存在的性能问题和安全问题会更加突出,这意味着企业对 DBA 人才的需求会越来越旺盛,同时这也意味着 DBA 会面临比以往更多样化的困难和更严峻的挑战。
加上近年来的大规模集群和自动化运维,很多以前手工维护的工作现在都可以通过一系列自动工具来完成。
尽管让只会增删改查的 DBA 看到了自己的可替代性,但也给对技术精益求精的 DBA 节约出了钻研新技术和新知识的时间,使他们更加专注于解决***的困难。
本文来自 51CTO开发者社群原创文章,转载请联系授权。如果你也愿意分享你的故事,请加 51CTO 开发者 QQ 交流群 312724475 联系群主小官,期待你精彩的故事!
玖哥
Android 高级工程师
毕业于合肥工业大学软件工程系,擅长 Android 开发,亦了解前端、后端等技术。知识面广,且热爱文学和历史,被誉为“Android 工程师中段子编得***的,段子手中Android玩得最 6 的”