有了MySQL,为什么还要有NoSQL

这篇具有很好参考价值的文章主要介绍了有了MySQL,为什么还要有NoSQL。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 有了MySQL,为什么还要有NoSQL

 文章来源地址https://www.toymoban.com/news/detail-419628.html

🏆今日学习目标:

🍀MySQL和NoSQL的区别
创作者:林在闪闪发光
⏰预计时间:30分钟
🎉个人主页:林在闪闪发光的个人主页

 🍁林在闪闪发光的个人社区,欢迎你的加入: 林在闪闪发光的社区

目录

noSQL的大概意思

理论支撑

为什么需要NoSQL

为什么NoSQL有处理超大规模和超高并发的场景的优势

超大规模的问题

超高并发的问题

关系型数据库的特点

        NoSQL有哪些优势

         NoSQL有哪些劣势

NoSQL 使用场景

全方位对比


为了你在乎的东西值得冒险。

It's worth taking the risk for what you care about.

 有了MySQL,为什么还要有NoSQL

 

noSQL的大概意思


noSQL现在非常火,我看过的简历里面十个有九个都写了熟悉noSQL,但是对于noSQL背后的细节却很少有人能讲清楚,甚至连noSQL里面的这个no是什么意思都很多人搞错。这个no并不是not的意思,而是not only的缩写。不得不说这个缩写实在是很坑爹,单从字面上应该没人能猜出来它是这个意思。而且即使解读成not only SQL,还是有点云里雾里,不是很能精准地get到它的点。

因为SQL的英文全写是structured query language,也就是结构化查询语言的意思。它可以认为是一门特殊的编程语言,但“不仅仅是SQL”是啥意思?的确令人费解,所以我们从字面意思上去理解是不行的,我们需要从实际应用场景去理解。

SQL的应用场景是关系型数据库,比如我们常用的Oracle、MySQL,这些就是关系型数据库。我们理解数据库的时候,往往会从表的结构入手去理解。数据库当中存储的是一张张的表,表呢是一行行数据组成的,而每一行数据都有固定的字段。我想这点大家应该非常熟悉,即使没有学过数据库或者是像我这样已经还给老师的,应该或多或少都有印象。

但是为什么它会被叫做关系型数据库,而不是表结构数据库呢?

因为在数据库当中,关系要比表结构更重要。表结构只是一种形式,而数据库当中核心的设计理念其实是关系。这也是为什么我们学习数据库的时候都需要从ER图开始,而不是上来就讲数据库使用的方法,或者是SQL语言的细节。如果你想不明白这句话的含义,也没有关系,我们先放一放,最后再回到这个话题来。

问题来了,我们知道了常用的SQL数据库是关系型数据库,那么noSQL代表的数据库又是什么呢?

关于noSQL概念我至少看到了两种说法,一种说法是非关系型数据库,另一种说法是文档型数据库。我个人在理解的时候觉得这两种说法都不是非常完美,但相比之下显然是第二种更好,因为第一种说法完全没有给我们提供任何信息。文档型数据库这里的文档,并不是我们常规理解的一篇文档的含义,而是指的数据存储的结构和核心逻辑。

 

理论支撑

数据库分类,简单分成,关系型数据库核非关系型数据库。

有了MySQL,为什么还要有NoSQL

没错,NoSQL就属于非关系型数据库,它的理论支撑是CAP理论,CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三 大类:

  • CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
  • CP - 满足一致性,分区容忍性的系统,通常性能不是特别高。
  • AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。

 

有了MySQL,为什么还要有NoSQL 

为什么需要NoSQL

一句话是,传统关系型数据库处理不了超大规模和超高并发的场景。

这句话有些绝对,(如果不惜代价,拼命堆硬件,还是可以处理的),但是主要就是想表达这个意思,也是NoSQL的优势。其实有如下4个方面:

有了MySQL,为什么还要有NoSQL

为什么NoSQL有处理超大规模和超高并发的场景的优势

超大规模的问题

关联扩展性:关系型数据库存在类似Join这样多表查询机制,使得数据库在扩展方面很艰难。非关系型没有Join这样的操作。

超高并发的问题

关联处理速度:数据量达到一定规模时,由于关系型数据库的系统逻辑非常复杂,使得其非常容易发生死锁等的并发问题,所以导致其读写速度下滑非常严重。

关系型数据库的特点

 有了MySQL,为什么还要有NoSQL

NoSQL有哪些优势

 有了MySQL,为什么还要有NoSQL

也是非关系型数据库的优点有了MySQL,为什么还要有NoSQL 

 NoSQL有哪些劣势

 有了MySQL,为什么还要有NoSQL

NoSQL 使用场景

有了MySQL,为什么还要有NoSQL

 NoSQL有6大类应用,及各个代表

有了MySQL,为什么还要有NoSQL

全方位对比

有了MySQL,为什么还要有NoSQL

