热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Redis狂神(1.NoSQL概述)学习笔记

文章目录1数据库的发展史2.为什么要用NoSQL3.什么是NoSQL4.NoSQl特点5.了解3V+3高6.数据架构分析1数据库的发展史单机MySQL用户→查询语句→数据库90年代

文章目录

  • 1 数据库的发展史
  • 2. 为什么要用 NoSQL
  • 3. 什么是 NoSQL
  • 4. NoSQl 特点
  • 5. 了解 3V + 3高
  • 6. 数据架构分析

1 数据库的发展史

  1. 单机 MySQL

    用户 → 查询语句 → 数据库

    90年代,一个基本的网站访问量不会太大,单个数据库完全够用了。

    且基本上使用的都是静态网页,所以服务器没有太大压力。

    这种情况下,整个网站的瓶颈:

    1、数据量如果太大,一个机器放不下
    2、数据的索引(使用的是 B+Tree),一个机器内存放不下
    3、访问量增大,一个服务器承受不了

  2. MemCached(缓存)+ MySQL + 垂直拆分

    Redis-狂神(1. NoSQL 概述)学习笔记
    数据增多,一个数据库放不下,就需要垂直拆分成多个数据库。

    网站 80% 的时间都在执行读操作,所以大部分的数据库复制读操作,少部分复制写操作,也就是使读写分离的技术。

    每次查询操作都要去访问数据库的话,数据库压力会很大。这种情况就需要使用缓存,来减轻数据库的压力。

    发展过程:优化数据结构和索引 → 使用文件缓存(IO) → MemCached

  3. 水平拆分 + MySQL 集群

    Redis-狂神(1. NoSQL 概述)学习笔记

    用户持续增多,少量数据库也满足不了需求了,就需要使用 MySQL 集群。每一个集群都具有 M(master)和 S (slave)

    把之前整个数据库进行拆分,把不同功能的数据进行拆分,减轻单个群的压力。

  • 此时数据库的引擎也发生了变化:
    之前是 MyISAM :表锁,查询数据锁住整个表,影响效率。
    后来是 InnoDB :行锁,查询数据锁住对应的那一行。
  1. 现阶段

    现在数据量巨大,且变化速度极快,所以 MySQL 这种关系型数据库处理起来就很吃力了。

    所以出现了很多新型的非关系型数据 ,专门存储大型文件、图片、博客……

2. 为什么要用 NoSQL

用户的个人信息、社交网络、地理位置、用户自己产生的数据、用户日志…… 数据量暴增。
这时就要使用 NoSQL 数据库,它可以很好的处理以上情况。

3. 什么是 NoSQL

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

泛指非关系型数据库。

  • 关系型数据库 :表格,以行和列作为表格,就像 Excel

随着 web2.0 的互联网的诞生,传统的关系型数据库,很难对付 web2.0 时代的产物 ,尤其是一些高并发的社区,也就暴露出来很多难以克服的问题。

NoSQL 在当今大数据环境下发展的十分迅速,Redis 是发展最快的,而且是我们当下必须要掌握的一个技术。

很多的数据类型用户的个人信息、社交网络、地理位置。这些数据类型的存储不需要一个固定的格式。不需要特定的格式就可以横向扩展的。

4. NoSQl 特点

  1. 方便扩展(数据间没有关系,很好扩展)
  2. 大数据量高性能(Redis 每秒写 8 万次,读取 11 万次,NoSQL 的缓存记录级,细粒度的)
  3. 数据类型是多样型的(不需要实现设计数据库,随去随用,如果是数据量十分大的表,很多人就无法设计了)
  • 传统的关系型数据库 和 NoSQL 对比

    传统的关系型数据库

    • 结构化组织
    • SQL
    • 数据和关系都存在单独的表
    • 操作,数据定义语言
    • 严格的一致性
    • ……

    NoSQL

    • 不仅仅是数据
    • 没有固定的查询语言
    • 键值对存储、列存储、文档存储、图形数据库
    • 保证最终一致性
    • CAP 定理 和 BASE 理论(异地多活)
    • 高性能、高可用、靠可扩展
    • ……

