1.1 什么是NoSQL?
NoSQL = Not Only SQL(不仅仅是SQL),也解释为非关系型数据库
RDBMS(relationship database management ayatem)==>关系型数据库管理系统
*互联网应用 传统应用
1.用户量大,访问量大 用户少,访问量少,要求低
2.高并发
3.高可用(持续稳定运行->一部分异常后马上可以替换执行)
4.海量数据
·不同应用的特征-->需要处理的问题-->对应解决办法对应的技术
1.2 为什么使用NoSQL?
关系型数据库的瓶颈
1)无法处理大量集中的高并发操作
RDBMS是IO密集型应用,硬盘IO与CPU之间冲突成为了性能瓶颈
且其中有为保证数据准确性而有的锁机制限制
2)表的存储记录数量有限
横向处理能力有限
纵向数据可承受能力有限,而且读写性能会随之下降
解决性能问题==>每张表数据量进行限制=>分表-->又需要进行数据的位置判定(复杂)
3)无法简单地通过增加硬件、服务节点来提高性能
4)软硬件成本高
DBMS大多会收费,对硬件要求较高
所以-->解决互联网应用(RDBMS)存在的问题-->NoSQL出现
1.3 NoSQL的优势
1)大数据量,高并发
2)灵活的数据模型
没有表列字段的限制,且没有关系
3)高可用
可方便实现高可用的架构
4)低成本
开源免费,无特定硬件要求
1.4NoSQL的劣势
1)无关系,数据之间是无联系的
所以-->数据冗余,修改操作多
2)不支持标准的SQL,没有公认的NoSQL标准
各厂家开发的库操作不同,学习难度加大
3)没有数据的约束,大多数也也没有索引
4)没有事务,需要依靠RDB实现事务
没有事务-->没有锁,也就性能提高
5)没有丰富的数据类型,只有文本类型
处理了问题-->将不重要的影响性能的去掉-->成为了劣势,但性能提高了
所以,两者进行搭配使用