ElasticSearch对标Mysql,谁能拔得头筹?

ElasticSearch对标Mysql,谁能拔得头筹?,第1张

ElasticSearch对标Mysql,谁能拔得头筹?

首先我们要知道的一点就是Mysql是使用C和C++开发的,而elasticsearch是用java语言开发的。
他们其实都含有存储数据的功能,所以我们可以理解他们都是一个数据库

由于早期原因,很多数据库厂商都借鉴了关系形数据库的模式,也就是库到表到字段,所以在早期的es中(5.X)他们对应的关系是这样的:

Elasticsearch: index   -->  type  -->   doc   -->  field

MySQL:          数据库   -->  数据表 -->   行    -->  列

但是到了7.X之后就彻底废除了type,具体的原因可以参考
Elasticsearch 为何要在 7.X版本中 去除type 的概念

所以5.x之后添加数据都是用以下的方式进行添加

POST index/_doc

没错,我们可以直接使用postman对其进行 *** 作

这样就大大加深了可 *** 作性,因为我们 *** 作数据库都是使用sql去进行 *** 作的,这使得我们在编写代码的时候都要使用类似于java的JDBC技术去连接数据库,而我们在 *** 作es的时候可以直接通过http请求去调用es的api,这使得他们与代码之间的自由度也就更高。

但是这样也带来了很多的弊端,就是会导致你存储在es中的数据并不安全,任何人在不知道账号和密码的前提下都能 *** 控你的es,甚至可以直接删库!!所以安全成了一个很大的问题:

Elasticsearch 如何安全加固

现在我们来看一下他们的查询速度如何
在数据量一致的情况下我们看到mysql的执行时间为33毫秒

同意是在es中查询23条数据,我们可以看到速度是5毫秒!

速度整整提升了6倍!!

这里就要归根于他们的底层索引结构了,es的底层索引结构是倒序索引,而Mysql中innoDB底层使用的是B+索引,所以这就决定了这两个的底层搜索方式就不同,这也印证了es确实是为了搜索而生的口号:

you know ,for search

但是我们我们要知道mysql是关系型数据库,es是非关系型数据库,所以二者还是有很大的差别,各自有各自的场景,所以大家根据实际的情况去取舍即可
如果你不知道他们的安装,可以参考我的教程:
Linux安装ElasticSearch以及Ik分词器(图文解说详细版)
Linux安装Mysql5.7(图文解说详细版)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5717891.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存