真正在实践中:NoSQL + 关系型数据库 一起使用才是最强的

5. 了解 3V + 3高

  • 大数据时代的 3V—— 主要是用来描述问题的
    1、Volume (海量数据)
    2、Varity (多样化)
    3、Velocity (实时性)

  • 大数据时代的 3高——主要是对程序的要求
    1、 高并发
    2、 高可扩(可以随时水平拆分)
    3、 高性能(保证用户体验和性能)

6. 数据架构分析

  • 思考问题:一个大型网站上的这么多内容都是放在一个数据库中的吗?

  • 常用的数据库

  1. 存储商品的基本信息

    名称、价格、商家信息 ……
    这些关系型数据库就都可以解决了——MySQL / Oracle

  2. 商品的描述、评论(文字较多的)

    文档型数据库:MongoDB

  3. 图片

    分布式文件系统 FastDFS
    淘宝的:TFS
    Google的:GFS
    Hadoop的:HDFS
    阿里云的:OSS

  4. 商品的关键字(搜索)

    搜索引擎 SOLR 、Elastic Search
    淘宝用的 : ISearch

  5. 商品热门的波段信息(秒杀)

    内存数据库
    Redis、Tair、MemCache

  6. 商品的交易,外部的支付接口

    三方应用

  • 大型互联网应用问题:
    1、数据类型太多
    2、数据源太多,经常重构
    3、数据要改造,大面积改造

推荐阅读
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • 分布式一致性算法:Paxos 的企业级实战
    一、简介首先我们这个平台是ES专题技术的分享平台,众所周知,ES是一个典型的分布式系统。在工作和学习中,我们可能都已经接触和学习过多种不同的分布式系统了,各 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • EST:西湖大学鞠峰组污水厂病原菌与土著反硝化细菌是多重抗生素耐药基因的活跃表达者...
    点击蓝字关注我们编译:祝新宇校稿:鞠峰、袁凌论文ID原名:PathogenicandIndigenousDenitrifyingBacte ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 深入解析 Synchronized 锁的升级机制及其在并发编程中的应用
    深入解析 Synchronized 锁的升级机制及其在并发编程中的应用 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 在当今的软件开发领域,分布式技术已成为程序员不可或缺的核心技能之一,尤其在面试中更是考察的重点。无论是小微企业还是大型企业,掌握分布式技术对于提升工作效率和解决实际问题都至关重要。本周的Java架构师实战训练营中,我们深入探讨了Kafka这一高效的分布式消息系统,它不仅支持发布订阅模式,还能在高并发场景下保持高性能和高可靠性。通过实际案例和代码演练,学员们对Kafka的应用有了更加深刻的理解。 ... [详细]
  • MongoDB Aggregates.group() 方法详解与编程实例 ... [详细]
  • 修复一个 Bug 竟耗时两天?真的有那么复杂吗?
    修复一个 Bug 竟然耗费了两天时间?这背后究竟隐藏着怎样的复杂性?本文将深入探讨这个看似简单的 Bug 为何会如此棘手,从代码层面剖析问题根源,并分享解决过程中遇到的技术挑战和心得。 ... [详细]
  • NoSQL数据库,即非关系型数据库,有时也被称作Not Only SQL,是一种区别于传统关系型数据库的管理系统。这类数据库设计用于处理大规模、高并发的数据存储与查询需求,特别适用于需要快速读写大量非结构化或半结构化数据的应用场景。NoSQL数据库通过牺牲部分一致性来换取更高的可扩展性和性能,支持分布式部署,能够有效应对互联网时代的海量数据挑战。 ... [详细]
  • 「驭龙」开源主机入侵检测系统了解一下
    「驭龙」开源主机入侵检测系统了解一下 ... [详细]
author-avatar
温柔842_259
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有