关于redis:redis-一NoSql演进史

62次阅读

共计 2536 个字符,预计需要花费 7 分钟才能阅读完成。

redis 系列文章:

https://liudongdong.top/categ…

本篇起源:

https://liudongdong.top/archi…

公众号: 雨中散步撒哈拉

备注:欢送关注公众号,一起学习,共同进步!

一、数据库演进史

1. 单机 MySQL 时代

在 web 初现峥嵘的那段时间,大部分网站都是应用的单机 MySQL 来存储用户数据,因为网站的用户与访问量不会太大,甚至大部分都应用额动态网页,与后端没有过多的交互,所以单机 MySQL 足矣

然而随着 web 的倒退带来的用户群体激增,瓶颈也就随之而来了,在单机 MySQL 时代,造成瓶颈的起因次要有

  1. 数据量太大,一个服务器硬盘存不下
  2. 读写混合,一个服务器性能有余
  3. 数据库索引太大,内存不足

2. 垂直拆分与缓存时代

起初,随着网站访问量的回升,应用单机 MySQL 的网站开始呈现了性能问题,因而程序员们将眼光从性能转移到了性能上

为了解决单机 MySQL 时代的有余,又对 MySQL 引入了 Memcached (缓存) 和垂直拆分 (读写拆散) 等计划

一个运行中的网站其大部分工夫都是在被用户进行查问操作,如果将读写拆分到不同的数据库中,就能够进步查问效率,所以数据库有了垂直拆分的计划,也就是数据库依据作用拆分为读服务器和写服务器,并利用主从复制保证数据正确,同时利用缓存加快速度

3. 程度拆分与集群时代

读写拆散与分库分表也满足不了用户数据的存储了,这时就呈现了对服务器的程度拆分,多个主从节点组成一个集群节点,而多个集群节点就组成了集群

4.  数据爆炸时代

在现在这个信息爆炸的时代,人们对于信息的实时性要求越来越高,互联网用户同样也越来越多,因而 MySQL 等关系型数据库就不够用了,因为数据量很大,数据变动也很快

通过对第三方平台的拜访和数据抓取,能够很容易的取得用户个人信息,社交网络,用户生成的数据和用户的操作日志曾经成倍的减少,对于这些构造并不确定的数据如果想要对这些数据进行深度的开掘,那关系型数据库就曾经不再实用了

二、什么是 NoSQL

NoSQL = Not Only SQL,即泛指非关系型数据库

因为 web2.0 时代的到来,互联网用户和数据量呈几何式回升,传统的非关系型数据库很难应酬大型网站的超大数据量和高并发,这就裸露进去了很多关系型数据库难以克服的问题

因为关系型数据库从实质上来说就是一张表格,是有固定构造的,并且所有的数据都必须遵循雷同的形式进行存储

而非关系型数据库是非结构化的,数据能够以多种形式存储,即能够面向文档存储,面向图像存储,甚至面向 K-V 存储等。Java 中的 Map 就是一种经典的 “NoSQL”,因为 Object 类型能够面向任何类型的对象

1. NoSQL 的特点

  1. 不便扩大,数据之间没有关系
  2. 大数据量存储,高性能 (redis 1s 能写 8w 次,读取 11w 条)
  3. 数据类型多样,不须要当时设计数据库

2. RDBMS 和 NoSQL 的区别

RDBMS

  1. RDBMS 应用结构化组织
  2. DDL,DQL,DML
  3. 数据和关系都存在独自的表中,只能以行和列进行存储
  4. ACID 准则,严格一致性
  5. 事务

NoSQL

  1. 没有固定的查询语言
  2. 存储形式多样化:键值对存储 (redis),列存储 (HBase),文档存储 (MongDB),图形数据库
  3. 最终一致性,只需保证数据的最终统一
  4. CAP 定理和 Base 实践 (异地多活)
  5. 高性能,高可用,高可扩

在公司中,肯定是 NoSQL + RDBMS 一起应用

3. 大数据时代的要求

大数据时代有 3V 和 3 高的概念

3V 用来形容大数据时代下数据的问题:

  1. 海量 (volume)
  2. 多样 (variety)
  3. 实时 (velocity)

3 高指的是大数据时代,程序所须要达到的规范:

  1. 高可用
  2. 高并发
  3. 高性能

三、阿里巴巴架构演进

阿里从 2010 年底,开始施行第五代网站架构革新,阿里巴巴对第五代架构有如下要求

  1. 麻利:需要的麻利开发,利用零碎的收缩和耦合好转使得架构越来越简单,该如何放弃业务的麻利开发
  2. 凋谢:如何晋升网站开放性,吸引第三方开发者退出到网站的共建
  3. 体验:并发压力快速增长,用户对体验的要求也越来越高

1.  数据层:数据架构的日益简单

简单的数据架构图

为了进步访问速度,一个商品的不同信息就可能来自不同的数据库

  1. 商品根本信息:名称,商家信息等,能够存储在关系型数据库中
  2. 商品的形容,评论:因为这部分的文字较多,因而存储在关系型数据库中可能会导致性能降落,因而应用的是文档型数据库,如 MongDB
  3. 图片:分布式文件系统。淘宝的 TFS,阿里云的 OSS,google 的 GFT,Hadoop 的 HDFS,以及 FastDFS,
  4. 关键字搜寻:solr,elasticsearch,淘宝应用的则是 Isearch
  5. 商品热门的波段信息:内存数据库 redis,tair,memache
  6. 商品的交易,内部领取接口:第三方利用

数据的多样性就带来了很多的问题

  1. 数据源繁多,数据源革新导致相干利用的大面积重构
  2. 跨数据源定位问题艰难,缓存和性能优化难以施行
  3. 数据架构简单,利用须要间接依赖多种类型的数据源

为了解决这些问题,阿里巴巴提出的解决形式是: 对立数据服务层 UDSL,在网站利用集群和底层数据源之间构建一层代理,对立数据层

减少了 UDSL 后的数据架构如下

UDSL 屏蔽了底层数据库的差别,应用对立的操作语言对不同的数据库进行操作,具体细节由 UDSL 进行保护

2. 热点缓存

应用了 UDSL 后,数据架构尽管失去了大幅的简化,然而性能问题仍然很重大。网站的数据十分宏大,缓存过多数据的性价比不高,因而缓存热点数据成了最好的抉择

因而阿里巴巴开发了热点缓存平台,提供给 UDSL 作为缓存零碎

四、NoSQL 四大类型

1. KV 键值对型

以键值对模式存储数据,常见的有 Redis,Tair,Memecache

2. 文档型

传输格局多为 Bson,和 Json 相似

常见的有 MongDB,MongDB 是基于分布式文件存储的数据库,应用 C++ 编写,次要用来解决大量的文档,MongDB 是非关系型数据库中性能最丰盛,最像关系型数据库的

此外还有:CouchDB,RavenDB …… 等

3. 列存储型

常见的有 HBase,和一些分布式文件系统

4. 图关系数据库

图关系数据库并不是用来存储图片的,而是用来存储关系和构建关系图谱的,比方:社交网络,朋友圈,广告举荐等

常见的有:Neo4j,InfoGrid …… 等

5. 四者比照

正文完
 0