Elasticsearch和mysql最直观的区别介绍

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

Elasticsearch简介

        术业有专攻!说Elasticsearch在搜索方面比mysql强大,倒不如说MySQL本身也不是为了查询大量的数据而诞生的,MySQL创建之初就是为了做大量数据存储来使用的!

        Elasticsearch是海量数据查询搜索引擎,广泛用于全文检索、日志分析、监控分析等场景。

        关于全文检索需要理解的就是:全文数据库是全文检索系统的主要构成部分。所谓全文数据库是将一个完整的信息源的全部内容转化为计算机可以识别、处理的信息单元而形成的数据集合。全文数据库不仅存储了信息,而且还有对全文数据进行词、字、段落等更深层次的编辑、加工的功能(也即是分词的功能),而且所有全文数据库基本都离不开有海量的信息数据库

        ES三大特点:

  • 轻松支持各种复杂的查询条件:分布式实时文件存储,采用倒排索引及自定义打分、排序能力与丰富的分词插件等,实现复杂查询条件的全文检索需求。

  • 可拓展性强:天然支持分布式存储,可简单实现上千台服务器的分布式横向火绒。

  • 高可用,容灾性能好:通过主备节点及故障自动检测与恢复,实现高可用。

Elasticsearch与mysql的概念对比:

Elasticsearch MySQL
Index(索引) Dotobase(数据库)
Type(类型) Table(数据表)
Dcoument(文档) Row(行)
Mapping Schema
Fields(字段) Column(列)

        那么Elasticsearch的索引为何这么高效,能在海量的数据中达到秒级甚至毫秒级的效果呢?最主要的原因就是它所用的倒排索引方式生成索引,避免全文扫描

倒排索引

说明:正排索引说的是通过文档来查找关键词,而倒排索引反之,是通过关键词来查找文档的形式

        通常 如果要正排索引,那么要把每个文档的内容拿出来查找是否有此单词,毫无疑问这样的话会导致全表扫描,那么用倒排索引会怎么查找呢,它首先会将每个文档内容进行分词,然后建立每个分词与包含有此分词的文档之前的映射关系,如果有多个文档包含此分词,那么就会按文档的权重将文档进行排序

关于查找数据时为什么要选Elasticsearch

        起初在创建项目的时候需要通过标题或是其他进行大量的模糊查询,数据量比较大,用MySQL进行查询就会相对吃力,这个时候就需要用到全文搜索的一种工具。而elasticsearch作为现如今非常火热的一种全文检索的工具,也就被优先使用了起来。

查询方面mysql的不足

说了这么多Elasticsearch的关于查询海量数据的好处,那么mysql在查询大量数据的时候到底有什么不足的地方。

带着这个问题跟大家说一下mysql对于查询数据来说所存在的不足

上述也提到了MySQL在当时诞生之初设计团队就希望它用来做海量数据存储,并不是为了应对海量数据下各种复杂条件的查询,说MySQL创建索引,不是可以提升查询速度吗,为什么说它不适合海量数据查询呢,有两个原因:

1、加索引确实可以提升查询速度,但我们知道存储都是需要成本的,如果你针对每一种情况都加索引,每加一个索引,就会创建一颗 B+ tree,如果是海量数据,将会大幅度增加存储成本,况且在 MySQL 中加多个索引最终在执行 SQL语句 的时候它依然会选择成本最低的那个索引,如果没有索引满足搜索条件,就会触发全表扫描,因此得出索引并不是建得越多越好。

2、依然会有些查询条件是 MySQL 加索引都没办法解决的!

结合这两点,我们知道,MySQL的查询能力还是有限的!

Elasticsearch其他有利于查询的功能

除了我们所提到的倒排索引以外,Elasticsearch分布式同样让其适合数据查询:

一个集群有多个node节点组成,每个index(索引)也是以分片的数据存在以多个node节点上,然后当有查询条件请求过来的时候,分别在各个node查询相应的结果并整合后便可。将查询压力分散到各个节点上,也避免了其对于磁盘、内存等处理能力与空间的不足

它还采用了主备分片提升搜索吞率,使用节点故障探测,RESTful的选主机制等提升了容灾能力等等(因为Elasticsearch是基于RESTful web接口),总之经过上面的简单总结大家只需要明白一点:Elasticsearch的分布式架构设计初衷就是为了支持海量数据查询

