1. 程式人生 > >資料庫選型之MySQL vs ElasticSearch

資料庫選型之MySQL vs ElasticSearch

前言

  應用系統通常需要藉助資料預處理(如物化檢視等)來實現資料查詢加速的需求。目前業界主流資料庫主要有以下兩大類,一種是基於傳統RDBMS關係型資料庫來實現;另一種是基於NoSQL非關係型資料庫來實現。那麼問題來了,哪一種型別的資料庫更符合產品的需要呢?

  開源技術棧中,以應用最為廣泛的RDBMS關係型資料庫MySQL和NoSQL非關係型資料庫ElasticSearch(簡稱ES)為例,介紹下這兩類資料庫之間的區別和各自的優勢,然後再根據產品需求特性,很容易判斷哪類資料庫更適合產品的需要了。

MySQL vs ES

  MySQL作為開源關係型資料庫,應用範圍非常廣泛,非常適合於結構化資料儲存和查詢。在資料查詢場景下,預設返回所有滿足匹配條件的記錄;而ES作為新生代NoSQL資料庫代表之一,非常適合於非結構化文件類資料儲存、更創新支援智慧分詞匹配模糊查詢。比如在電商網站商品搜尋欄中,使用者輸入以空格為分隔符的字串(如:家電電視等),後臺ES資料庫搜尋引擎會根據使用者輸入的資訊,對資料庫中儲存的非結構化資料進行分詞模糊匹配查詢,返回滿足匹配條件的前N條記錄給使用者;另外ES更典型應用在於根據使用者瀏覽記錄日誌來追蹤使用者行為,智慧推送使用者期望瀏覽的資料資訊,此時通常藉助ELK三大元件互相配合完成。

  關於如何在MySQL和ES之間做到合理技術選型,ES官方網站也給出了指導性建議如下圖所示。從英文描述看,基本上和之前的介紹相符合。因此,如果業務資料為結構化資料,同時不需要特別關注排名和智慧分詞模糊匹配查詢等特性,則建議採用關係型資料庫如MySQL來作為資料儲存介質並使用配套搜尋引擎;反之,如果業務資料為非結構化資料,同時更關注排名和需要智慧分詞模糊匹配的特性,則建議採用非關係型資料庫如ES作為資料儲存介質並使用配套搜尋引擎。

blob.png

怎麼樣?還在猶豫到底使用哪種型別的資料庫嗎?看了這篇文章就自然就知道答案了,剩下就是大刀闊斧的開幹吧~