Infobright列數(shù)據(jù)庫(kù)的構(gòu)架分析
51CTO數(shù)據(jù)庫(kù)頻道之前曾報(bào)導(dǎo)過(guò)《走進(jìn)列數(shù)據(jù)庫(kù)Infobright的世界》,Infobright的總體構(gòu)架圖如下:
如上圖所示,Infobright采用了和MySQL一致的構(gòu)架,分為兩層。上層是服務(wù)及應(yīng)用管理,下層是存儲(chǔ)引擎。Infobright的默認(rèn)存儲(chǔ)引擎是brighthouse,但是Infobright還可以支持其他的存儲(chǔ)引擎,比如MyISAM、MRG_MyISAM、Memory、CSV。Infobright通過(guò)三層來(lái)組織數(shù)據(jù),分別是DP(Data Pack)、DPN(Data Pack Node)、KN(Knowledge Node)。而在這三層之上就是無(wú)比強(qiáng)大的知識(shí)網(wǎng)絡(luò)(Knowledge Grid)。
數(shù)據(jù)塊(DP)是存儲(chǔ)的***層,列中每64K個(gè)單元組成一個(gè)DP。DP比列更小,具有更好的壓縮比率;又比單個(gè)數(shù)據(jù)單元更大,具有更好的查詢(xún)性能。
數(shù)據(jù)塊節(jié)點(diǎn)(DPN),DPN和DP之間是一對(duì)一的關(guān)系。DPN記錄著每一個(gè)DP里面存儲(chǔ)和壓縮的一些統(tǒng)計(jì)數(shù)據(jù),包括***值、最小值、null的個(gè)數(shù)、單元總數(shù)count、sum等等。
KN里面存儲(chǔ)著指向DP之間或者列之間關(guān)系的一些元數(shù)據(jù)集合,比如值發(fā)生的范圍(MIin_Max)、列數(shù)據(jù)之間的關(guān)聯(lián)。大部分的KN數(shù)據(jù)是裝載數(shù)據(jù)的時(shí)候產(chǎn)生的,另外一些事是查詢(xún)的時(shí)候產(chǎn)生。
在這三層之上是知識(shí)網(wǎng)絡(luò)(Knowledge Grid),Knowledge Grid構(gòu)架是Infobright高性能的重要原因。
Knowledge Grid可分為四部分,DPN、Histogram、CMAP、P-2-P。
DPN如上所述。Histogram用來(lái)提高數(shù)字類(lèi)型(比如date,time,decimal)的查詢(xún)的性能。Histogram是裝載數(shù)據(jù)的時(shí)候就產(chǎn)生的。DPN中有mix、max,Histogram中把Min-Max分成1024段,如果Mix_Max范圍小于1024的話(huà),每一段就是就是一個(gè)單獨(dú)的值。這個(gè)時(shí)候KN就是一個(gè)數(shù)值是否在當(dāng)前段的二進(jìn)制表示。
Histogram的作用就是快速判斷當(dāng)前DP是否滿(mǎn)足查詢(xún)條件。如上圖所示,比如select id from customerInfo where id>50 and id<70。那么很容易就可以得到當(dāng)前DP不滿(mǎn)足條件。所以Histogram對(duì)于那種數(shù)字限定的查詢(xún)能夠很有效地減少查詢(xún)DP的數(shù)量。
CMAP是針對(duì)于文本類(lèi)型的查詢(xún),也是裝載數(shù)據(jù)的時(shí)候就產(chǎn)生的。CMAP是統(tǒng)計(jì)當(dāng)前DP內(nèi),ASCII在1-64位置出現(xiàn)的情況。如下圖所示
比如上面的圖說(shuō)明了A在文本的第二個(gè)、第三個(gè)、第四個(gè)位置從來(lái)沒(méi)有出現(xiàn)過(guò)。0表示沒(méi)有出現(xiàn),1表示出現(xiàn)過(guò)。查詢(xún)中文本的比較歸根究底還是按照字節(jié)進(jìn)行比較,所以根據(jù)CMAP能夠很好地提高文本查詢(xún)的性能。
Pack-To-Pack是Join操作的時(shí)候產(chǎn)生的,它是表示join的兩個(gè)DP中操作的兩個(gè)列之間關(guān)系的位圖,也就是二進(jìn)制表示的矩陣。
Knowledge Grid還是比較復(fù)雜的,里面還有很多細(xì)節(jié)的東西,可以參考官方的白皮書(shū)和Brighthouse: an analytic data warehouse for ad-hoc queries這篇論文。
原文鏈接:http://blog.chinaunix.net/u2/72637/showart_2306089.html
【編輯推薦】