关系型数据库
关系型数据库是一种基于关系模型的数据库,数据以表格的形式呈现,使用结构化查询语言(sql)进行数据的管理和检索,每个表格包含若干行数据记录和若干列字段,每一列代表一种属性。不同表格之间通过主键和外键建立关联,从而形成一个逻辑上的数据模型。
优点:
关系型数据库的最大特点是采用关系模型来组织数据, 数据之间的关系清晰、易于理解和管理;
保证数据的一致性;(ACID)
数据更新的开销小;(ACID)索引优化 数据结构简单表格 数据安全性高
支持复杂的查询。
常见的关系型数据库产品包括Oracle、MySQL、SQL Server等。
关系型数据库管理系统(RDBMS)
它是一种将数据存储在表格中的数据库管理系统,这些表格由行和列组成,类似于电子表格。RDBMS支持SQL(结构化查询语言),它是一种用于管理和查询关系型数据库的标准语言。
数据存储在表格中,每个表格都有一个唯一的名称。
每个表格由行和列组成,行表示记录,列表示字段。
表格之间可以建立关系,通过这些关系可以进行数据查询和分析。
RDBMS支持事务处理,可以确保数据库的完整性和一致性。
RDBMS具有高度的可扩展性和可靠性,可以处理大量数据和高并发访问。
RDBMS具有良好的安全性,可以通过用户权限控制对数据进行保护。
非关系型数据库(NoSQL)
不使用传统关系型数据库管理系统(RDBMS)所采用的结构化查询语言(SQL)的一类数据库管理系统,它们通常不依赖于固定的模式,而是使用一些不同的模型来管理数据。非关系型数据库主要包括键值存储数据库、文档数据库、列族数据库和图形数据库等。
非关系型数据库具有更好的可扩展性、更高的性能和更好的灵活性。其设计的目的是为了满足大规模分布式数据存储和处理的需求。非关系型数据库的应用领域涵盖了Web应用、社交网络、物联网、金融、电子商务等多个领域。
MySQL
目前由 Oracle 公司维护和发展。MySQL 是一种跨平台的数据库系统,支持 Windows、Linux、Unix 等多种操作系统。
- MySQL 使用的是 SQL(Structured Query Language)查询语言,支持多用户、多线程,可以处理大规模的数据集。
- 支持插件式的存储引擎,支持InnoDB,MyISAM,Memory
- 基于C/S模型,MySQL的架构分为三层:客户端、服务层和存储引擎层。客户端与服务器通过MySQL协议进行通信,发送SQL语句和接收结果。服务层是MySQL的核心部分,包括查询解析、分析优化、缓存管理、权限管理等功能。存储引擎层负责数据的存储和管理,MySQL支持多种存储引擎,如InnoDB、MyISAM等。
- MySQL服务器模型采用IO多路复用+可伸缩的线程池 select+线程池
优点:1。高效利用系统资源;2.简化程序设计;3。提高并发能力;4.避免线程资源浪费,多路复用可以实现单线程处理多个连接请求,避免多线程切换带来的性能损耗;线程池减少线程创建和销毁的开销 提高并发能力,
为什么不用epoll+线程池:确实会获得更好的性能但是会带来更高的技术门槛和复杂度,另外MySQL在设计时考虑到跨平台的兼容性和可移植性,epoll是linux特有的不具有跨平台优势;另外MySQL涉及到网络IO和磁盘IO操作,磁盘IO的速度相对来说较慢,两者速度匹配就好,为了匹配 网络IO和磁盘IO操作:采用缓存技术减少磁盘IO 连接池计数减少网络IO、索引计数优化查询操作.
MySQL协议
MySQL协议是基于TCP/IP协议的,但是不同于其他应用程序所使用的通用协议。MySQL协议使用二进制格式进行数据传输,同时还支持压缩、SSL加密等特性。