首先我們要知道的一點就是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(圖文解說詳細版)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/421429.html
標籤:其他
