1. 程式人生 > >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分鐘