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