文章目录
1.1 数据库背景知识
- 数据+库:将信息(数据)按照计算机可识别的方式规则存放在磁盘库中,并提供一系列可供读写的方式
- 相比较于磁盘文件,数据库最大的特点是提供了非常灵活的接口、方式可以获取完整数据或者特定部分数据的方式(SQL);并提供了一套完整管理数据的方法(存储结构,备份恢复等)
- 为什么要存储数据?
– 数据要被随时随地反复使用,不是一次性消耗品
– 数据要被记录,防止遗忘
– 数据要被记录,防止遗忘
1.1.1 数据库背景知识
试想一个学校的选课系统,其实就是程序与后台数据库之间的数据交互。后台数据库负责记录每个课程信息,学生信息,学生与课程的对应关系等。
- 学生登录自己的账号:程序提取后台数据库中登录学生对应学号的所有信息,并按照一定的格式展示到电脑上
- 学生选定课程:程序将电脑上的学生添加的信息按照一定的格式记录到数据库中的课程
1.1.2 数据库在企业中的使用
- 企业无论大小,其日常经营活动都会涉及到数据存储,尤其是互联网公司,都会选择数据库作为存储数据的重要甚至唯一渠道,这些数据涵盖方方面面:
- 客户数据
- 员工数据
- 财务数据
- 交易数据
- 物流数据
- 运营数据
- 等等
1.1.3 数据库发展历史
- 1964年,美国通用电气开发出第一套数据库系统
- 1970年,提出关系型数据库模型
- 1974年,辩论及研讨,确立关系数据库为现代数据库产品的主流
- 1974年,第一次提出SQL(Structured Query Language)概念
- 1986年,SQL正式成为关系型数据库的标准语言,简称SQL-86标准
- SQL语言陆续经历了SQL-89标准和SQL-92标准,以及目前的SQL3标准
- 互联网web2.0时代之后,非关系型数据库陆续火热起来
1.1.4 常见的数据库类型
-
关系型数据库类型
- 目前市场上占主要份额的数据库类型,以二维表格(行和列,类似excel)来存储数据,表格与表格之间的数据关系用字段引用来表示
- Oracle, SQL Server, MySQL, DB2等
-
非关系型数据库类型
- 出现时间较短,抛弃关系型死板的数据存储方式,提供了更加灵活的方式
- 面向高性能并发读写的key-value数据库:
key-value数据库的主要特点即使具有极高的并发读写性能,Redis,Tokyo Cabinet,Flare就是这类的代表 - 面向海量数据访问的文档型数据库:
这类数据库的特点是,可以在海量的数据中快速的查询数据,典型代表为MongoDB以及CouchDB - 面向可扩展性的分布式数据库:
这类数据库想解决的问题就是传统数据库存在可扩展性上的缺陷,典型代表为Cassandra等
1.1.5 数据库类型在企业中的选择
- 常用数据会存放在关系型数据库中
- 逐步考虑使用非关系型数据库作为部分业务的支持
- 但,关系型数据库还是主流
1.1.6 MySQL数据库介绍
- MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言–结构化查询语言(SQL)进行数据库管理。
- MySQL的历史最早可以追溯到1979年,那时Oracle也才刚刚开始,微软的SQL Server影子都没有。
- 在2008年1月16号 MySQL被Sun公司收购。
- 2009年,SUN又被Oracle收购
- 体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,使得许多企业选择了MySQL作为数据库
1.1.7 数据库工程师在一般企业中的职责
-
数据库开发工程师
a. 负责公司业务数据库系统的模型设计,表结构设计
b. 负责数据处理中的语句实现,存储过程逻辑实现
c. 负责指导开发人员对语句的性能优化和指导 -
数据库管理员(database administrator、DBA)
a. 负责公司业务数据库系统的部署实现
b. 负责数据库系统的高可用性,备份恢复,性能调忧,监控等实现 -
数据库架构师
a. 统筹公司业务数据库系统各个层面的技术实现
b. 指导数据库开发工程师和管理员在各个环节的工作,提供更优的方案
1.1.8 数据库工程师在企业中的定位
-
从职能角度
- 数据俨然已经成为所有企业的重要资产,互联网企业更是将数据作为自己的生命线,试想一下百度搜索没有后台数据、阿里淘宝没有店铺和商品数据会怎样。一个优秀的数据库工程师通常掌握着企业的核心价值,保障数据服务持续正常运转,所以在公司地位相对比较高。责任越大,地位越高,薪资越高
- 高速社会要求高速的系统,现在的系统性能瓶颈已经不是传统的硬件瓶颈,而是后台程序和数据处理的瓶颈,优秀的数据库工程师往往能解决其性能问题,从而是系统运转性能提升几十倍甚至百倍
-
从竞争角度
- 通常数据库工程师在企业中的人数相比其他技术工程师相对较少(1:10或更高),“物以稀为贵”,而且通常薪资高低是由你在公司是否可被替代所决定,同工种下人数较少意味着不可替代
1.1.9 数据库工程师的薪资情况分析
(一) 数据库工程师的薪资对比
- 薪水较高于其它行业(前提是内容学会且有经验,去公司能解决问题)
(二) 数据库工程师职业的优劣势
- 优势:
- “不吃青春饭,越老越吃香”:更加看重工作经验,生命周期长
- 公司地位相对较高,领导比较看重,薪资也相对较高
- 劣势:
- 和运维体系有交叉,所以会比较辛苦,需要随时待命,防止数据库出问题
- 同一个公司数据库岗位人数较少,会比较孤独
1.1.10 通用数据库对象中英文介绍
- 数据data
- 指对客观事件进行记录并可以鉴别的符号,在计算机系统中存储为可以被识别的信息
- 数据库database
- 存放具体数据的最大的逻辑对象,通常按需求将同一项目所属的数据统一放在一个数据库中,也可以创建多个数据库
- 数据库管理系统dbms(database management system)
- 是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS,目前分为关系型和非关系型数据库管理系统两种
- 关系型数据库管理系统rdbms(relational dbms)
- 是以关系模型为基础建立的数据库管理软件,典型代表为Oracle, MySQL, SQL Server等
- 实例instance
- 数据库管理软件安装之后在服务器上启动起来就称为启动了一个实例,通常一个服务器上只启动一个数据库实例,但也有启动多个实例的,一个实例可以包含多个数据库
- 数据库对象database object
- 数据库中创建的用来存储,操作数据的对象,比如表,字段,索引,存储过程等
- 表table
– 数据库对象中的一种,用来存储相同属性的数据,类似Excel表格的sheet - 字段field,列column,属性attribute
– 表中数据的组成部分,类似Excel表格中的列 - 类型type
– 每个字段属性之一,代表该字段下的所有数据以什么形式呈现,比如整数、字符串等类型 - 键值key
– 数据表的一个属性,可以指定主键,外键 - 索引index
– 在数据库管理系统中通常为加速数据读取速度而创建的一种数据结构 - 视图view
– 为(字面上)简化部分数据的获取方法而创建的定义 - 存储过程sp(stored procedure)
– 在数据库内部创建的具有一系列数据处理逻辑的方法 - 触发器trigger
– 当数据库表发生修改操作时自动触发某些数据处理的方法
- 数据库服务器database server
– 特指运行数据库实例的物理服务器或者虚拟服务器 - 主键primary key
– 数据表中定义的用来唯一确定表中各行数据的一个或几个字段 - 外键forerign key
– 当数据表中的某一个或几个字段的值来源于某个父表时,则可以创建两个表之间的数据映射关系 - 唯一unique
– Primary key和unique index都可以作为约束表中这一列或几列的数据不重复 - 性能performance
– 调优tuning
- 备份backup
– 将数据库中的所有数据和对象或者指定的数据和对象导出成文件形式存储 - 恢复restore
– 利用之前的备份文件将数据库中的指定对象和库还原到备份文件中的状态 - 用户user
– 指为访问数据库中的数据而创建的权限 - 授权grant
– 授予某个数据库用户某个权限的动作 - 回收revoke
– 将某个数据库用户的某个权限回收的动作 - 权限privilege
- 查询select
– 数据库中浏览数据所提供的方法 - 修改update
– 数据库中修改数据所提供的方法 - 删除delete
– 数据库中删除原有数据所提供的方法 - 添加insert
– 数据库中新增数据所提供的方法 - SQL语句SQL statement
– 对数据库中数据进行操作、管理的一套语法 - 数据库架构database architecture
– 指数据库设计工作中对数据库一个或多个实例的部署,之间的数据协同,高可用性,并发性等特性所做的统一规划