✨ 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数据库简介_nosql


猿创征文| NoSQL数据库简介_nosql数据库_02


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

行式数据库

猿创征文| NoSQL数据库简介_nosql_03


把一行数据单独存储起来

列式数据库

猿创征文| NoSQL数据库简介_java_04

# 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、