MySQL官网
https://dev.mysql.com/doc/refman/8.0/en/
索引相关的
https://www.cs.usfca.edu/~galles/visualization/about.html
1.数据库概述
1.为什么要使用数据库
- 持久化:把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用
数据持久化意味着将内存中的数据保存到硬盘上加以固化,而持久化的实现过程大多通过各种关系数据库来完成 - 持久化的主要作用是将内存中的数据存储在关系型数据中,当然也可以存储在磁盘文件,xml数据文件中
2.数据库与数据库管理系统
2.1数据库的相关概念
- DB:数据库
既存储数据的仓库,其本质是一个文件系统,他保存了一系列有组织的数据 - DBMS:数据库管理系统
是一种操纵和管理数据库的大型软件,用于建立,使用和维护数据库进行统一管理和控制,用户通过数据库管理系统访问数据库中表内的数据 - SQL:结构化查询语言
专门用来与数据库通信的语言
2.2数据库与数据库管理系统的关系
数据库管理系统可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库,为保存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体用户的数据
2.3常见的数据库管理系统排名(DBMS)
目前互联网上常见的数据库管理软件有Oracle,MySQL,MS SQL Server,DB2,PostgreSQL,Access,Sybase,Informix这几种,查看数据库最新排名:https://db-engines.com/en/ranking
对应的走势图:https://db-engines.com/en/ranking_trend
2.4常见的数据库介绍
DB2
IBM公司的数据库产品,收费的。常应用在银行系统中
PostgreSQL
稳定性极强,最符合SQL标准,开放源码,具备商业级DBMS质量,PG对数据量大的文本以及SQL处理较快
SQlite
嵌入式的小型数据库,应用在手机端,零配置,SQlite3不用安装,不用配置,不用启动,关闭或者配置数据库实例,当系统崩溃后不用做任何恢复操作,再下次使用数据库的时候自动恢复
informix
IBM公司出品,取自infomation和Unix的结合,他是一个被移植到Liunx上的商业数据库产品,仅运行于unix/liunx平台,命令行操作,性能较高,支持集群,适用于安全性要求极高的系统,尤其是银行,证券系统的应用
3.MySQL介绍
3.1概述
- MySQL是开放源代码的关系型数据库管理系统
- MySQL6.x版本之后分为社区版和商业版
- MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了
灵活性 - MySQL是可以定制的,采用GPL协议,你可以修改源码来开发自己的MySQL系统
- MySQL支持大型的数据库,可以处理拥有上千万条记录的大型数据库
- MySQL使用标准的SQL数据语言形式
- MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表最大可支持4GB,64位系统支持最大的表文件为8TB
- MySQL可以允许运行于多个系统,并且支持多种语言,包括C++,Python,Java,Perl,PHP,Puby
3.2常用MySQL版本
MySQL5.7和MySQL8.0
3.3关于MySQL8.0
MySQL从5.7版本直接跳跃发布了8.0版本,MySQL8版本在功能上做了显著的改进与增强,最突出的一点是多MySQL Optimizer优化器进行了改进,不仅在速度上得到了改善
4.RDBMS与非RDBMS
关系型数据库是DBMS的主流,其中最多的DBMS分别是Oracle,MySQL和SQL Server,这些都是关系型数据库(RDBMS)
4.1关系型数据库
4.1.1实质
- 这种类型的数据库是最古老的数据库类型,关系型数据库模型是把复杂的数据归结为简单的二元关系(即二维表格形式)
- 关系型数据库以行和列的形式存储数据,以便用户理解,这一系列的行和列被称为表,一组表组成了一个库(database)
4.1.2优势
- 复杂查询
可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询 - 事务支持
使得对于安全性能很高的数据访问要求得以实现
4.2非关系型数据库(非RDBMS)
4.2.1介绍
非关系型数据库,可看成传统关系型数据库的阉割版本,基于键值对存储数据,不需要经过SQL层的解析,性能非常高,同时,通过减少不常用的功能,进一步提高性能
目前基本大部分主流的非关系型数据库都是免费的
4.2.2有哪些非关系型数据库
-
键值型数据库
键值型数据库通过key-value键值的方式来存储数据,其中key和value可以是简单的对象,也可以是复杂的对象。key作为唯一的标识符,优点是查找速度快,在这方便明显优于关系型数据库,缺点是无法像关系型数据库一样使用条件过滤,比如WHERE,如果你不知道去哪里找数据,就要遍历所有的键,这就·会消耗大量的计算,键值型·数据库典型的使用场景是作为内存缓存。Redis是最流行的键值型数据库 -
文档型数据库
此类数据库可存放并获取文档,可以是XML,JSON格式,在数据库中文档作为处理信息的基本单位,一个文档就相当于一条记录,文档数据库所存放的文档,就相当于键值数据库所存放的值,MongoDB是最流行的文档型数据库,此外,还有CouchDB等 -
搜索引擎数据库
虽然关系型数据库采用了索引提升检索效率,但是针对全文索引效率却较低。搜索引擎数据库是应用在搜索引擎领域的数据存储形式,由于搜索引擎会爬取大量的数据,并以特定的格式进行存储,这样在检索的时候才能保证性能最优。核心原理是倒排索引
典型产品,Solr,Elastcsearch,Splunk等 -
列式数据库
列式数据库是相对于行式存储的数据库,Oracle,MySQL,SQL Server等数据库都是采用的行式存储,而列式数据库是将数据按照列存储到数据库中,这样做的好处是可以大量降低系统的I/O,适合于分布式文件系统,不足在于功能相对有限。典型产品,HBase -
图形数据库
如果用关系型数据库则非常复杂,用图形数据库将非常简单,典型产品:Neo4J,InfoGrid
5.关系型数据库设计规则
待更新。。。。