走进DBA-上篇
2022-02-16 00:24:10 4 举报
AI智能生成
走进DBA-上篇
作者其他创作
大纲/内容
初识数据库:数据库的前世今生
基本概念
什么是数据?
我们先来看看一些基本概念,首先是数据,什么是数据呢?简单地说,数据是所考虑的任何对象相关的事实。这样的解释很抽象是吧,让我们来举个例子,你的姓名、年龄、身高体重等等就是数据。甚至于,一张照片、文件、pdf文件等等也可以理解为数据。
什么是数据库?
通过刚刚的举例,我们已经知道什么是数据,但这些数据可能是随机的、无序的。那数据库其实就是一个系统的数据集合。它能支持数据的存储和操作。也正因为数据库中的数据是有组织的,数据的管理才变得简单。
什么是DBMS?
接下来,我们再来看一个概念DBMS,DBMS的全称是数据库管理系统。它是一组程序,使用户可以访问数据库、操作数据,并帮助呈现数据。另外它还有助于控制各种用户对数据库的访问。我们现在的常用数据库MySQL、Oracle、SQL Server等等,其实就是DBMS。
这里是几个真实的DBMS应用场景。
* 在线通讯录,它会通过DBMS来存储数据,比如姓名、电话号码、联系地址等等
* 电力服务系统,它会使用DBMS来管理账单、故障事件、客户投诉等数据
* 社交软件,它需要存储、操作并呈现与朋友相关的数据,这些都需要通过DBMS来实现
* 在线通讯录,它会通过DBMS来存储数据,比如姓名、电话号码、联系地址等等
* 电力服务系统,它会使用DBMS来管理账单、故障事件、客户投诉等数据
* 社交软件,它需要存储、操作并呈现与朋友相关的数据,这些都需要通过DBMS来实现
现代数据库开端
那接下来我们来看看现代数据库的开端
现代数据库的开端,应该说是以一篇论文的发表为标志的。1970年,在IBM位于硅谷的研发中心,有一位研究员叫EF Codd,他当时发表了一篇论文,大型共享数据库的关系模型,这篇论文对关系型数据库产生非常深远的影响,后来EF Codd也被大家誉为“关系数据库之父”。
现在我们大规模使用的数据库,或者说基于SQL,基于关系模型的数据库,如Oracle、DB2、SQL Server、MySQL、PostgreSQL,其实都是以这篇论文为开端的。
现代数据库的开端,应该说是以一篇论文的发表为标志的。1970年,在IBM位于硅谷的研发中心,有一位研究员叫EF Codd,他当时发表了一篇论文,大型共享数据库的关系模型,这篇论文对关系型数据库产生非常深远的影响,后来EF Codd也被大家誉为“关系数据库之父”。
现在我们大规模使用的数据库,或者说基于SQL,基于关系模型的数据库,如Oracle、DB2、SQL Server、MySQL、PostgreSQL,其实都是以这篇论文为开端的。
然后分享个八卦吧,据说当时Oracle的老板拉里读完这篇论文后,觉得这篇论文相当震撼,他觉得数据库就是这样子的,于是一拍脑袋,创立了一家叫Oracle的公司。当然这只是一个八卦哈,也无从考证,大家当做一个野史听听就好了。
然后大家有兴趣的话,也可以搜索下这篇论文,学习一下,也膜拜一下……
然后大家有兴趣的话,也可以搜索下这篇论文,学习一下,也膜拜一下……
数据库发展时间轴
OK,我们再来看看数据库这几十年来的大事记
从1970年论文发表,这是一个开端。然后1977年,Oracle公司成立。其实从整个70年代到90年代,数据库软件市场,基本上被几个传统巨头公司所垄断,像IBM、Oracle,那在当时呢,数据库是一个很小众的领域。基本上需要用到数据库的场景,也就是大型的金融机构、研发中心需要用到数据库。其实这也间接说明,在整个70年代到90年代,数据库的发展相对要缓慢一些……
从1970年论文发表,这是一个开端。然后1977年,Oracle公司成立。其实从整个70年代到90年代,数据库软件市场,基本上被几个传统巨头公司所垄断,像IBM、Oracle,那在当时呢,数据库是一个很小众的领域。基本上需要用到数据库的场景,也就是大型的金融机构、研发中心需要用到数据库。其实这也间接说明,在整个70年代到90年代,数据库的发展相对要缓慢一些……
那一直到90年代中期,当时在美国,随着互联网的快速兴起,也带动了数据库的快速发展。举个例子,比如我要创建一个小网站,如果使用商业数据库的话,还得付一大笔数据库软件的费用,个人或者一些小的互联网公司,估计根本承担不起这样一笔费用。然后当时IT领域的开源社区也在兴起,那有强烈的需求,也有强大的开源力量,所以在互联网时代、在开源时代,就自然而然地出现了一些开源的关系型数据库软件。比如,95、96年,两大最著名的开源关系型数据库,MySQL和PostgreSQL相继发布……
然后从90年代中期,开源的关系型数据库出现之后,一直到2001年左右,正好是互联网泡沫期间,大量的网站和大量的互联网公司涌现,当时也是MySQL和PostgreSQL高速发展的年代……
然后一直到2006年左右,移动互联网开始出现,数据量和用户量爆发式地增长,大家发现传统的单机版的关系型数据库,已经开始力不从心了,以前是一个网站,加上一个数据库就够了,因为那个年代数据量、并发量不大。但现在数据量和用户量越来越大,需求也越来越复杂,在这样的背景下,数据库衍生出来一些分支,比如2003年的内存数据库Memcached,第一个版本发布。它的特点是把数据都放到内存,来可以实现高速计算。虽然现在都在用redis,但在内存数据库这个领域,Memcached是第一个有重大影响的内存数据库。
然后在06/07年吧,有两个标志性的事件,可能称得上是大数据和NoSQL的元年吧。Google和Amazon发表了两篇关于分布式数据库的论文,一个是BigTable,一个Dynamo,这两篇论文也成为后续一大批NoSQL数据库的设计的鼻祖。
然后在06年之后,整个数据库行业的发展进入了一个快车道,涌现了一批新的数据库,比较有代表性的有,TeraData,2007
Cassandra,2008
Redis,2009
MySQL InnoDB,2010
Cassandra,2008
Redis,2009
MySQL InnoDB,2010
然后到了2013年,Google发表了一篇叫Spaner论文,这篇论文描述了关系型和NoSQL数据库的结合,也就是NewSQL数据库。其实也很有意思,从最早的关系型SQL,到后来的NoSQL,NoSQL是使用key-value键值对的模型,它完全放弃了关系型模型,NoSQL大概蓬勃发展了十几年,一度大家认为会替代SQL,那随着业务场景越来越极端吧,大家发现一些复杂的场景使用NoSQL是搞不定的,因为NoSQL大部分都不支持事务,键值对这种模型也相对简单,特别是在一些金融领域,没办法,还是要回归SQL,现在两者又结合起来形成新型的数据库NewSQL。
这几年涌现出来的数据库,比如TiDB、Aurora,都是这种新型数据库的代表。
那从整体来看,数据库的发展是越来越快,日新月异,以前是10年20年产生一个里程碑,现在是每隔几年就能产生一个里程碑。
OK,那这一小节我们介绍了数据库的前世今生,帮助大家了解到数据库的基本概念、现代数据库的起源,以及数据库的一个时间轴。后续章节还有更精彩的内容,请继续关注……
那从整体来看,数据库的发展是越来越快,日新月异,以前是10年20年产生一个里程碑,现在是每隔几年就能产生一个里程碑。
OK,那这一小节我们介绍了数据库的前世今生,帮助大家了解到数据库的基本概念、现代数据库的起源,以及数据库的一个时间轴。后续章节还有更精彩的内容,请继续关注……
初识DBA:何为DBA
何为DBA
DBA 是数据库管理员(Database Administrator)的简称,是从事管理和维护数据库管理系统(DBMS)相关工作的统称。
在中大型企业中会设置专门的DBA工程师岗位,针对数据库运维和数据库开发,还会专门设置运维DBA工程师和开发DBA工程师岗位
* 运维DBA的主要职责是运维和管理数据库管理系统(DBMS),侧重于运维管理
* 开发DBA主要侧重数据库系统的设计和开发工作
* 运维DBA的主要职责是运维和管理数据库管理系统(DBMS),侧重于运维管理
* 开发DBA主要侧重数据库系统的设计和开发工作
DBA的核心目标,主要是保证生产环境数据库的稳定性、安全性和高性能,保证数据库服务7*24小时的稳定高效运转。
DBA的主要职责
1. 数据库安装部署:如单机、集群、分片等等
2. 数据库升级:如从低版本到高版本的升级,跨平台的数据库迁移
3. 业务系统数据库设计,包括表、字段、索引等,对于我们业务系统能否高效运行至关重要
4. 数据库监控:如监控数据库的会话情况、碎片、QPS\TPS、锁、空间使用情况,通过各类监控让你对自身维护的数据库了如指掌
5. 数据库空间规划:根据天、月、年度数据占用情况来制订未来的存储需求计划
6. 数据库备份与恢复:备份对于一个企业和DBA来说至关重要,对于数据库的备份策略要根据实际要求来做相应的调整,且要对日常备份情况进行监控,定期的对数据库的备份进行恢复来验证数据库备份的可用性
7. 数据库高可用架构设计:涉及到的知识面和接触面会比较广,以开源MySQL数据库为例,从高可用上讲目前市面上使用比较多的有MHA、PXC集群(Percona Server公司)、GariaDB集群(MariaDB公司)、MGR(MySQL Group Replication,由MySQL官方从5.7.17推出组复制),MGR是官方主推的高可用架构,也是未来高可用架构的趋势
8. 数据库用户密码和权限的管理/数据库安全:规范业务用户权限管理,防止业务用户权限过大对生产数据库进行不规范操作,导致线上生产故障和业务数据被窃取
9. SQL审核:开发需要在生产数据库进行DDL或DML时,一定要经过流程通过DBA的审核,对写的不理想的SQL一定要杜绝在生产执行,需要DBA制订与公司相关联的数据库开发规范,要求开发工程师严格遵守规范来规避线上数据库故障。关于SQL审核,现在也非常流行通过自动化运维平台来进行SQL的管控
为什么需要DBA
我见过没有专业DBA的IT团队:有些领导觉得公司创立初期没必要设立DBA岗位,一般都由开发进行兼职,而开发缺乏DBA的专业维护能力,对线上数据库缺乏维护管理经验,一般只要数据库不出问题就会对它不管不问,随便使用甚至滥用,导致当公司数据量和业务突然增长时,就会出现数据库时不时卡顿,甚至宕机情况;还有因缺乏专业DBA对于权限的合理管控,生产用户权限滥用,开发人员可以随便修改数据和导出数据,导致线上数据经常错乱,或因重要客户资料数据流失导致公司蒙受重大损失的情况。
另外,没有专业DBA对业务系统表结构进行设计,而开发人员水平高低不一,有些经验不够的开发人员设计出来的表结构和开发的代码会非常的糟糕,上线初期因数据量不大不会出现什么性能问题,但在数据量增长到一定量或业务突然有爆发式的增长时,数据库可能就直接到了崩溃的边缘导致业务系统不可用,造成用户流失和资金损失;
从监控角度来看,一般很多公司的系统和数据库都有监控,但是只监控如端口、进程是否存在,因缺乏对数据库的深度认知,对线上数据库更为深度的监控就没有添加,无法对数据库性能发展趋势有良好的监控,也导致数据库因日积月累的问题直接导致崩溃。
从上述简要的几点,我们可以感觉到,专业的DBA对一个公司是多么的重要 !
0 条评论
下一页