有了ElasticSearch为什么还要用MySQL?-这篇文章告诉你
首先是对于标题的回答:因为ElasticSearch不支持事务!
什么是ElasticSearch?
ElasticSearch是一个分布式,高性能,高可用,可伸缩,RESTful风格的搜索和数据分析引擎,是一款近实时的全文搜索引擎,从添加数据到搜索只有1秒的延迟,查询是实时的,这么强大的功能源于它的数据结构:倒排索引.但是ES是不支持事务的
何为全文搜索?
全文搜索是指计算机索引程序通过扫描文章中的每一个词,对每一个词都建立一个索引,并记录该词在文章中出现的次数(频率)和位置,当用户查询的时候,检索程序就根据事先建立的索引进行查找,并将查找的结构返回给用户.
何为倒排索引?
倒排索引是帮助ES找到目标数据的数据结构,也就是各种查询都是从倒排索引里面查询的,需要注意的是这里的索引并不是MySQL数据库里面的索引
倒排索引里面重要的元素有四个:词条,文档ID,频率和位置
词条:数据存在索引库中是需要分词的,这也是ES查询的快的原因之一,有很多分词器可以使用
文档ID:指的是这个词条所在的那一行的ID
频率:频率指的是这个词条出现的次数
位置:位置指的是这个词条出现在哪个具体的位置
试想,你一篇文章的数据都一个一个分词放在了库里,等你搜索的时候要找到这个词不就是简简单单的事儿吗?
为什么不用MySQL实现全文搜索?
MySQL是传统的关系型数据库,是当下web应用开发中最流行的关系型数据库.是支持事务的!但是MySQL也是有缺点的,如果需要全文进行模糊搜索,MySQL性能是非常低的.例如如下场景:
假如有一张手机信息表,里面有1亿的数据,我想要在从中搜索我想要的手机,比如"华为手机""1万元以下",如果用MySQL实现的话可能会这样写:select * from phone where phone_brand like "%关键词%".这样做理论上是可以查到相关数据的,但是如果我这时候想换个说法,换成"1万元以下"和"华为手机",只要调换个顺序,Like关键词就匹配不到了.而且LIKe是全表扫描的操作,数据量大的情况下这是非常消耗性能的.这时候就需要用到ElasticSearch来解决
ElasticSearch和MySQL在工作中的应用场景:先保存一份数据到MySQL,再保存一份到ElasticSearch,在ES中搜索
为什么ElasticSearch这么厉害不能取代MySQL?
MySQL虽然在数据全文检索方面显得有些力不从心,但是因为它的事务功能特性,可以保证不会出现脏数据.而ES并不支持事务,所以不是很适合存储原始数据.所以在工作中都是两个一起使用,一方面利用MySQL保证原始数据的安全性,另一方面利用ElasticSearch来进行全文搜索.
有了ElasticSearch为什么还要用MySQL?-这篇文章告诉你相关推荐
- elasticsearch 数据类型_基于 MySQL Binlog 的 Elasticsearch 数据同步实践
来源;马蜂窝 一.背景 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品.订单等数据的多维度检索. 使用 Elasticsearch 存 ...
- 全文搜索引擎Elasticsearch,这篇文章给讲透了
之前已经分享过Elasticsearch的使用和原理的知识,由于近期在公司内部做了一次分享,所以本篇主要是基于之前的博文的一个总结,希望通过这篇文章能让读者大致了解Elasticsearch是做什么的 ...
- Elasticsearch搜索引擎该怎么使用,这篇文章彻底讲透(荣耀典藏版)
目录 前言 一.先说说 Lucene 二.ES 核心概念 2.1.集群(Cluster) 2.1.1.发现机制 2.1.2.节点的角色 2.1.3.脑裂现象 2.2.分片(Shards) 2.3.副本 ...
- 面试官出的MySQL索引问题,这篇文章全给你解决!
原文链接:blog.ouyangsihai.cn >> MySQL的B 树索引的概念.使用.优化及使用场景 在看这篇文章之前,我们回顾一下前面的几篇关于MySQL的文章,应该对你读下面的文 ...
- 超详细图解!【MySQL进阶篇】存储过程,视图,索引,函数,触发器
超详细图解![MySQL进阶篇]存储过程,视图,索引,函数,触发器 1.1 下载Linux 安装包 1.2 安装MySQL 1.3 启动 MySQL 服务 1.4 登录MySQL 2\. 索引 2.1 ...
- Mysql基础篇(1)—— 基础概念、DML基本语法和表连接
前言 Mysql基础篇相关的内容是看了康师傅的视频做的笔记吧 数据库相关概念 DB: 数据库(Database) 存储数据的仓库,本质是一个文件系统.它保存了一系列有组织的数据. DBMS:数据库 ...
- 最全MySQL基础篇
文章目录 导入表的问题 第三章_最基本的SELECT语句 1. SQL语言的规则和规范 1) 基本规则 2) SQL大小写规范(建议遵守) 3) 注释 4) 命名规则 2. 基本的SELECT语句 1 ...
- 黑马MySQL进阶篇笔记
目录 MySQL进阶篇 一.存储引擎 1.1 Mysql体系结构图 1.2 存储引擎 1.概念 2.InnoDB 3.MyISAM 4.Memory 5.三种引擎对比 6.引擎的选择 1.3 安装my ...
- MySQL高级篇知识点——其它数据库日志
目录 1.其他数据库日志 1.1.日志类型 1.2.日志的弊端 2.慢查询日志 (slow query log) 3.通用查询日志 (general query log) 3.1.问题场景 3.2.查 ...
最新文章
- ASIC设计的一些软件
- Python3快速入门(五)——Python3函数
- 使用mysql做saas_一种SaaS企业平台数据库系统及其连接方法与流程
- C++重载流插入运算符与流提取运算符
- 相机标准之onvif---开放型网络视频接口论坛onvif 简介
- mysql 条件触发器_具有条件的MySQL更新触发器(MySQL Update Trigger with Conditions)
- InnoDB与Myisam的六大区别
- Node.js开发框架Express4.x
- Python工具箱系列(十一)
- USB转串口电路之CH340G
- 简单自定义MVC优化
- canvas轨迹运动, 利用向量实现点匀速运动
- python中 {0:2.2f}与{1:2.2f}的区别
- MOOS-ivp 实验五 MOOS编程进阶(2)
- winrar v3.8 的注册码
- 夜深人静写算法(三十七)- 威尔逊定理
- DebugView工具使用方法
- Android零基础开发到项目实战
- SQL server-数据库的查询(初级)
- 区块链投资基金致力于银行的一亿美…