什么是数据库
数据库是指长期存储在计算机内有组织可共享的数据和数据之间关系的集合。数据库中的数据按照一定的数据模型组织、描述和存贮,具有较小的冗余度、较高的数据独立性和易扩展性,并在一定范围内可以被多个用户所共享。
数值和数据。数据=元数据+数值
关系型数据库是建立在关系数据模型基础上的数据库,借助集合代数概念和方法处理数据库中的数据,同时也是一个被组织成拥有正式描述性的表格。该形式的表格实质是装载数据项的收集体,这些表格中的数据能以不同的方式被存取或重新召集而不需要更新组织数据库表格。
主流RDBMS有Oracle、DB2、SQL Server、Sybase、MySQL等。
什么是DBMS
数 据 库 管 理 系 统Database Management System,简称DBMS是位于用户与操作系统之间的一层数据管理软件
DBMS的用途
科学地组织和存储数据、高效地获取和维护数据
DBMS的主要功能
数据定义功能
- 提供数据定义语言(DDL)
- 定义数据库中的数据对象
数据操纵功能
- 提供数据操纵语言(DML)
- 操纵数据实现对数据库的基本操作(查询、插入、删除和修改)
数据库的运行管理
- 保证数据的安全性、完整性
- 多用户对数据的并发使用
- 发生故障后的系统恢复
数据库的建立和维护功能(实用程序)
- 数据库数据批量装载、数据库转储
- 介质故障恢复、数据库的重组织、性能监视等
数据库特点
数据尽可能不重复,以最优方式为多种应用服务
数据结构独立于应用
对数据的CRUD由统一软件进行管理和控制
数据模型
在数据库中用数据模型这个工具来抽象、表示和处理现实世界中的数据和信息。通俗地讲数据模型就是现实世界的模拟
数据模型分成两个不同的层次
1、概念模型也称信息模型,它是按用户的观点来对数据和信息建模,可以使用ER图进行描述。实体E,关系R
矩形—实体 椭圆—属性 菱形—关系
数据模型主要包括层次模型、网状模型、关系模型等,它是按计算机系统的观点对数据建模。下一代是对象模型
ORM对象关系映射:hibernate、mybatis
2、物理数据模型
关系模式是最重要的一种数据模型。也是目前主要采用的数据模型
- 1970年由美国IBM 公司San Jose研究室的研究员E.F.Codd提出
- 在用户观点下,关系模型中数据的逻辑结构是一张二维表,它由行和列组成
- 它通过数据、关系和对数据的约束三者组成的数据模型来存放和管理数据
RDBMS的特点
数据以表格的形式出现 -表在数学中被表示为关系
每行为各种记录名称
每列为记录名称所对应的数据域
许多的行和列组成一张表单
若干的表单组成database
关系模型的优缺点
建立在严格的数学概念的基础上
概念单一。数据结构简单、清晰,用户易懂易用
实体和各类联系都用关系来表示
对数据的检索结果也是关系
关系模型的存取路径对用户透明
具有更高的数据独立性,更好的安全保密性
简化了程序员的工作和数据库开发建立的工作
缺点:存取路径对用户透明导致查询效率往往不如非关系数据模型
为提高性能,必须对用户的查询请求进行优化。增加了开发数据库管理系统的难度
常见的数据库产品
Oracle:运行稳定,可移植性高,功能齐全,性能超群!适用于大型企业领域
DB2:速度快、可靠性好,适于海量数据,恢复性极强。适用于大中型企业领域
SQL Server:全面,效率高,界面友好,操作容易,但是不跨平台[2019支持windows、Linux和Docker]。适用于于中小型企业领域
MySQL:开源,体积小,速度快。适用于中小型企业领域
LAMP–php
SQL
SQL结构化查询语言是一种数据库操作的非过程化编程语言,用于存取数据以及查询、更新和管理关系型数据系统,一般数据库脚本文件的扩展名也是.sql。
允许用户在高层数据结构上工作,不要求用户了解数据的存放方式,对于不同底层结构的数据库系统使用相同的数据输入与管理的接口
1986年10月美国国家标准化协会ANSI首先对SQL进行规范化,1987年国际标准化组织ISO定义了国际标准。但是各种数据库系统都对SQL规范进行了某些编改和扩充,所以不同数据库系统的SQL不能完全相互通用。
一个SQL类型的数据库对于使用者是便于理解和组织结构的,通过数据元与数据元之间的关系可以整理出对系统的数据处理逻辑,并且可以进行人为精简数据,达到最优或者较优解。
SQL的特点
综合统一、高度非过程化 4GL
面向集合的操作方式
以同一种语法结构提供两种使用方法;即可以直接以命令方式交互使用;也可以嵌入主语言中使用
语言简洁,易学易用;在ANSI标准中,只包含了94个英文单词,核心功能只用6个动词,语法接近英语口语
NoSQL
NoSQL泛指非关系型数据库。主要是针对超大规模和高并发的SNS类型动态网站的解决方案(Web2.0)。
常见的NoSQL数据库类型有4种
key-value数据库。使用hash表存储数据,例如Redis。简单易部署,但是对部分值进行查询或更新时效率低下
列存储数据库,用于应对分布式存储的海量数据,键仍旧存在,只是指向了多个列,例如HBase
文档型数据库,该类型的数据模型是版本化的文档,半结构化的文档以JSON格式存储,例如MongoDB
图形数据库,主要用户关系计算Neo4j
NoSQL的适用场景:
数据模型比较简单
需要灵活性很强的IT系统
对数据库性能要求较高
不需要数据高度的一致性
对于给定的key比较容易映射复杂值的环境
SQL vs NoSQL
复杂查询SQL数据库比较擅长
SQL数据库不适合分层次的数据存储,而NoSQL数据库可以很好地存储分层次的数据,更适用于大数据
对于基于大量事务的应用SQL非常适合,更加稳定,能够保证数据的原子性和一致性,而NoSQL对事务的处理能力有限
SQL数据库厂商对其产品有很好的支持,而NoSQL一般只有社区支持
性能对比中NoSQL明显优于SQL数据库。一般NoSQL可以充分利用系统的内存资源。
不用考虑数据关系和格式的NoSQL非常方便开发,范式对运维提出了相当高的要求。
什么是Mysql数据库
MySQL®软件提供了十分快速的多线程、多用户、牢靠的SQL(结构化查询语言)数据库服务器。 MySQL服务器定位于任务关键型、重负荷生产系统,并能嵌入在大量部署的软件中
MySQL数据库软件是一种客户端/服务器系统,由支持不同后端的1个多线程SQL服务器,数种不同的客户端程序和库,众多管理工具和广泛的应用编程接口API组成
Mysql数据库应用
MySQL的官方网站引述MySQL是“世界上最受欢迎的开放源代码数据库”。这不是狂妄之语,数字可以证明它
有些用户将MySQL用于含60000个表和约50亿行的数据库
每个表可支持高达64条索引。每条索引可由1~16个列或列元素组成。最大索引宽度为1000字节。索引可使用具备CHAR、VARCHAR、BLOB或TEXT列类型的列前缀
所有数据均以所选的字符集保存。正常字符串列的比较不区分大小写
MySQL数据库的最大有效表尺寸通常是由操作系统对文件大小的限制决定的,而不是由MySQL内部限制决定的
InnoDB存储引擎将InnoDB表保存在一个表空间内,该表空间可由数个文件创建。这样,表的大小就能超过单独文件的最大容量。表空间可包括原始磁盘分区,从而使得很大的表成为可能。表空间的最大容量为64TB
MySQL 8的新特性
MySQL 8.0 的速度要比 MySQL 5.7 快 2 倍。MySQL 8.0 在以下方面带来了更好的性能:读/写工作负载、IO 密集型工作负载、以及高竞争("hot spot"热点竞争问题)工作负载
从 MySQL 8 开始,使用 utf8mb4 作为 MySQL 的默认字符集
InnoDB 现在支持表 DDL 的原子性,也就是 InnoDB 表上的 DDL 也可以实现事务完整性了,要么失败回滚,要么成功提交
InnoDB 集群为您的数据库提供集成的原生 HA 解决方案
备注:本篇文章转载于蓝鸥教育闫峻讲师