首先我们要知道的一点就是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对其进行 *** 作
但是这样也带来了很多的弊端,就是会导致你存储在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(图文解说详细版)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)