elasticsearch入門篇:數據存儲方式研究:elasticsearch數據存儲


之前的兩篇文章回顧:

第一篇介紹了數據庫索引在模糊搜素方面的局限性,介紹了Lucene是如何通過倒排索引解決這個問題的。簡單的介紹了一下倒排索引的存儲原理。

第二篇通過一個單元測試簡單的演示了一下插入和搜索的過程,最后給大家看了一下程序執行搜索和插入操作的時候,Lucene的工作目錄里面生成的幾個文件和文件的作用概要。

其實打開elasticsearch的工作目錄可以發現elasticsearch里面有和Lucene的工作目錄下相同的文件。接下來准備結合Lucene和elasticsearch講講這些文件。略過elasticsearch環境的搭建過程,直接進入工作目錄查看,對比如下(第一張是我安裝elasticsearch時候的安裝目錄,第二張圖片是我在跑上一篇單元測試用例時候指定的臨時文件夾,Lucene運行時候的臨時文件放在了這里):

可以看到:文件是一樣的。

然后我們來看外層的目錄結構,來體驗elasticsearch在Lucene基礎上做了什么,以及這么做的目的。

(1)首先說segements:因此可以看見每個

 

(2)然后說一下nodes:

可以看到默認有5個節點在elasticsearch啟動之后工作。點開任一node可以看到每個node都有一個index和一個translog:

Elasticsearch的index類似於關系型數據庫的庫的概念,在保存數據前,要先創建索引。在集群中index和node的關系如下圖:

 

 (3)再說index和translog:

然后說translog:上一篇文章說到Lucene里面segments文件是數據存儲最重要的文件。數據是由一個個segment組成的,數據先寫入內存,經過設置的時間間隔將該時間段寫入內存的數據全部刷到一個segment中,由於一段時間生成一個segment,避免了短時間內寫入一個較大的磁盤文件,segment多了之后會進行merge成更大的segment。因此最初的數據寫入的數據是在內存中完成,所以寫入效率非常高。但是寫入過程中如果掉電導致內存里面的數據沒及時落盤,就會出現丟失數據的問題,所以Elasticsearch基於此現象實現了translog,只有在segment數據落盤后,Elasticsearch才會刪除對應的translog。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM