Database

ElasticSearch 包括或 vs 數據庫?

  • May 19, 2018

我試圖了解 ElasticSearch 在持久性方面的確切作用。

當我在 ElasticSearch 中索引文件時,我也在此步驟中將它們保存在 ElasticSearch 中。雖然我使用 ElasticSearch 索引我的文件的原因是能夠使用 API 和某些搜尋算法來搜尋它們。

然後,對於我的應用程序的其餘部分,我還有一個關係數據庫,我在其中儲存了很多關於我的應用程序的東西。在關係數據庫中,我也有在 ElasticSearch 中索引的相同文件。

結果,我將文件保存在 ElasticSearch 和關係數據庫中。我學習了 ElasticSearch 以獲得擴展的搜尋能力,但現在我想知道將文件保存在 ElasticSearch 和關係數據庫中的步驟是否有點多餘。

從關係數據庫中刪除文件並使用 ElasticSearch 中的索引文件作為數據源是否明智?

也許。這是一個設計決策,我們在DBA Stack Exchange的朋友可能有更多話要說。有時,由於不同的搜尋或報告需求,或者俱有不同特徵的數據庫引擎,您會製作冗餘副本。

作為此設計的一部分,請了解 Elasticsearch 的安全性,尤其是因為它是一個分佈式系統。Jepsen 的報告特別有趣。在某些情況下,網路分區可能會導致文件失去:

我對 Elasticsearch 使用者的建議沒有改變:將您的數據儲存在具有更好安全保障的數據庫中,並不斷地將該數據庫中的每個文件更新插入到 Elasticsearch 中。如果您的搜尋引擎一天失去了一些文件,那沒什麼大不了的;它們將在下次執行時重新插入並出現在後續搜尋中。不使用 Elasticsearch 作為記錄系統也使您不必擔心選舉期間的 ES 停機。

一個實際的例子,我知道一家擁有龐大的 MediaWiki 的企業在 Elasticsearch 中建構了一個搜尋引擎。wiki 和其他來源擁有自己的 DBMS,支持大量 CRUD 應用程序。然後將數以千萬計的各種文件塞進搜尋引擎,人們通常可以找到東西。

引用自:https://serverfault.com/questions/912799