IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> [学习记录] Redis 1. NoSQL 数据库和 Redis 概述 -> 正文阅读

[大数据][学习记录] Redis 1. NoSQL 数据库和 Redis 概述

1. NoSQL 数据库简介

参考课程:https://www.bilibili.com/video/BV1Rv41177Af

参考书:https://blog.csdn.net/liu8490631/article/details/124290851

官方文档

1.1 技术发展

技术分类:

  1. 解决功能性问题:Java,JSP,RDBMS,Tomcat,HTML,Linux,JDBC,SVN
  2. 解决扩展性问题:Struts,Spring, SpringMVC,Hibernate,Mybatis
  3. 解决性能的问题:NoSQL,Java 线程,Hadoop,Nginx,MQ,ElasticSearch

1.1.1 Web 1.0 时代

PC → \to Web Server → \to DB Service

1.1.2 Web 2.0 时代

用户访问量大幅增加,同时产生了大量的用户数据。加上后来的智能移动设备的普及,所有的互联网平台都面临了巨大的性能挑战。
在这里插入图片描述

1.1.3 出现的原因1:为了解决 CPU 和 内存压力

n*PC → \to Nginx (反向代理,负载均衡 ) → \to 多个服务器

★★★★★:用户第一次登录,用户 session 保存在服务器 1,第二次访问可能到了服务器2,但是服务器 2 中没有该用户的 session,怎么办?session 怎么存储?

方案 1:保存在客户端 cookie 里面。难保证安全性
方案 2:session 复制,将 session 复制到其他服务器。造成 session 数据冗余,节点越多,浪费越多。
方案 3:保存在文件服务器或者数据库里。大量 IO 问题。
方案 4NoSQL 缓存服务器,连接每个 Web 服务器。完全在内存中,速度快,数据结构简单。

1.1.4 出现的原因2:为了解决 IO 压力

在这里插入图片描述

1.2 NoSQL 数据库

1.2.1 概述

NoSQL = Not Only SQL,不仅仅是 SQL,泛指非关系型数据库

关系型数据库(如 MySQL),按照业务逻辑存储有关联的数据。

NoSQL 不依赖业务逻辑,而以简单的 key-value 模式存储。因此大大增加了数据库的扩展能力。

  • 不遵循 SQL 标准
  • 不支持 ACID(原子性,一致性,隔离性,持久性)
  • 远超于 SQL 的性能

1.2.2 NoSQL 适用场景

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

如商城秒杀。

1.2.3 NoSQL 不适用场景

  • 需要事务支持
  • 基于 SQL 的结构化查询存储,处理复杂的关系,需要即席查询
    (用户根据自己的需求,灵活的选择查询条件,系统能够根据用户的选择生成相应的统计报表。即席查询与普通应用查询最大的不同是普通的应用查询是定制开发的,而即席查询是由用户自定义查询条件的。)
  • 用不着 SQL 的和用了 SQL 也不行的情况,请考虑 NoSQL

1.2.4 Memcached

  • 很早出现的 NoSQL 数据库
  • 数据都在内存,一般不持久化
  • 支持简单的 key-value 模式,只支持普通的字符串键
  • 一般是作为缓存数据库辅助持久化的数据库

1.2.5 Redis

  • 几乎覆盖了 Memcached 的绝大部分功能
  • 数据都在内存中,支持持久化,主要用作备份恢复
  • 除了支持简单的 key-value 模式,还支持多种数据结构的存储,比如:list,set,hash,zset 等
  • 一般是作为缓存数据库辅助持久化的数据库

1.2.6 MongoDB

  • 高性能,开源,模式自由(schema free)的文档型数据库
  • 数据都在内存中,如果内存不足,把不常用的数据保存到硬盘
  • 虽然是 key-value 模式,但是对 value(尤其是 JSON)提供了丰富的查询功能
  • 支持二进制数据以及大型对象
  • 可以根据数据的特点替代 RDBMS,成为独立的数据库,或者配合 RDBMS,存储特定的数据

1.3 行式存储数据库(大数据时代)

1.3.1 行式数据库

找某一行较快,但是找某一列的数据较慢

1.3.2 列式数据库

找某一行较慢,但是找某一列的数据较块

1.3.2.1 Hbase

Hbase 是 Hadoop 项目中的数据库。用于需要对大量数据进行随机、实时的读写操作的场景中。
Hbase 的目标就是处理数据量非常庞大的表,可以用普通的计算机处理超过 10 亿行数据,还可以处理有数百万列元素的数据表。

1.4 图关系型数据库

Neo4j
主要应用于:社会关系,公共交通网络,地图及网络拓扑(n*(n-1)/2)

1.5 DB-Engines 数据库排名

https://db-engines.com/en/ranking
在这里插入图片描述

2. Redis 概述

  1. 开源K-V 存储系统。
  2. 支持存储的 value 类型:
    • string 字符串
    • list 链表
    • set 集合
    • zset 有序集合
    • hash 哈希类型
  3. 上述类型都支持 push/pop,add/remove ,这些操作都是原子性的。
  4. 支持各种不同方式的排序
  5. 数据存在内存中
  6. Redis 可以周期性地把更新的数据写入磁盘或者把修改操作写入追加地记录文件
  7. 实现 master-slave (主从)同步

2.1 应用场景

2.1.1 配合关系型数据库做高速缓存

  • 高频次,热门访问的数据,降低数据库 IO
  • 分布式架构,做 session 共享

2.1.2 多样的数据结构存储持久化数据

  1. 排行榜,Top-N:
    • 利用 zset 有序集合
  2. 手机验证码:
    • Expire 过期
  3. 计数器,秒杀:
    • 原子性,自增方法 INCR,DECR
  4. 去除大量数据中的重复数据:
    • set 集合
  5. 构建队列:
    • 利用 list
  6. 发布订阅消息系统:
    • pub/sub 模式
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-09-13 11:22:42  更:2022-09-13 11:24:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:41:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码