最后说一句,Elasticsearch在查询海量数据的时候占尽了优势,但是一般情况下在没有那么大的查询量时,也不一定要选用。因为Elasticsearch本身会占用了很大一部分运行内存!文章来源地址https://www.toymoban.com/news/detail-408482.html

到了这里,关于Elasticsearch和mysql最直观的区别介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • MarkDown学习笔记 直观全面详细

    为什么我们要学习 Markdown 呢?因为 Markdown 简单易学易上手,可以以纯文本格式编写文档,然后转换成有效的HTML文档,并且以导出 HTML 、Word、图像、PDF、Epub 等多种格式的文档,许多网站平台的文章、博客、论文均可用Markdown编写文章。 使用#号标记,可以表示1-6级标题, 随

    2024年01月22日
    浏览(46)
  • elasticsearch的副本和分片的区别

    es/elasticsearch的副本和分片的区别 一:概念 (1)集群(Cluster): ES可以作为一个独立的单个搜索服务器。不过,为了处理大型数据集,实现容错和高可用性,ES可以运行在许多互相合作的服务器上。这些服务器的集合称为集群。 (2)节点(Node): 形成集群的每个服务器称

    2024年02月11日
    浏览(47)
  • 机器学习之梯度下降法直观理解

            形象化举例,由上图所示,假如最开始,我们在一座大山上的某处位置,因为到处都是陌生的不知道下山的路,所以只能摸索着根据直觉,走一步算一步。在此过程中,每走到一个位置的时候,都会求解当前位置的梯度,沿着梯度的负方向,也就是当前最陡峭的位

    2024年02月21日
    浏览(41)
  • 【Git】更直观地学习Git命令

    本文参考于 Learn Git Branching 这个有趣的 Git 学习网站。 在该网站,可以使用 show command 命令展示所有可用命令。 你也可以直接访问网站的sandbox,自由发挥。 git commit git commit 将暂存区(staging area)的修改提交到本地版本库并创建一个新的提交,新提交会指向前一个提交,像是

    2024年02月07日
    浏览(69)
  • 时间序列聚类的直观方法

            我们将使用轮廓分数和一些距离度量来执行时间序列聚类实验,同时利用直观的可视化,让我们看看下面的时间序列:

    2024年02月06日
    浏览(38)
  • Elasticsearch keyword与text有什么区别

    1.支持分词,全文检索,支持模糊查询,支持精确查询,不支持聚合,排序操作; 2.最大支持的字符长度无限制,适合大字段存储; 3.将字段进行分词处理,然后再存入到es中; 使用场景:     1.存储全文搜索数据,例如:文章内容、地址、代码块;     2.默认结合standard ana

    2023年04月19日
    浏览(43)
  • 【halcon】灰度直方图直观理解与应用

    横坐标:是 0~255 表示灰度值的范围 纵坐标:是在不同灰度值下像素的个数! 那么灰度直方图的本质就是统计不同灰度下像素的个数! 它的直观目的,就是查看灰度的分布情况! 全局的阈值分割 threshold  threshold (ImageChannel3, Regions, 248, 255) 选择一个灰度范围,分割出在次范围

    2024年02月10日
    浏览(77)
  • C语言枚举类型enum(全面详细直观)

    维基百科的理解: 枚举类型用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。 定义:是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内。 我的理解: 枚举类型就是将一些比较固定的值一一列举出来 ,比如一年有十二个

    2024年02月06日
    浏览(78)
  • Elasticsearch:keyword类型和text类型的区别

    1.支持分词,全文检索,支持模糊查询,支持精确查询,不支持聚合,排序操作; 2.最大支持的字符长度无限制,适合大字段存储; 3.将字段进行分词处理,然后再存入到es中; 使用场景:     1.存储全文搜索数据,例如:文章内容、地址、代码块;     2.默认结合standard ana

    2024年02月10日
    浏览(55)
  • Python中super函数的详细用法,直观理解

    super相关的介绍文章看了无数遍,每次看得都云里雾里的,没过多久就忘了,只模糊知道跟MRO有关,但是稍微一复杂就不知道怎么回事了,本篇文章主要记录我对super的理解 super的作用就是执父类的方法,虽然这句话不完全对,但是也差不多是那么个意思了。 比如以单继承为

    2024年02月07日
    浏览(47)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包