✨ NoSQL数据库简介
- NoSQL引入
- NoSQL数据库
- 基本介绍
- NoSQL适用场景
- NoSQL不适用的场景
- 常见的几种NoSQL数据库
- NoSQL数据库分类
- 键值(Key-Value)存储数据库
- 行式数据库
- 列式数据库
- 文档型数据库
- 图形数据库
个人主页:不断前进的皮卡丘
博客描述:梦想也许遥不可及,但重要的是追梦的过程,用博客记录自己的成长,记录自己一步一步向上攀登的印记
个人专栏:微服务专栏
参考视频:尚硅谷
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)存储数据库
# 1.说明: - 这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。# 2.特点- Key/value模型对于IT系统来说的优势在于简单、易部署。 - 但是如果DBA只对部分值进行查询或更新的时候,Key/value就显得效率低下了。# 3.相关产品- Tokyo Cabinet/Tyrant,- Redis- SSDB- Voldemort - Oracle BDB
行式数据库
把一行数据单独存储起来
列式数据库
# 1.说明- 这部分数据库通常是用来应对分布式存储的海量数据。# 2.特点- 键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。# 3.相关产品- Cassandra、HBase、Riak.
文档型数据库
# 1.说明- 文档型数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可 以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高# 2.特点- 以文档形式存储# 3.相关产品- MongoDB、CouchDB、 MongoDb(4.x). 国内也有文档型数据库SequoiaDB,已经开源。
图形数据库
# 1.说明- 图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。- NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。# 2.特点# 3.相关产品- Neo4J、InfoGrid、 Infinite Graph、