🗺️博客地图
一、数据库
(一)数据库定义
1、概念
数据库(Database)指的是以一定的方式存在一起、能为多个用户共享、具有尽可能小冗余度的特点、与应用程序彼此独立的数据集合。这种数据集合具有的特点:尽可能不重复,以最优方式为某个特定组织的多种应用服务,其数据结构独立于使用它的应用程序,对数据的增、删、改、查由统一软件进行管理和控制。数据库产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。从发展的历史看,数据库是数据管理的高级阶段,它是由文件管理系统发展起来的。
2、文件系统管理数据库存在的问题
> 数据冗余性和不一致性
> 数据访问困难
> 数据相对独立
> 完整性和原子性问题
> 并发访问异常
> 安全性问题
(二)数据库特点
> 实现数据共享
> 减少数据的冗余度
> 数据实现集中控制
> 数据的一致性
> 故障恢复
(三)数据库分类
1、关系型数据库
大型:
Oracle 收费 国外
DB2 收费 国外
SQLserver 收费 国外
达梦数据库 收费 国内
中型:
MySQL 收费/开源 国外
MariaDB 开源 国外
2、非关系型数据库
大型:
Redis 收费/开源 国外
(四)数据库模型
1、层次模型:
按照层次结构的形式组织数据库数据的模型
缺点:拥有大量的冗余数据 (IMS)
2、网状模型:
按照网状结构的形式组织数据库数据的模型
缺点:后期维护困难 (DBTG)
3、关系模型(RDBMS:Relational Database Management System)
按照数据关系的形式组织数据库数据的模型
DBMS(Database Management System):数据库管理系统
4、E-R 模型
实体( Entities )
属性( Attributes )
关系( Relationships )
E-R 图
E-R 图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。
它是描述现实世界关系概念模型的有效方法。是表示概念关系模型的一种方式。用“矩形框”表示实体型,矩形框内写明实体名称;用“椭圆图框”或圆角矩形表示实体的属性,并用“实心线段”将其与相应关系的“实体型”连接起来;
用”菱形框“表示实体型之间的联系成因,在菱形框内写明联系名,并用”实心线段“分别与有关实体型连接起来,同时在”实心线段“旁标上联系的类型(1:1,1:n或m:n)。
二、SQL语句
(一)SQL定义
结构化查询语言 ( Structured Query Language ) 简称 SQL,结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;最早诞生于 IBM SYSTEM R 操作系统之上。
(二)SQL类型
DQL:数据查询语言,用于从数据库中检索数据,主要使用SELECT语句,包括条件筛选、排序和聚合等操作。 < select >
DML:数据操作语言,操作数据库中数据的命令,用于对数据库的表中的数据进行增删改的操作,包括INSERT、UPDATE、DELETE语句。 < select insert update delete >
DDL:数据库描述语言,用于定义数据库结构和对象,如创建、修改、删除数据库、表、列索引等,建立数据库、定义数据关系,包括CREATE、DROP、ALTER语句。 < create drop >
DCL:数据库控制语言,用于控制用户对于数据库中数据的访问权限,包括授权GRANT、撤销权限REVOKE等。 < grant >
TCL:事务控制语言,用于控制数据库中的事务操作,如BEGIN TRANSACTION、COMMIT、ROLLBACK等。< begin transaction commit rollback >
三、关系型数据库存储结构
(一)关系型数据库存储逻辑关系
1、文件的逻辑关系
上层:逻辑方式保存的文件
底层:数据块的方式以二进制的形式存储在硬盘
中间层:文件系统
2、数据库逻辑关系
上层:数据表
底层:逻辑方式保存的文件
中间层:存储引擎
存储引擎:存储数据、建立索引以及更新和查询数据等技术的实现方法
(二)关系型数据库MySQL存储引擎
1、MyISAM
MySQL 默认存储引擎,诞生即存在,插入和查询数据较快。不支持事务、行级锁以及外键约束等功能。
锁:行级锁( InnoDB )、表级锁( MyISAM )、页级锁( DBD )
约束:域约束、外键约束
2、InnoDB
MYSQL在2008年被oracle收购后,从5.5版本开始采用此存储引擎。支持事务、行级锁以及外键约束等功能,相对于 MyISAM 更快。
3、MEMORY
运行在内存中,使用 hash 索引,数据存取速度非常快。但是数据不能持久化,适用于缓存。
(三)数据库的管理器系统
1、存储管理器
通过数据描述语言( DDL )来创建表的结构,在通过数据操作语言( DML )来保存 SQL 语句产生的数据的数据库组件。
① 权限及完整性管理器:用于用户的权限管理
② 事务管理器:保障事务操作
③ 文件管理器:读取底层文件系统,进行文件读取、存储
④ 缓冲区管理器:决定一次性加载多少数据至内存
2、查询管理器
接收用户的查询请求,理解查询请求,并将请求提交给存储管理器的数据库组件
① DDL 和 DML 解释器
② 查询执行引擎
(四)数据库的工作方式
1、MySQL工作方式
单进程多线程的工作模式,每个线程维持一个连接
2、MySQL线程分类
① 守护线程:MySQL 不需要跟用户进行交互
② 应用线程:MySQL 需要跟用户进行交互
四、数据库的优化方案
1、SQL语句方面:
①创建示图
②创建索引关联
2、架构方面
①垂直扩展
优点:不需要更改网络架构
缺点:性能瓶颈(机器的性能到达顶峰或者软件的调用性能达到顶峰)
②水平扩展
优点:能够支撑并发更高
缺点:需要更改网络架构,技术实现要求高
注:垂直扩展和水平扩展并未给集群减压,而是将压力分担。
3、缓存服务器
建立缓存服务器,减少当前服务器的压力
4、线程重用
线程创建出来后,和第一个用户连接,第一个用户使用结束后,该线程通过占用内存资源继续存在,当其他用户访问时,可以直接连接该线程,不用重新创建该线程
优点:降低用户连接数据库的开销
缺点:可能会占用内存
5、分区、分表、读写分离
分库:把不同的数据库放在不同的数据库管理系统之中。
分表:非常难实现,需要区分业务之间的关联,阿里花费8年,才完成分表,可见难度之大。
五、关系型数据库MySQL缺点
MySQL采用 SMP 对称多处理器结构:
如果当前访问量为1,并且该访问者做大量的数据查询,只能调用一个 CPU 进行处理。