一、关系型数据库
主流的有3个,mysql、sqlServer、Oracle
以sql为例,关系型数据库存储结构是二维表结构,类似依据x,y可以定位一个数据;
Relational DB ⇒ Databases ⇒ Tables ⇒ Rows ⇒ Columns
关系型数据库 数据库 表 行 列(字段)
基于行式存储,存储结构化数据,一行代表一条完整的信息。
关系型数据库遵循ACID特性(原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)),支持事务处理能力。
但容量扩展性有限。
数据库的ACID & 3种隔离级别 脏读、不可重复读、幻读
适用场景:
需要事务支持;
基于sql的结构化查询存储,处理复杂的关系。
二、非关系型数据库
即NoSQL数据库(not only sql),一般以简单的key-value模式存储,因此大大增加了数据库的扩展能力,不支持ACID,远超于SQL的性能。
一般用不着sql和用了sql也不行的情况,可以考虑使用Nosql。
适用场景:
对数据高并发的读写(mysql数据库存储在磁盘上,高并发会产生大量IO)
对海量数据的读写(mysql数据库不支持海量数据)
对数据高可扩展性的(例如key-value,redis中支持5种类型的value)
1. 缓存型数据库
(1)Redis
存储结构:key -> value(String、list、set、hash(field-value)、zset(score-value))
内存中数据有时间限制,也提供RDB和AOF两种持久化方式。
(2)Memcached
区别是不会持久化,完全基于内存,基本被Redis替代了。