基于mysql 5.7版本
数据库分为两类
-
关系型数据库
(mysql 、sqlserver、oracle都为关系型数据库)什么是关系型数据库?
1. 库中的数据 和excel类似,是一张或多张二维表
2. 表中的数据是按照一定的规则来存储的
3. 可以用SQL来对表中的数据进行读写操作
4. 遵循ACID特性相关概念
域:字段的取值范围
关系:储存数据的表的表名
元祖:表中的一条记录(一行就是一条记录)
属性:表中的一个字段(一列就是一个字段)
关键字:可以唯一标识一条记录的字段(是一个或多个字段)
关系模型:表和表之间的关系优点
1.容易理解
2.可以借助于sql语句来进行数据的读写
3.便于维护表中的数据(主要用于保证数据完整和数据一致)缺点
1.事物一致性(数据一致性)
为保证数据的完整,会带来额外的开销从而导致性能降低
2.关系型数据库在高并发的读写情况下,会成为程序系统的性能瓶颈
3.可扩展性
数据库的拆分——(分库、分表)
4.读写的时效性
金融:对时效性往往要求不高
web、社交网络:对时效性要求高
5.需要写复杂的SQL,甚至需要用多表联合查询关系型数据库遵循ACID
A: 原子性
C: 一致性
I: 隔离性
D: 持久性注意:关系型数据库中的数据是以二维表的方式储存
-
非关系型数据库(NoSQL)
——NoSQL Not Only SQL
(redis为非关系型数据库)非关系型数据库通常是作为关系型数据库的一个补充,而且不遵循ACID,因此其特点是性能相比关系型数据库更好,更易于扩展。
分类
类型1. key-value
借助于hash表实现快速读写
特点:简单、容易部署、高并发状态下性能好
产品:
redis----内存+磁盘
memcached----纯内存的数据库(断电数据丢失)类型2. 列式存储数据库
数据存放在Column Family(列簇)中
通用场景:用来实现分布式海量数据存储
产品:
HBbase
Cassandra类型3. 面向文档的数据库
数据库中存放的是一个个文档
产品:
MongoDB(性能极好)类型4. 图形数据库
graph注意:NoSQL是以key-value的方式存储的
常用的关系型和非关系型数据库
- oracle
支持众多平台(收费)
应该场景:非互联网行业
特点:稳定、安全、收费、重量级 - sql server
仅仅支持windows平台 - mysql
应用场景:互联网企业
特点:体积小、运行速度快、稳定、开源 - MariaDB
mysql的分支,完全兼容mysql - Redis
key-value
内存+磁盘
读写操作10万/s
因为磁盘的限制,导致在处理海量数据的时间不好
应用场景:局部高并发的场景 - memcached
key-value
纯内存,一旦重启数据丢失
逐渐被redis取代 - Access
入门级 - MongoDB
- DB2