✨ NoSQL数据库简介
📃个人主页:不断前进的皮卡丘
🌞博客描述:梦想也许遥不可及,但重要的是追梦的过程,用博客记录自己的成长,记录自己一步一步向上攀登的印记
🔥个人专栏:微服务专栏
📖参考视频:尚硅谷
NoSQL引入
- 1、解决功能性的问题:Java、Jsp、RDBMS、Tomcat、HTML、Linux、JDBC、SVN
- 2、解决扩展性的问题:Struts、Spring、SpringMVC、Hibernate、Mybatis
- 3、解决性能的问题:NoSQL、Java线程、Hadoop、Nginx、MQ、ElasticSearch
在数据访问量不大的时候,我们可以使用高性能的单点服务器来解决大部分问题,但是随着用户访问量大幅度增加,而且有大量用户数据,以及后来互连网的普及,互连网平台就面临着很大的性能挑战NoSQL可以缓解CPU压力和IP压力,NoSQL可以作为缓存数据库,把一些常用的查询数据存储在缓存数据库中
NoSQL数据库
基本介绍
- NoSQL(
Not Only SQL
),意即不仅仅是SQL, 泛指非关系型的数据库 - 关系型数据库是按照业务逻辑存储有关联的数据,NoSQL 不依赖业务逻辑方式存储,而以简单的key-value模式存储。因此大大的增加了数据库的扩展能力。
- 不遵循SQL标准
- 不支持ACID
- 远远超过SQL的性能
NoSQL适用场景
随着互联网网站的兴起,传统的关系数据库在应付动态网站,特别是超大规模和高并发的纯动态网站已经显得力不从心,暴露了很多难以克服的问题。如商城网站中对商品数据频繁查询
、对热搜商品的排行统计
、订单超时问题
、以及微信朋友圈(音频,视频)存储等相关使用传统的关系型数据库实现就显得非常复杂,虽然能实现相应功能但是在性能上却不是那么乐观。nosql这个技术门类的出现,更好的解决了这些问题,它告诉了世界不仅仅是sql。
NoSQL适合下面的几个场景
- 对数据高并发的读写
- 海量数据的读写
- 对数据太高可扩展性
NoSQL不适用的场景
- 需要事务支持
- 基于sql的结构化查询存储,处理复杂的关系
常见的几种NoSQL数据库
- Memcache
- 很早出现的NoSQL数据库
- 数据存储在内存,一般来说不进行持久化
- 支持简单的key-value模式,支持类型单一
- 一般作为缓存数据库辅助持久化的数据库
- redis
- 基本上覆盖Memcache的绝大部分功能
- 数据都存储在内存里面,支持持久化,主要用来作为备份
- 除了支持key-value模式,还支持多种数据结构的存储,比如list,set,hash,zset
- 一般作为缓存数据库辅助持久化的数据库
- MongoDB
- 高性能,开源,模式自由的文档型数据库
- 数据都在内存中,如果内存不够的话,就把不常用的数据保存到硬盘里面
- key-value模式,不过对value(特别是json)提供了很丰富的查询功能
- 支持二进制数据以及大型对象
- 可以根据数据库的特点来替代RDBMS,成为独立的数据库。或者配合RDBMS,来存储特定的数据
NoSQL数据库分类
键值(Key-Value)存储数据库
行式数据库
把一行数据单独存储起来
列式数据库
文档型数据库
图形数据库