Redis基础(一)之NoSQL非关系型数据库概述

868 阅读5分钟

第一章、Redis概述

1、NoSQL非关系型数据库概述

【1】 什么是NOSQL

NoSQL概念

  • Not Only SQL 通常指的是非关系型数据库,通常用于提升数据查询的速度,有时也叫缓存。Redis是非关系型数据库的一种。非关系型数据库不能代替关系型数据库,只是关系型数据库的补充。

    【1】非关系数据库的本质:内存存储(数据库存储运行在内存中)。如果不持久化,那么数据就会丢失。

    【2】数据之间不存在对应关系。

  • 关系型数据库:MySQL,Oracle,SQL Server等。数据与数据之间是有关系的:1对1,1对多,多对多。表中还有各种约束,数据添加进去的时候,约束的检查,关系型数据库还是事务控制。如果数据库中数据越来越多的时候,查询速度越来越慢。

    【1】数据存储本质:把数据存储在硬盘上(持久化存储)

    【2】使用数据表存储数据(表与表之间存在关联关系)

image-20200128121312829.png

【补充】关于内存和硬盘

image-20200128122855285.png

说明:

1.硬盘属于磁性材料,交互数据使用IO流。每秒1万次

2.内存:采用电容方式操作数据。读数据:11万/s 写数据:8万/s

NoSQL数据库的四大分类

按存储的格式分成:

键值(Key-Value)存储数据库:Map

这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。今天学习的Redis就是这种类型。Redis是使用C语言编写的,免费开源的。

列存储数据库

通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。如:Cassandra, HBase, Riak.

文档型数据库

文档型数据库可以看作是键值数据库的升级版,允许嵌套键值对。而且文档型数据库比键值数据库的查询效率更高。如:CouchDB, MongoDb

图形(Graph)数据库

图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。

【2】 非关系型数据库

1553420326769.png

非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。

优点
  1. 格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型,例如字符、整数类型。
  2. 速度快:nosql可以使用硬盘或者随机存储器RAM(也叫主存,是与CPU直接交换数据的内部存储器)作为载体,而关系型数据库只能使用硬盘;
  3. 成本低:nosql数据库部署简单,基本都是开源软件。
缺点
  1. 不提供sql支持,学习和使用成本较高;
  2. 无事务处理;(高版本也逐渐开始支持事务了)
  3. 数据结构相对复杂,复杂查询方面不方便。

【3】 为什么要使用NOSQL

具体表现为对如下三高问题的解决:

High Performance - 数据库高并发访问

在同一个时间点,同时有海量的用户并发访问。往往要达到每秒上万次读写请求。关系数据库应付上万次SQL查询还勉强顶得住,但是应付上万次SQL写数据请求,硬盘IO就已经无法承受了。

  • 如天猫的双11,从凌晨0点到2点这段时间,每秒达到上千万次的访问量。
  • 12306春运期间,过年回家买火车抢票的时间,用户不断查询有没有剩余票。

Huge Storage - 海量数据的存储

数据库中数据量特别大,数据库表中每天产生海量的数据。

类似QQ,微信,微博,每天用户产生海量的用户动态,每天产生几千万条记录。对于关系数据库来说,在一张几亿条记录的表里面进行SQL查询,效率是极其低下乃至不可忍受的。

High Scalability && High Availability- 高可扩展性和高可用性的需求

关系型数据库进行扩展和升级是比较麻烦的一件事,对于很多需要提供24小时不间断服务的网站来说,对数据库系统进行升级和扩展是非常痛苦的事情,往往需要停机维护和数据迁移。

非关系型数据库可以通过不断的添加服务器节点来实现扩展,而不需对原有的数据库进行维护。

疑问:非关系数据库存储什么样的数据呢?

用于查询比较多,增删改比较少的表。Redis相当于一个缓存,避免了mysql的重复查询。

image.png

小结

  1. 什么是NoSQL:Not Only SQL通常指定是非关系型数据库

  2. NoSQL有四大类

    • 键值对:redis
    • 列存储 hbase
    • 文档型存储:mongodb
    • 图形存储方式
  3. 使用NoSQL的优点

    解决三高问题:高并发,海量数据存储,高可扩展性和可维护性