【Redis 系列】redis 学习一,数据库的演进及 Nosql 的初步认知

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 【Redis 系列】redis 学习一,数据库的演进及 Nosql 的初步认知

【Redis 系列】redis 学习一,数据库的演进及 Nosql 的初步认知

Nosql

为什么要用 Nosql ?

咱们一起来看看数据库的发展过程

1、单机的 MYSQL 时代

应用访问数据库是 应用 – DAL 数据库访问层 – DB 数据库

image.png

在单机的 MYSQL 时代,数据都不会太大,而且网页也是静态网页,一般网站的访问量也小,因此单数据库就完全够用了

上面这种网站,瓶颈就会很明显:

  • 数据量变得大了,一个机器放不下如何处理
  • 数据的索引 (B+ Tree),一个机器的内存放不下了如何处理
  • 读写的访问量,一个服务器承受不了了如何处理

随着历史进程的演进,上面这种网站必然会面临如上问题,就必须要解决

2、Memecache + MYSQL + 垂直拆分

为了解决上面的问题,一个机器处理不过来,我们就放多个机器,但是如何保证数据的一致性呢?

因此就想到了读写分离,专门指定一个数据库用于写数据,其他数据库用于读取数据,并且其他的数据库会同步用于写数据的 MYSQL 中的数据

image.png

渐渐的发现每次请求,都需要去操作数据库,这样耗时耗力,需要改变

因此在访问数据库之前,加入了缓存服务器 Memcache,第一次读取数据库,第二次读取的时候在数据库不改变的情况下,读取 Memcache 中的数据,减小数据库的压力

image.png

这一块发展历程是这样的:

优化数据库的结构和索引 – 文件缓存(IO) – 缓存服务器 Memcache

3、分库分表 + 水平拆分 + MYSQL 集群

随着技术发展,业务也跟着飞越发展,也就带来了更多的问题

最开始我们使用的 MYSQL 使用的引擎的是 MyISAM,他是表锁,十分影响效率,当在高并发的情况下,问题尤为明显

后面就有了 MYSQL 的 InnoDB 引擎,他是行锁,随着业务的不停增长,就有了 MYSQL 集群

image.png

使用集群的方式,每一个集群存储一部分数据,若数据量仍然上升,那么继续增加集群部署

4、现在

由于现代的数据量真的非常大了,大数据时代了,MYSQL 关系型数据库就不够用了,现在数据量多,变化快,以前使用 MYSQL ,设计的时候,就得把所有字段,可能用到的字段,全部想清楚,设计明白,对于现在瞬息万变的时代,这就很难了

现在就会期望,例如存储文件的有文件服务器,存储图片的有图片服务器,有专门的数据库来存这些数据,那么 MYSQL 的压力就会小很多

现在 的互联网项目简单来看是这个样子的

image.png

对于这样的互联网项目,就非常需要 Nosql 了,Nosql 能处理上述出现的问题

Nosql 是什么?

Nosql

Not only sql , 不仅仅是 sql

泛指非关系型数据库,随着 web2.0 互联网的诞生,传统的关系型数据库很难对付 web2.0 时代了

例如现在互联网用户需要存储个人信息,定位信息,社交网络等等数据,Nosql 对于这些数据存储不需要用一个固定的格式就可以存储,而且很轻易就可以横向扩展,例如Map ,使用键值对来控制就很 nice 了

Nosql 的特点

  • 方便扩展,因为数据之间没有关系,很容易扩展
  • 高性能,例如 redis 1 秒能写 8 万次,能读 11 万次,且 Nosql 的存储是记录级别的,是一种细粒度的缓存,因此性能高
  • 数据类型多样,不需要事先设计数据库

咱们来对比一下传统型的关系型数据库(RDBMS)和 Nosql

RDBMS

  • 结构化组织
  • sql 语句
  • 数据和关系都存在单独的表中
  • 数据操作,数据定义语言
  • 严格的一致性
  • 事务处理 等等

Nosql

  • 不仅仅是数据
  • 没有固定的查询语言
  • 键值对存储,列存储,文件存储,图形数据库 例如社交关系等等
  • 最终一致性
  • CAP 定理和 BASE 原理
  • 高可用,高性能,高可扩展

