基於spark之上的即席分析-技術原理

一.YDB的本質? 

Spark之上基於搜索引擎技術,實現索引和搜索功能。 架構

既有搜索引擎的查詢速度,又有Spark強大的分析計算能力。 工具

可對多個字段進行關鍵字全匹配或模糊匹配檢索,並可對檢索結果集進行分組、排序、計算等統計分析操做。 oop

二.多種技術組合-萬億數據秒級查詢 

 

三.總體架構 

 

 

 

四.倒排索引與跳躍表 

1. 倒排索引與跳躍表基本原理 

 

 

2.與開源的倒排索引系統相比 

 

五.採用標籤代替原始值-進行分組與排序 

採用標籤標記技術-讓大數據化小 性能

優勢 大數據

1. 重複值僅存儲一份,能夠減小存儲空間佔用。 搜索引擎

2. 標籤值採用定長存儲,可隨機讀取。 spa

3. Group by分組計算的時候,使用標籤代替原始值,數值型計算速度比字符串的計算速度快不少。 .net

4. 標籤值的大小原始值的大小是對應的,故排序的時候也僅讀取標籤進行排序。 日誌

5. 標籤比原始值佔的內存少。 排序

缺點 

1. 若是數據重複值很低,存儲空間相反比原始數據大。 

2. 若是重複值很低,且查詢邏輯須要大量的根據標籤值獲取原始值的操做的時候,性能比原始值慢。

下圖爲替換示例,示意圖: 

 

 

在真實的數據中,數據確定是有重複的,好比說類目,性別,年齡,成交金額等信息,傳統的分析工具存儲的是原始的值,好比說咱們有1千億條數據,那麼就要存儲一千億條記錄,那麼進行統計的時候,一條一條的讀出這些類目確定要慢的不得了。 

還記得機器人總動員中的WALL-E麼?當數據規模達到必定程度之後,若是仍是直接對原始值進行讀取,對大數據的搬運工做將會特別的消耗體力,並且工做效率很低。 

 

ydb對原始數據作了一些處理,基本思路是:雖然你有1千億的數據,可是你的類目不會那麼多,典型的系統通常是幾萬個類目,2~3個性別值,故ydb在存儲的時候雖然有1千億條記錄,可是隻會存儲幾萬個類目,2個性別,這根原始的千億條記錄在數據規模上但是相差千萬倍,那麼在以後的統計(count,sum,avg等)勢必會比傳統的分析工具快上千倍萬倍。 

ydb的這種方式咱們稱爲標籤技術,就是將數據的真實值用一個數值標籤來替換數據自己,原始數據每一個值咱們只存儲一份,這樣當有大量重複值的數據,能夠節省不少IO,即便數據重複值不多,咱們也能夠一個數字來表明原始值,由於原始值有可能比較大,但數值確能夠很好的壓縮。 

基本的處理過程以下圖所示: 

 

六.採用blockSort快速排序 

按照時間逆序排序能夠說是不少日誌系統的硬指標。在延雲YDB系統中,咱們改變了傳統的暴力排序方式,經過索引技術,能夠超快對數據進行單列排序,不須要全表暴力掃描,這個技術咱們稱之爲blockSort,目前支持tlong,tdouble,tint,tfloat四種數據類型。 

因爲blockSort是藉助搜索的索引來實現的,因此,採用blockSort的排序,不須要暴力掃描,性能有大幅度的提高。 

blockSort的排序,並不是是預計算的方式,能夠全表進行排序,也能夠基於任意的過濾篩選條件進行過濾排序。 

七.兩段式查詢 

1.將原先的一次查詢化爲兩次或屢次查詢。 

2.第一次查詢僅讀取必備的列,如排序的列,須要group by與統計的列。 

3.第一次查詢不會獲取數據的真實值,僅僅讀取數據標籤 

4.全部的計算都完成後,由於數據進行過排序或彙總,剩餘的記錄數很少 

這個時候在將標籤從字典中轉換爲真實值,其餘列的值也跟着讀取過來。

相關文章
相關標籤/搜索