Redis指南【1】为什么时间选择了NoSQL?

一、前言

在正式学习redis之前,我们需要问自己一个问题,NoSQL它是怎样发展出来的?为什么我们要使用它?互联网的数据库是怎样的发展历程?带着这些疑问,让我们开始下面的阅读吧。

二、互联网架构演变过程

我们知道数据库的演变过程是分三个阶段的,由开始的人工管理阶段 到文件系统阶段再到如今的数据库阶段。而在当今数据库情形下,出现了各种各样的数据库,呈现百花齐放的情形。最终大致分为关系型数据库和非关系型数据库两种。

2.1 单机mysql 时代(1w以下请求)

在互联网刚刚萌芽的时代,网民数量不多,一般的网站的访问量也不大,单个数据库可以轻松应付

此时数据存储的瓶颈取决于:

  • 1、数据量的总大小
  • 2、数据的索引(一个机器内存放不下)
  • 3、访问量一个实例不能承受(未进行读写分离)
2.2 Memcached(缓存)+mysql + 垂直拆分

在09年之后,memcached技术开始普及,它作为一个独立的分布式缓存服务器,为多台web服务器提供了一个共享的高性能缓存服务,通过这种缓存来缓解数据库的压力,同时mysql数据库也开始垂直拆分

2.3 Mysql 主从读写分离

由于数据库的写入压力增加,Memcached 只能缓解数据库的读取压力。读写集中在一个数据库上造成数据库达到瓶颈,就出现了主从复制模式完成读写分离技术。主库负责写的操作,从库负责读的操作。

2.4 分库分表 +水平拆分+ mysql集群

在Memcached的高速缓存,mysql的主从复制,读写分离之后。还存在的问题是当数据量持续猛增的时候,mysql主库面临着很大的写压力,造成严重的锁问题,因此出现了行级锁的InnoDB引擎替代了之前表级锁的MyISAM。在复杂的业务下,出现了mysql集群。也就是多个主从复制。

2.5 以mysql代表的关系型数据库瓶颈

mysql数据库在存储大数据的时候在进行数据导出和恢复的时候非常慢,同时在存储上千万的数据的时候会存在很多瓶颈,另外它存在着强关系结构,就是关系型数据库的表结构具备很强的约束,典型的就是三大范式,表的结构修改不够灵活,速度也没有Nosql快。

因此,术业有专攻,它并不能应对所有的场合,随着大数据时代的来临,我们可能需要采用 nosql 来进行数据处理和挖掘。

三、Nosql 崛起

Nosql 是非关系型数据库,称为not only sql。NoSQL 是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储。

它针对关系型数据库进行了补充,弥补了一定的缺陷,但同时也丢失了一些特性,例如事务功能的缺失。通常情况下,我们可以这样考虑,如果我们的数据用不着sql 或者说用了sql 不行的情况,可以看看Nosql 是否满足我们的需求呢。

常见的NoSQL 分为5类:

  • k-v :代表redis
  • 文档型 :代表MongoDB
  • 列式存储型 :代表Hbase
  • 全文检索型: 代表Elasticsearch
  • 图形关系数据库:代表Neo4j,不是存图片,放的是关系。比如:社交网络,广告推荐

NoSQL的适用场景:

  • 对数据高并发的读写
  • 海量数据的读写
  • 对数据高可扩展的

NoSQL不适用场景:

  • 需要事务支持
  • 基于sql的结构化查询存储,处理复杂的关系。

四、小结

当然NoSQL本身具备着随意的特点,相对关系型数据来说它有着杂乱的结构,虽然它的查询是效率很高,但在实际场景中要看很多因素,最终形成的mysql + nosql 成为现在的开发主流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值