顺便一起分享一下 3 V 和 3 高分别是什么:

3 V,主要是用来描述问题的:

  • 海量数据 volume
  • 多样性 variety
  • 实时性 velocity

3 高,主要是用来描述对程序的要求

  • 高并发
  • 高性能
  • 高可扩展

Nosql 的四大分类

KV 键值对:

  • Redis

C 编写的,单进程的 Nosql, 阿里,腾讯,百度,字节等公司都在用使用

文档型数据库:

  • Mongdb

Mongdb 是一个基于分布式文件存储的数据库,C++ 编写的,主要用来处理大量的文档

Mongdb 还是一个介于关系型数据库和非关系型数据库中间的产品,他是非关系型数据库中功能最丰富的,最像关系型数据库的非关系型数据库

列存储型数据库:

  • HBase
  • 分布式文件系统

图关系型数据库:

  • Neo4j
  • InfoGrid

图关系型数据库不是存储图形,而是存放关系,例如社交关系网络

image.png

咱们来对比一下上述四种分类:

image.png

图片来源于网络,这张图片已经很清晰的描述了KV 键值对,文档型数据库,列存储数据库,图形数据库的案例,数据模型,优缺点,现在对于 Nosql 会有了一个大体的认知了吧

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

image.png

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
1月前
|
缓存 NoSQL 算法
17- 数据库有1000万数据 ,Redis只能缓存20w数据, 如何保证Redis中的数据都是热点数据 ?
保证Redis中的20w数据为热点数据,可以通过设置Redis的LFU(Least Frequently Used)淘汰策略。这样,当数据库有1000万数据而Redis仅能缓存20w时,LFU会自动移除使用频率最低的项,确保缓存中的数据是最常使用的。
63 8
|
13天前
|
消息中间件 NoSQL OLAP
doris数据库是否可以替代redis
【4月更文挑战第20天】doris数据库是否可以替代redis
279 0
|
13天前
|
存储 NoSQL 关系型数据库
Redis_非关系型数据库
Redis_非关系型数据库
|
17天前
|
缓存 NoSQL 关系型数据库
在Python Web开发过程中:数据库与缓存,MySQL和NoSQL数据库的主要差异是什么?
MySQL与NoSQL的主要区别在于数据结构、查询语言和可扩展性。MySQL是关系型数据库,依赖预定义的数据表结构,使用SQL进行复杂查询,适合垂直扩展。而NoSQL提供灵活的存储方式(如JSON、哈希表),无统一查询语言,支持横向扩展,适用于处理大规模、非结构化数据和高并发场景。选择哪种取决于应用需求、数据模型及扩展策略。
26 0
|
18天前
|
SQL Java 数据库连接
Java从入门到精通:2.3.1数据库编程——学习JDBC技术,掌握Java与数据库的交互
ava从入门到精通:2.3.1数据库编程——学习JDBC技术,掌握Java与数据库的交互
|
18天前
|
存储 网络协议 关系型数据库
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
|
22天前
|
NoSQL MongoDB Redis
Python与NoSQL数据库(MongoDB、Redis等)面试问答
【4月更文挑战第16天】本文探讨了Python与NoSQL数据库(如MongoDB、Redis)在面试中的常见问题,包括连接与操作数据库、错误处理、高级特性和缓存策略。重点介绍了使用`pymongo`和`redis`库进行CRUD操作、异常捕获以及数据一致性管理。通过理解这些问题、易错点及避免策略,并结合代码示例,开发者能在面试中展现其技术实力和实践经验。
312 8
Python与NoSQL数据库(MongoDB、Redis等)面试问答
|
1月前
|
存储 缓存 NoSQL
Redis 服务器指南:高性能内存数据库的完整使用指南
Redis 服务器指南:高性能内存数据库的完整使用指南
|
存储 缓存 负载均衡
学会这15点,让你分分钟拿下Redis数据库
介绍Redis技术入门的一些基础知识点
学会这15点,让你分分钟拿下Redis数据库
|
存储 NoSQL 数据库
学会这15点,让你分分钟拿下Redis数据库
原文:学会这15点,让你分分钟拿下Redis数据库 1、Redis简介 REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。
1145 0