【Redis】NoSQL概述

学习是为了让自己过得更加体面

NoSQL概述

1、为什么要使用NoSQL

到了二十世纪之前,网站访问量不是很大,大多数网站都是使用的单机。

到了二十世纪之后,互联网用户数量增多,网站访问量增加,单机不能满足网站的需求,巨增的访问量导致服务器宕机,造成经济损失,主要为了解决:1、数据量太大;2、网站访问量太大;3、用户对数据的读写操作更加频繁等问题。

解决方法:对数据库进行优化(垂直拆分,分库分表,读写分离),同时大部分网站用户 80% 的操作都是读取数据,为了减轻数据库的压力,所以增加缓存就成了刚需。

解决方法的发展过程:1、优化数据结构与算法;2、文件缓存(IO);3、缓存(Redis)。

解决数据库的问题主要就是解决读、写操作速度问题

2010年到2020年之间,世界发生了翻天覆地的变化,安卓的出现,地图,数据热榜,音乐,图片,文档,视频等数据的快速发展。导致 MySQL 等关系型数据库不够用了(IO压力),不能够很好很快的处理这些数据量大,变化快的数据。如果有一种数据库专门处理这种数据,MySQL 等关系型数据库的压力就会变得十分小,相应的就出现了非关系型数据库 NoSQL。

使用 NoSQL 为了使得不同的数据类型找到相应的解决办法,减轻关系系型数据库的压力。

2、什么是NoSQL

NoSQL = Not Only SQL(不仅仅是 SQL)

泛指非关系型数据库的,随着 web 2.0 互联网的诞生,传统的关系型数据库很难处理 web 2.0 的大数据,NoSQL 在当今的

3、NoSQL优势

MySQL 使用 Query Cache (查询缓存),每次表的更新 Cache 就失效,而 NoSQL 的 Cache 是记录级的,同时 Redis 官方说 Redis 每秒读取 11 万次,写 8 万次。

RDBMS
- 结构化组织
- SQL语言
- 数据和关系都存在单独的表中
- 严格的一致性(每一步数据都必须要一致)
- 基础的事务
- ...

NoSQL
- 不仅仅是数据
- 没有固定的查询语言
- 键值对存储、列存储、文档存储、图形数据库
- 最终一致性(最终的结果保持一致即可,不要求过程一致)
- CPA定理和BASE (异地多活)
- 高性能、高可用、高可扩展
- ...

4、分类

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

相关产品: Redis、MemcacheDB

典型应用: 内容缓存,日志,主要用于处理大量数据的高访问负载。

数据模型: Key 指向 Value 的键值对,通常用 Hash Table 实现

优势: 快速查询

劣势: 存储的数据缺少结构化,通常只能被当做字符串或者二进制数据

列存储数据库

相关产品:Cassandra、HBase、Riak

典型应用:分布式的文件系统

数据模型:以列簇式存储,将同一列数据存在一起

优势:查找速度快,可扩展性强,更容易进行分布式扩展

劣势:功能相对局限

文档型数据库(BSON格式和JSON一样)

相关产品:CouchDB、MongoDB

典型应用:Web应用(与Key-Value类似,Value是结构化的)

数据模型: 一系列键值对

优势:数据结构要求不严格

劣势: 查询性能不高,而且缺乏统一的查询语法

图形(Graph)数据库

相关数据库:Neo4J、InfoGrid

典型应用:社交网络,朋友圈,广告推荐,推荐系统

数据模型:图结构

优势:利用图结构相关算法(注意:图形数据库不是用来存储图片的)

劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案

© 2019 - 2022 · Home · Theme Simpleness Powered by Hugo ·