ES數據庫系統


elasticsearch 與 傳統數據庫的區別與選用

1:ES

ElasticSearch是一款分布式全文檢索框架,底層基於基於Lucene實現。

ElasticSearch 使用 JSON 格式存儲數據,屬於文檔存儲

 

2:遍歷方式

ES有分片的概念,一個大的索引會被分成多個分片來進行存儲數據,使用分布式的架構對分片進行並行搜索(基於倒排)

傳統數據的遍歷,屬於正向全表掃描

 

3:ES采用倒排索引,傳統數據庫采用B+樹索引

倒排索引:

對文本進行分詞處理,記錄單詞,詞頻,文本id等信息,搜索時基於內容(根據單詞和詞頻詞向量等來計算評分)來找文本id

B+樹索:

一種樹的數據結構,存儲時會根據內容生成一個數節點,搜索時時跟據節點id來查找內容

4:es的注意點

ES沒有事務的概念,不支持回滾,無法恢復刪除數據

 

5 : 選用

在面對大數據量簡單計算的時候es的效率遠高於mysql等傳統數據庫,但是在定位某一個唯一值(如用會員id找會員)時並不需要es

在大數據的相似計算與查找或簡單計算時,es的分布式並行計算有絕對的優勢

 

ES(ElasticSearch)是一款分布式全文檢索框架,底層基於基於Lucene實現。ES與傳統數據的區別主要有:

 

1.結構名稱不同

一個ES集群可以包含多個索引(數據庫),每個索引又包含了很多類型(表),類型中包含了很多文檔(行),每個文檔使用 JSON 格式存儲數據,包含了很多字段(列)。

關系型數據庫

數據庫

ElasticSearch

索引

類型

文檔

字段

 

2.ES分布式搜索,傳統數據庫遍歷式搜索

ES支持分片和復制,從而方便水平分割和擴展,復制保證了es的高可用與高吞吐。

在ES中,當你創建一個索引(數據庫)的時候,你可以指定你想要的分片的數量。每個分片本身也是一個功能完善並且獨立的索引(數據庫),索引可以被放置到集群中的任何節點上。分片優點:

1.允許你水平分割/擴展你的內容容量

2.允許你在分片之上進行分布式的、並行的操作,進而提高性能/吞吐量

3.分片的分布,它的文檔怎樣聚合回搜索請求,完全由Elasticsearch管理

 

3.ES采用倒排索引,傳統數據庫采用B+樹索引

假設一個文檔(用id標識)是有許多的單詞(用value標識)組成的,每個單詞可能同一個文檔中重復出現很多次,也可能出現在不同的文檔中。

正排索引:從文檔角度看其中的單詞,表示每個文檔都含有哪些單詞,以及每個單詞出現了多少次(詞頻)及其出現位置(相對於文檔首部的偏移量)。

倒排索引:從單詞角度看文檔,標識每個單詞分別在那些文檔中出現(文檔ID),以及在各自的文檔中每個單詞分別出現了多少次(詞頻)及其出現位置(相對於該文檔首部的偏移量)。

簡單理解,

正排索引:id ---> value

倒排索引:value ---> id

ES中為所有字段默認都建了倒排索引。

 

4.ES沒有用戶驗證和權限控制

 

5.ES沒有事務的概念,不支持回滾,誤刪不能恢復

 

6.ES免費,完全開源;傳統數據庫部分免費

 

7.結合工作舉例

例如,要計算出2.38億會員中有多少80后的已婚的上海男士。

傳統數據庫執行時間: 5個小時左右

ES執行時間:1分鍾

 


免責聲明!

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



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