数据库理论部分

数据库理论部分


前言

数据库基本知识,理论部分


一、什么是数据库

数据: 描述事物的符号记录, 可以是数字、 文字、图形、图像、声音、语言等,数据有多种形式,它们都可以经过数字化后存入计算机。
数据库: 存储数据的仓库,是长期存放在计算机内、有组织、可共享的大量数据的集合。数据库中的数据按照一定数据模型组织、描述和存储,具有较小的冗余度,较高的独立性和易扩展性,并为各种用户共享,即数据库包含两层含义:保管数据的“仓库”,以及数据管理的方法和技术。
数据库特点总结:
数据结构化
数据共享性高,冗余低,易扩充
数据独立性高
数据由 DBMS 统一管理和控制(安全性、完整性、并发控制、故障恢复)
数据库原理
数据库(Database)是一些相关数据的集合,我们可以用一定的原则与方法添加、编辑和删除数据的内 容,进而对所有数据进行搜索、分析及对比,取得可用的信息,产生所需的结果。

二、数据库管理系统(DBMS)

充当所有数据的知识库,并对它的存储、安全、一致性、并发操作、恢复和访问负责。是对数据库的一种完整和统一的管理和控制机制。数据库管理系统不 仅让我们能够实现对数据的快速检索和维护,还为数据的安全性、完整性、并发控制和数据恢复提供了 保证。数据库管理系统的核心是一个用来存储大量数据的数据库。

DBMS是所有数据的知识库,并对数据的存储、安全、一致性、并发操作、恢复和访问负责。DBMS有一个数据字典(有时被称为系统表),用于贮存它拥有的每个事物的相关信息,例如名字、结构、位置和类型,这种关于数据的数据也被称为元数据(metadata)

数据库管理系统与文件系统的区别