关系型数据库的核心逻辑就是存储关系,使用规范、各种技巧和特性,本质上都是围绕这个核心展开的。如果我们没有get到这一层就来使用数据库很容易走偏,很多匪夷所思的操作就是这么来的,比如有人在数据库当中存储前端页面的代码,比如把id拼接成一个字符串来实现存储多个值等等。这也说明了经典教材上的内容没有废话,每一个章节都有它预期的作用,因此当我们觉得某些内容没有用的时候,可能并不是教材错了,只是我们没有理解到位。

今天的文章就是这些,如果觉得有所收获,请顺手点个关注吧,你们的举手之劳对我来说很重要。

 

有了MySQL,为什么还要有NoSQL

 

 

 

到了这里,关于有了MySQL,为什么还要有NoSQL的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【UML】浅谈为什么要有UML?

    上高中的时候,经常使用一些软件,觉得这些软件挺有意思的,就一直很好奇系统这个东西是怎么构建出来的。直到后来,大学的时候上了一门叫做系统分析与设计的课程,从UML开始再到用Spring Boot和Vue写一个系统,慢慢的有一点点的概念,但是还是感觉迷迷糊糊。研究生的

    2024年02月05日
    浏览(55)
  • 为什么mysql使用的是B+树而nosql类型的数据库大多数使用的是LSM树

    MySQL和LSM Tree(一种基于日志的存储引擎)都是关系型数据库,但它们在数据结构的选择上有所不同。 MySQL使用B+树作为其默认的索引结构,因为B+树在某些方面比LSM树更适合作为默认的索引结构。B+树的查询和更新速度相对较快,而且它的写入操作通常是基于内存的。这意味着

    2024年02月06日
    浏览(100)
  • 既然有Map了,为什么还要有Redis?

    以下内容转自掘金 作者:哪吒编程 Redis可以存储几十个G的数据,Map行吗? Redis的缓存可以进行本地持久化,Map行吗? Redis可以作为分布式缓存,Map只能在同一个JVM中进行缓存; Redis支持每秒百万级的并发,Map行吗? Redis有过期机制,Map有吗? Redis有丰富的API,支持非常多的应

    2024年02月03日
    浏览(63)
  • 既然有 HTTP 协议,为什么还要有 RPC

    什么是HTTP HTTP 协议( H yper T ext T ransfer P rotocol),又叫做 超文本传输协议 。平时上网在浏览器上敲个网址就能访问网页,这里用到的就是HTTP协议。 什么是RPC RPC ( R emote P rocedure C all),又叫做 远程过程调用 。它并不是一个具体的协议,而是一种 调用方式 。 像之前的单体

    2024年02月09日
    浏览(38)
  • 既然有HTTP协议,为什么还要有RPC?

    我想起了我刚工作的时候,第一次接触RPC协议,当时就很懵, 我HTTP协议用得好好的,为什么还要用RPC协议?   于是就到网上去搜。   不少解释显得非常官方,我相信大家在各种平台上也都看到过,解释了又好像没解释,都在 用一个我们不认识的概念去解释另外一个我们不

    2024年02月09日
    浏览(35)
  • CentOS软件那么老为什么大家还要用它?

    作为一个专业的服务器系统,RHEL 系统理论上每一个软件包都有 RedHat 内部的人员负责维护,这个维护包括长期(和系统生命周期一样长)的开发、更新、测试、运维等。也就是说你能从 RHEL 系统源上获得的每一个软件包,出现问题都可以找 RedHat 负责。所以 RHEL 不可能无限制

    2024年02月01日
    浏览(50)
  • 数据结构与算法这么难,为什么我们还要学习?

    提到数据结构与算法,就一定会伴随着诸多所谓的坚持和抱怨。同时,还有两个词总是出现,一个是内功,是对知识的定位,一个是吃透,是对自己

    2024年01月19日
    浏览(53)
  • 97-TCP为什么要有一个“TIME_WAIT“的状态

    \\\"TIME_WAIT\\\"状态存在的原因主要有两点: 假设上图中用于确认服务器结束报文段6的TCP报文段7丢失,那么服务器将重发结束报文段,因此客户端需要停留在某个状态以处理重复收到的结束报文段.否则客户端将以复位报文段来回应服务器,服务器则认为这是一个错误,因为他期望的是一

    2024年02月01日
    浏览(57)
  • 为什么MCS-51 单片机总线和端口要有匹配的驱动电路?

            MCS-51系列单片机是一种广泛使用的8位微控制器,它通常用在嵌入式系统中。单片机的总线和端口可能需要额外的驱动电路,这取决于外部设备的电气特性和所需的电流能力。下面将从以下几个方面分析为什么驱动电路这么重要:          电流驱动能力: MCS-51单片机

    2024年02月20日
    浏览(53)
  • Java中有了equals(),为什么还有“==“

    背景:Java中“一切皆是对象”,为什么还有非对象的“==”? 在Java语言假设我们只进行OOP,所以Java代码都是由一个接着一个的类组成的。那么,对象之间比较,用equals()就可以了。 可为什么“==”在代码随处可见呢? Java是基于C++的,相比与C++,Java是一种更“纯粹”的面向

    2023年04月20日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包