NoSQL
文章目录
一、关系型数据库存在的问题
1. 问题现象
购票网站,商城网站等在用户高峰期时服务器存在崩溃的现象
2. 现象特征
(1) 海量用户
(2) 高并发
3. 造成原因
服务器奔溃并不是服务器本身的问题,而是关系型数据库(MySQL等)的局限性
(1) 性能瓶颈
关系型数据库在读写数据时会使用磁盘IO,性能较低
(2) 扩展瓶颈
关系型数据库中表与表之间的关系是十分复杂的,某张表可能通过外键关联了许多张表, 而这些被关联的表可能也会去关联很多张表,这就导致查询数据时需要动用多张表,十分 影响查询效率;并且由于复杂性导致扩展也十分困难
4. 解决思路
(1) 降低磁盘IO次数
NoSQL直接将数据放在内存中,不会放在磁盘中 (默认状态下重启之后数据会消失)
(2) 去除数据间关系
NoSQL只存放数据,不存放数据间的关系
二、NoSQL基本介绍
1. 概念
NoSQL即Not-Only SQL,泛指非关系型数据库,作为关系型数据库的补充,如今的系统设计采 用关系型数据库和非关系型数据库结合使用的方式
2. 作用
应对海量用户和海量数据前提下的数据处理问题
3. 特征
(1) 易扩展
NoSQL中不存放数据间的关系,扩展较为容易
(2) 高性能
NoSQL将数据存放在内存中,存取数据的速度较快
(3) 灵活的数据模型
NoSQL无需提前为要存储的数据建立字段,随时可以存储自定义的数据格式
(4) 高可用
4. 常见NoSQL数据库
目前市面上常见的NoSQL产品:redis、memcached、HBase、MongoDB
5. NoSQL数据库的四大分类
(1)KV键值:常见的有redis、memcached
(2)文档型数据库:bson格式比较多,常见的有MongoDB
(3)列存储数据库:分布式文件系统,常见的有HBase
(4)图关系数据库:存放的不是图形,存放的是关系,如朋友圈社交关系,常见的有Neo4J
四者对比:
三、NoSQL应用场景
以电商系统为例,展示NoSQL起到的作用:
第一类,在电商中基础数据一定要存储起来,比如商品名称,价格,生产厂商,这些都属于基础数 据,这些数据放在关系型数据库(如MySQL)中
第二类,商品的附加信息,比如商品的评价,评价不属于商品本身的属性,这一类数据,放到MongoDB 中,可以加快访问速度
第三类,图片内的信息,这种信息相对来说比较固定,它有专用的存储区,一般用文件系统来存储
第四类,搜索关键字,为了加快搜索速度,会用到像Elasticsearch、Lucene、solr等搜索技术
第五类,热点信息,即访问频度比较高的信息,这类信息的第二特征是具有波段性,换句话说它不 是稳定的,具有时效性,这类信息一般放到redis中进行存储,可以加快存取速度