前言
應用系統通常需要借助資料預處理(如物化視圖等)來實作資料查詢加速的需求。目前業界主流資料庫主要有以下兩大類,一種是基于傳統RDBMS關系型資料庫來實作;另一種是基于NoSQL非關系型資料庫來實作。那麼問題來了,哪一種類型的資料庫更符合産品的需要呢?
開源技術棧中,以應用最為廣泛的RDBMS關系型資料庫MySQL和NoSQL非關系型資料庫ElasticSearch(簡稱ES)為例,介紹下這兩類資料庫之間的差別和各自的優勢,然後再根據産品需求特性,很容易判斷哪類資料庫更适合産品的需要了。
MySQL vs ES
MySQL作為開源關系型資料庫,應用範圍非常廣泛,非常适合于結構化資料存儲和查詢。在資料查詢場景下,預設傳回所有滿足比對條件的記錄;而ES作為新生代NoSQL資料庫代表之一,非常适合于非結構化文檔類資料存儲、更創新支援智能分詞比對模糊查詢。比如在電商網站商品搜尋欄中,使用者輸入以空格為分隔符的字元串(如:家電電視等),背景ES資料庫搜尋引擎會根據使用者輸入的資訊,對資料庫中儲存的非結構化資料進行分詞模糊比對查詢,傳回滿足比對條件的前N條記錄給使用者;另外ES更典型應用在于根據使用者浏覽記錄日志來追蹤使用者行為,智能推送使用者期望浏覽的資料資訊,此時通常借助ELK三大元件互相配合完成。
關于如何在MySQL和ES之間做到合理技術選型,ES官方網站也給出了指導性建議如下圖所示。從英文描述看,基本上和之前的介紹相符合。是以,如果業務資料為結構化資料,同時不需要特别關注排名和智能分詞模糊比對查詢等特性,則建議采用關系型資料庫如MySQL來作為資料存儲媒體并使用配套搜尋引擎;反之,如果業務資料為非結構化資料,同時更關注排名和需要智能分詞模糊比對的特性,則建議采用非關系型資料庫如ES作為資料存儲媒體并使用配套搜尋引擎。

怎麼樣?還在猶豫到底使用哪種類型的資料庫嗎?看了這篇文章就自然就知道答案了,剩下就是大刀闊斧的開幹吧~
轉載于:https://www.cnblogs.com/lixiaochun/p/8488239.html