数据库--定义及数据模型
数据库的定义
数据库: 存储数据的仓库,是长期存放在计算机内、有组织、可共享的大量数据的集合。数据库中的数
据按照一定数据模型组织、描述和存储,具有较小的冗余度,较高的独立性和易扩展性,并为各种用户
共享,即数据库包含两层含义:保管数据的“仓库”,以及数据管理的方法和技术。总结为以下几点:
⚫ 数据结构化
⚫ 数据的共享性高,冗余度低,易扩充
⚫ 数据独立性高
⚫ 数据由 DBMS 统一管理和控制(安全性、完整性、并发控制、故障恢复)
数据库管理系统是管理数据库的一个软件,它充当所有数据的知识库,并对它的存储、安全、一致性、并发操作、恢复和访问负责。是对数据库的完整性和同一的管理和控制机制。
DBMS有一个数据字典(有时被称为系统表),用于贮存它拥有的每个事物的相关信息,例如名
字、结构、位置和类型,这种关于数据的数据也被称为元数据(metadata)
数据库与文件系统的区别
文件系统: 文件系统是操作系统用于明确存储设备(常见的是磁盘)或分区上的文件的方法和数据
结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理
系统,简称文件系统。
⚫ 数据库系统: 数据库管理系统是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称 DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。
对比区别:
- 管理对象不同: 文件系统的管理对象是文件,并非直接对数据进行管理,不同的数据结构需要使
用不同的文件类型进行保存(举例: txt 文件和 doc 文件不能通过修改文件名完成转换) ;而数据
库直接对数据进行存储和管理 - 存储方式不同:文件系统使用不同的文件将数据分类(.doc/.mp4/.jpg) 保存在外部存储上;数
据库系统使用标准统一的数据类型进行数据保存(字母、 数字、符号、时间) - 调用数据的方式不同:文件系统使用不同的软件打开不同类型的文件;数据库系统由 DBMS 统一
调用和管理。
数据库系统有3个主要的组成部分。
数据库:用于存储数据的地方。
数据库管理系统:用于管理数据库的软件。
数据库应用程序:为了提高数据库系统的处理能力所使用的管理数据库的软件补充。
SQL语言包含以下4个部分
(1)数据定义语言(DDL):DROP、CREATE、ALTER等语句。
(2)数据操作语言(DML):INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。
(3)数据查询语言(DQL):SELECT语句。
(4)数据控制语言(DCL):GRANT(授权)、REVOKE(收权)、COMMIT(提交)、ROLLBACK(回滚)等语句。
数据库的发展史
初始阶段-----人工管理:人力手工整理存储数据
萌芽阶段-----文件系统:使用磁盘文件来存储数据
初级阶段-----第一代数据库:出现了网状模型、层次模型的数据库
中级阶段-----第二代数据库:关系型数据库和结构化查询语言
高级阶段-----新一代数据库:“关系-对象”型数据库
常见数据库
关系型数据库
- 关系数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中
的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。 简单说,关系型数
据库是由多张能互相联接的二维行列表格组成的数据库。 - 关系模型就是指二维表格模型, 因而一个关系型数据库就是由二维表及其之间的联系组成的一个数
据组织。当前主流的关系型数据库有Oracle、DB2、Microsoft SQL Server、Microsoft Access、
MySQL、浪潮K-DB 、武汉达梦、南大通用、人大金仓、华为高斯、等。 - 实体关系模型简称 E-R 模型,是一套数据库的设计工具,他运用真实世界中事物与关系的观念,
来解释数据库中的抽象的数据架构。实体关系模型利用图形的方式(实体-关系图)来表示数据库 的概念设计,有助于设计过程中的构思及沟通讨论。
非关系型数据库
- 非关系型数据库: 又被称为 NoSQL(Not Only SQL ),意为不仅仅是 SQL, 是一种轻量、开源、不兼 容 SQL
功能的数据库, 对 NoSQL 最普遍的定义是“非关联型的”,强调 Key-Value 存储和文档数据库的 优点,而不是单纯地反对RDBMS(关系型数据库管理系统)
DBMS支持的数据模型
1、 层次模型
层次模型
若用图来表示,层次模型是一棵倒立的树。在数据库中,满足一下条件的数据模型称为层次模型:
a.有且仅有一个节点无父节点,这个节点称为根节点;
b.其他节点有且仅有一个父节点。桌面型的关系模型数据库
2、网状模型
在现实世界中,事物之间的联系更多的是非层次关系的,用层次模型表示非树型结构是很不直接的,网
状模型则可以克服这一弊病。网状模型是一个网络。在数据库中,满足以下两个条件的数据模型称为网
状模型。
A.允许一个以上的节点无父节点;
B.一个节点可以有多于一个的父节点。
3、关系模型
以二维表的形式表示实体和实体之间联系的数据模型称为关系数据模型。从模型的三要素角度看,关系
模型的内容为:
数据结构:一张二维表格。
数据操作:数据表的定义、检索、维护、计算等。
数据约束条件:表中列的取值范围即域值的限制条件。
4、概念模型
实体(Entity):客观存在的、可以被描述的事物。例如员工、部门。
属性(Attribute):用于描述实体所具有的特征或特性。如使用编号、姓名、工资等来属性来描述员工的特
征。
关系(Relationship):实体之间的联系。
一对一: 人 和 身份证
一对多: 班级 和 学生
多对多: 学生 和 课程
5、数据模型
关系数据库:用于存储各种类型数据的”仓库”,是二维表的集合。
表:实体的映射
行和列:行代表一个具体的实体的数据。也叫一条记录。列是属性的映射,用于描述实体的。
主键和外键。
运维对数据库要求
- 部署环境
- 数据库安装、参数配置、权限分配
- 备份/还原
- 监控
- 故障处理
- 性能优化
- 容灾
- 升级/迁移
- 系统用户反馈的数据库问题
数据库运维工作总原则
- 1、能不给数据库做的事情不要给数据库,数据库只做数据容器。
- 2、对于数据库的变更必须有记录,可以回滚。
MySQL版本与获取
针对不同用户,MySQL分为2个不同的版本:
⚫MySQL Community Server,社区版,该版本完全免费,但是官方不提供技术支持。
⚫MySQL Enterprise Server,企业版服务器,它能够搞性价比的为企业提供数据仓库应用。
版本介绍:
⚫ Alpha版:开发版,公司内部使用
⚫ Beta版:完成开发后,用户体验版
⚫ RC版:生产环境发布之前的一个小版本或称候选版
⚫ GA版:正式发布版本
MySQL获取:http://www.mysql.com/
⚫ 从官方网站下载安装包
⚫ 从官方网站下载源代码包
⚫ 从官方网站下载二进制包
⚫ 从发行版本光盘中获取安装包
MySQL 常见版本
⚫ MySQL Community Server 社区版本,开源免费,但不提供官方技术支持。
⚫ MySQL Enterprise Edition 企业版本,需付费,可以试用 30 天。
⚫ MySQL Cluster 集群版,开源免费。可将几个 MySQL Server 封装成一个 Server。
⚫ MySQL Cluster CGE 高级集群版,需付费
MySQL体系结构
Mysql是由SQL接口,解析器,优化器,缓存,存储引擎组成的
Connectors指的是不同语言中与SQL的交互
Management Serveices & Utilities: 系统管理和控制工具
Connection Pool: 连接池。管理缓冲用户连接,线程处理等需要缓存的需求
SQL Interface: SQL接口,接受用户的SQL命令,并且返回用户需要查询的结果。比如select from就是调用SQL Interface
Parser: 解析器。SQL命令传递到解析器的时候会被解析器验证和解析。
Optimizer: 查询优化器。SQL语句在查询之前会使用查询优化器对查询进行优化。
Cache和Buffer: 查询缓存。如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据.
Engine :存储引擎。存储引擎是MySql中具体的与文件打交道的子系统。
一条SQL语句执行流程:
连接层
(1)提供连接协议:TCP/IP 、SOCKET
(2)提供验证:用户、密码,IP,SOCKET
(3)提供专用连接线程:接收用户SQL,返回结果
通过以下语句可以查看到连接线程基本情况
mysql> show processlist;
SQL层
(1)接收上层传送的SQL语句
(2)语法验证模块:验证语句语法,是否满足SQL_MODE
(3)语义检查:判断SQL语句的类型
DDL :数据定义语言
DCL :数据控制语言
DML :数据操作语言
DQL: 数据查询语言
(4)权限检查:用户对库表有没有权限
(5)解析器:对语句执行前,进行预处理,生成解析树(执行计划),说白了就是生成多种执行方案.
(6)优化器:根据解析器得出的多种执行计划,进行判断,选择最优的执行计划 代价模型:资源(CPU IO MEM)的耗损评估性能好坏
(7)执行器:根据最优执行计划,执行SQL语句,产生执行结果 执行结果:在磁盘的xxxx位置上
(8)提供查询缓存(默认是没开启的),会使用redis tair替代查询缓存功能
(9)提供日志记录(日志管理章节):binlog,默认是没开启的。
存储引擎层(类似于Linux中的文件系统)
负责根据SQL层执行的结果,从磁盘上拿数据。
将16进制的磁盘数据,交由SQL结构化化成表, 连接层的专用线程返回给用户。
本文地址:https://blog.csdn.net/m0_46289868/article/details/112553370