Redis学习-nosql(数据库发展历史以及基本概念
一、数据库的发展历史
1.单机mysql的年代
2.Memcached(缓存)+Mysql+垂直拆分(读写分离)
解决了读的问题
长久以来会造成的问题:写数据很多,负担依旧很重-->分库分表
3.分库分表+水平拆分+mysql集群
本质还是解决数据库的 【读写】 问题
(数据库自身的发展也做出过一些改变:
MyISAM:表锁,高并发就会出现严重的锁问题
如今->Innodb:采用行锁)
4.如今
技术爆炸,mysql等关系型数据库不够用了。数据量变多,数据类型也变多了。数据库的效率变低,所有需要有一种专门的数据库来处理这些问题。
由于传统的关系型数据库并不能满足现在的大量的数据需求,所有有了Nosql数据库
nosql数据库可以很好的处理【不同的数据类型】、【大量的数据】
一个基本的互联网项目所具备的
二、 NoSql
1.关系型与非关系型比较
sql:
- 关系型数据库
- 【结构化】
- 存储的方式 :传统的表格 由行和列组成
- 【关联的】
- 数据之间是会有一些关系的(表和表之间会有外键之类的关系)
- 查询方式:【sql查询】
- ACID【基本满足事务的特性】
nosql:
- 非关系型数据库
- 【非结构化】
- 数据的存储:不是一个固定的格式,不需要过多的操作就可以横向扩展
-键值类型(Redis)
-文档类型(MongoDB)
-列类型(HBase)
-Graph类型(Neo4j)
- 【没有强制的关联性】
- 数据和数据之间可以没有任何关联(缺点:数据可能会有重复,比如A买了这个商品,B也买了,商品信息就会重复显示,关系型数据库商品相同只会显示一次)
- 查询方式:【非sql】
- BASE
nosql 泛指【非关系型】数据库
总结:
2. nomysql的特点
1.方便扩展(数据之间没有关系,很好扩展)
2.大数据量 高性能(redis一秒可以写8万次 写11万,nosql的缓存 )
3.数据类型是多样型的!(不需要事先设计数据库)
4.传统RDBMS和NoSQL的区别
传统的RDBMS
-结构化构图
-SQL
-数据和关系都存在单独的表中
-操作,数据定义语言
-基础事务多
NoSQL
-不仅仅是数据
-没有固定的查询语言
-键值对存储、列存储、文档存储、图形数据库(社交关系)
-最终一致性
-CAP定理和BASE(异地多活) -高性能、高可用、高可拓