在这里插入图片描述
文件系统: 文件系统是操作系统用于明确存储设备(常见的是磁盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理 系统,简称文件系统

数据库系统: 数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称 DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。

区别对比:

  1. 管理对象不同: 文件系统的管理对象是文件,并非直接对数据进行管理,不同的数据结构需要使用不同的文件类型进行保存(举例: txt 文件和 doc 文件不能通过修改文件名完成转换) ;而数据库直接对数据进行存储和管理
  2. 存储方式不同:文件系统使用不同的文件将数据分类(.docx/.mp4/.jpg) 保存在外部存储上;数据库系统使用标准统一的数据类型进行数据保存(字母、 数字、符号、时间)
  3. 调用数据的方式不同:文件系统使用不同的软件打开不同类型的文件;数据库系统由 DBMS 统一调用和管理。

优缺点总结:

  1. 由于 DBMS 的存在,用户不再需要了解数据存储和其他实现的细节,直接通过 DBMS 就能获取数据,为数据的使用带来极大便利。
  2. 具有以数据为单位的共享性,具有数据的并发访问能力。 DBMS 保证了在并发访问时数据的一致性。
  3. 低延时访问,典型例子就是线下支付系统的应用,支付规模巨大的时候,数据库系统的表现远远优 于文件系统。
  4. 能够较为频繁的对数据进行修改,在需要频繁修改数据的场景下,数据库系统可以依赖 DBMS 来对数据进行操作且对性能的消耗相比文件系统比较小。
  5. 对事务的支持。 DBMS 支持事务,即一系列对数据的操作集合要么都完成, 要么都不完成。在DBMS上对数据的各种操作都是原子级的。

三、数据库组成部分

数据库系统

数据库系统有3个主要的组成部分。
数据库:用于存储数据的地方。
数据库管理系统:用于管理数据库的软件。
数据库应用程序:为了提高数据库系统的处理能力所使用的管理数据库的软件补充。

SQL语言

SQL语言包含以下4个部分。
(1) 数据定义语言(DDL):DROP、CREATE(创建)、ALTER等语句。
(2) 数据操作语言(DML):INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。
(3) 数据查询语言(DQL):SELECT语句。
(4) 数据控制语言(DCL):GRANT(授权)、REVOKE(撤权)、COMMIT(保存更改)、ROLLBACK(回退,撤销更改)等语句。

数据库访问技术

不同的程序设计语言会有各自不同的数据库访问技术,程序语言通过这些技术,执行SQL语句,进行数 据库管理。主要的数据库访问技术有:

  1. ODBC(开放数据库互连)
  2. JDBC(JAVA数据库连接)
  3. ADO.NET
  4. PDO

四、常见数据库

关系型数据库

  1. 关系数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中 的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。 简单说,关系型数据库是由多张能互相联接的二维行列表格组成的数据库。
  2. 关系模型就是指二维表格模型, 因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。当前主流的关系型数据库有Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL、浪潮K-DB 、武汉达梦、南大通用、人大金仓等。
  3. 实体关系模型简称 E-R 模型,是一套数据库的设计工具,他运用真实世界中事物与关系的观念,来解释数据库中的抽象的数据架构。实体关系模型利用图形的方式(实体-关系图)来表示数据库的概念设计,有助于设计过程中的构思及沟通讨论。
  4. 关系型数据库强调ACID规则(原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)

非关系型数据库

非关系型数据库: 又被称为 NoSQL(Not Only SQL ),意为不仅仅是 SQL, 是一种轻量、开源、不兼容 SQL 功能的数据库, 对 NoSQL 最普遍的定义是“非关联型的”,强调 Key-Value 存储和文档数据库的优点,而不是单纯地反对 RDBMS(关系型数据库管理系统)主要有:MongoDB,Membase等

MySQL数据库

MySQL被广泛地应用在Internet上的中小型网站中。由于体积小、速度快、总体拥有成本低,尤其是开放源代码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
MySQL特性

  1. 使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性。

  2. 支持AIX、BSDi、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、NetBSD、OpenBSD、OS/2 Wrap、Solaris、SunOS、Windows等多种操作系统。

  3. 为多种编程语言提供了API。这些编程语言包括C、C++、C#、Delphi、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。

  4. 支持多线程,充分利用CPU资源,支持多用户。

  5. 优化的SQL查询算法,有效地提高查询速度。

  6. 既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的 软件中。

  7. 提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。

  8. 提供TCP/IP、ODBC和JDBC等多种数据库连接途径。

  9. 提供用于管理、检查、优化数据库操作的管理工具。

  10. 可以处理拥有上千万条记录的大型数据库。

MySQL体系结构

Mysql是由SQL接口,解析器,优化器,缓存,存储引擎组成的
在这里插入图片描述
部分关键词解释:
Native API 是指以二进制方式,函式库 (DLL) 直接开放的应用程式开发接口 (Application Programming Interface),可以直接由 C/C++ 来呼叫存取使用。
JDBC Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。
ODBC 开放数据库连接(Open Database Connectivity,ODBC)是为解决异构数据库间的数据共享而产生的,ODBC 为异构数据库访问提供统一接口,允许应用程序以SQL 为数据存取标准,存取不同DBMS管理的数据。
.NET 是一种用于构建多种应用的免费开源开发平台,可以使用多种语言,编辑器和库开发各种应用或服务等等。.NET类库在不同应用和应用类型中共享功能,无论构建哪种类型的应用,代码和项目文件看起来都一样,可以访问每个应用的相同运行时、API和语言功能。
PHP(PHP: Hypertext Preprocessor)即“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。
Python 提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言。
Perl 一种功能丰富的计算机程序语言,运行在超过100种计算机平台上,适用广泛,从最初是为文本处理而开发的,现在用于各种任务,包括系统管理,Web开发,网络编程,GUI开发等。
Ruby 一种简单快捷的面向对象(面向对象程序设计)脚本语言。
VB (Visual Basic)是Microsoft公司开发的一种通用的基于对象的程序设计语言,为结构化的、模块化的、面向对象的、包含协助开发环境的事件驱动为机制的可视化程序设计语言。是一种可用于微软自家产品开发的语言。

Authentication - Thread Reuse - Connection Limits - Check Memory - Caches
身份验证 - 线程重用 - 连接限制 - 内存检查 - 缓存

EXT4 第四代扩展文件系统(英语:Fourth extended filesystem)是Linux系统下的日志文件系统,是ext3文件系统的后继版本。
NTFS (New Technology File System)是Windows NT内核的系列操作系统支持的、一个特别为网络和磁盘配额、文件加密等管理安全特性设计的磁盘格式,提供长文件名、数据保护和恢复,能通过目录和文件许可实现安全性,并支持跨越分区。
NFS 网络文件系统(Network File System),是由SUN公司研制的UNIX表示层协议(presentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。

一条SQL语句的简要执行流程

连接层
1.提供连接协议: TCP/IP SOCKET;
2.提供验证:用户,密码,IP,SOCKET;
3.提供专用连接线程:接收用户SQL,并返回结果
通过以下语句可以查看到连接线程基本情况
mysql> show processlist;
SQL层
1.接口接收上层的SQL语句;
2.验证语法是否满足SQL_MODE;
3.判断SQL语句类型;
4.检测用户是否有权限;
5.解析器解析命令,预处理生成多种执行方案;
6.优化器优化方案,判断代价模型(资源(CPU IO MEM)的耗损评估性能好坏)选择最优的执行计划;
7.执行器根据最优执行计划执行SQL语句,产生执行结果,执行结果:在磁盘的某个位置上;
8.提供查询缓存(默认未开启),会使用redis tair替代查询缓存功能;
9.提供日志记录(日志管理章节)binlog,默认是没开启的。
存储引擎层(类似于Linux的文件系统)
负责根据SQL层执行的结果,从磁盘上拿数据。将16进制的磁盘数据,交由SQL结构化化成表,连接层的专用线程返回给用户。


总结

数据库由DBMS管理,由数据库系统,SQL语言,数据库访问技术组成,根据数据模型的不同分为关系型和非关系型。
MySQL数据库的广泛使用以及体系结构。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值