請問mongodb , elasticsearch , mysql各有什麼優缺點?

時間 2021-06-04 10:31:04

1樓:oberon

在儲存上,mongodb和es是document格式的儲存,mysql是行格式的,因此mongo和es並不需要顯式定義字段,而mysql需要。

在架構上,es天然就是分布式的,這個可以很容易的橫向擴容,而mongo和mysql不行。

在針對場景下,es無法做到實時,而mysql和mongo可以,因此mysql和mongo支援的oltp對於es而言需要額外考慮下場景是否適用,可以認為es同時具有oltp和olap的特點,但兩邊都不是特別突出。

在資料儲存量及效能上,mysql由於其索引實現(innodb為例)導致在資料量大到一定級別後會出現效能衰減,而mongo和es只要給足足夠記憶體就沒太大問題(mongo記憶體不足時衰減的更為厲害,es不明)。插入速度上如果正確的配置mysql其效能並不低,當然相對於正常狀態mongo和es而言還是差了乙個到多個量級(es>mongo>mysql)。查詢速度這個主要看索引和數量,這個不太好說,mongo謎一樣的索引選擇曾經讓我糾結過很久,在需要複雜關聯查詢的時候建議優先考慮mysql。

資源開銷上當資料量上去了後如果為了維持效能的話,es吃記憶體的能力絕對可以傲視群雄,但畢竟沒有不吃草就能跑的快的馬兒。

易用性上當然是mysql>mongo>es,如果考慮使用mysql的話可以再考慮下postgresql,雖然小眾點,但有些mysql功能上的缺失會讓你寫sql寫到哭。

其實刨掉全文檢索場景,mysql(5.6以後)加上良好的設計就能很好的支援絕大部分需求了,所以不要太過於糾結到底用啥了。

2樓:趙三萬

從查詢角度來說,mysql是關係型資料庫,適合單條資料的查詢。es是分布式的儲存,利用倒排索引技術,適用於OLAP系統,即批量資料的查詢。es是近實時搜尋的,新寫入的資料,get介面可以立即搜尋到,search介面能夠搜尋到的時間和refresh的設定相關,預設是1s。

3樓:朱亮

過去大部分情況下,業務所需欄位已經確定了,就用mysql,實時新增查詢都挺快的。但是某些場景下業務所需的字段不確定,需要實時新增新的字段且查詢,用MongoDB方便點。然後就是es,做大量資料的儲存和查詢,效能也不錯,就是新插入的資料,並不會馬上被搜尋到,起碼也得幾秒鐘之後才能檢索出來。

請問Hadoop Spark Storm Flink的區別是什麼?分別適用什麼場景?

hadoop是乙個檔案系統,外加乙個離線處理框架 map reduce執行框架 主要用於海量資料檔案的儲存,非實時的海量資料的計算,不過由於提供的上層api不是太友好,加上mapreduce處理框架比較慢,現在基本上都拿它來作為檔案系統使用。spark是乙個執行引擎,本身不儲存資料,所以需要外部的檔...

請問 Eat clean, train sweaty 是什麼意思?什麼語法形式?

沒有查到相關的語法解釋。前半句有點兒類似 Play cool,play cute。有答案提到的stay是系動詞,和題目中的用法還是不同的。最好找大學老師問下吧。 答主非專業,只是推xia測cai了一下.Clean這裡是名詞的用法。同意樓上說的eat the clean things 類似於Do go...

請問tan tan x,arc tan(tan x),tan(arc tan x)都是怎麼算出來的?

Jameson tan tanx 這種就只能由內而外算,後兩個是反函式的性質,比如tanx有 0.25 1,那麼在arctanx就有1 0.25 因此arctan tan0.25 arctan1 0.25 tan arctan1 tan 0.25 1,可以簡單的理解為arctan tanx x,ta...