新聞中心
數(shù)據(jù)庫頻道之前曾報導過《走進列數(shù)據(jù)庫Infobright的世界》,Infobright的總體構(gòu)架圖如下:

創(chuàng)新互聯(lián)建站是一家專業(yè)提供臺兒企業(yè)網(wǎng)站建設,專注與網(wǎng)站制作、做網(wǎng)站、HTML5建站、小程序制作等業(yè)務。10年已為臺兒眾多企業(yè)、政府機構(gòu)等服務。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進行中。
如上圖所示,Infobright采用了和MySQL一致的構(gòu)架,分為兩層。上層是服務及應用管理,下層是存儲引擎。Infobright的默認存儲引擎是brighthouse,但是Infobright還可以支持其他的存儲引擎,比如MyISAM、MRG_MyISAM、Memory、CSV。Infobright通過三層來組織數(shù)據(jù),分別是DP(Data Pack)、DPN(Data Pack Node)、KN(Knowledge Node)。而在這三層之上就是無比強大的知識網(wǎng)絡(Knowledge Grid)。
數(shù)據(jù)塊(DP)是存儲的***層,列中每64K個單元組成一個DP。DP比列更小,具有更好的壓縮比率;又比單個數(shù)據(jù)單元更大,具有更好的查詢性能。
數(shù)據(jù)塊節(jié)點(DPN),DPN和DP之間是一對一的關系。DPN記錄著每一個DP里面存儲和壓縮的一些統(tǒng)計數(shù)據(jù),包括***值、最小值、null的個數(shù)、單元總數(shù)count、sum等等。
KN里面存儲著指向DP之間或者列之間關系的一些元數(shù)據(jù)集合,比如值發(fā)生的范圍(MIin_Max)、列數(shù)據(jù)之間的關聯(lián)。大部分的KN數(shù)據(jù)是裝載數(shù)據(jù)的時候產(chǎn)生的,另外一些事是查詢的時候產(chǎn)生。
在這三層之上是知識網(wǎng)絡(Knowledge Grid),Knowledge Grid構(gòu)架是Infobright高性能的重要原因。
Knowledge Grid可分為四部分,DPN、Histogram、CMAP、P-2-P。
DPN如上所述。Histogram用來提高數(shù)字類型(比如date,time,decimal)的查詢的性能。Histogram是裝載數(shù)據(jù)的時候就產(chǎn)生的。DPN中有mix、max,Histogram中把Min-Max分成1024段,如果Mix_Max范圍小于1024的話,每一段就是就是一個單獨的值。這個時候KN就是一個數(shù)值是否在當前段的二進制表示。
Histogram的作用就是快速判斷當前DP是否滿足查詢條件。如上圖所示,比如select id from customerInfo where id>50 and id<70。那么很容易就可以得到當前DP不滿足條件。所以Histogram對于那種數(shù)字限定的查詢能夠很有效地減少查詢DP的數(shù)量。
CMAP是針對于文本類型的查詢,也是裝載數(shù)據(jù)的時候就產(chǎn)生的。CMAP是統(tǒng)計當前DP內(nèi),ASCII在1-64位置出現(xiàn)的情況。如下圖所示
比如上面的圖說明了A在文本的第二個、第三個、第四個位置從來沒有出現(xiàn)過。0表示沒有出現(xiàn),1表示出現(xiàn)過。查詢中文本的比較歸根究底還是按照字節(jié)進行比較,所以根據(jù)CMAP能夠很好地提高文本查詢的性能。
Pack-To-Pack是Join操作的時候產(chǎn)生的,它是表示join的兩個DP中操作的兩個列之間關系的位圖,也就是二進制表示的矩陣。
Knowledge Grid還是比較復雜的,里面還有很多細節(jié)的東西,可以參考官方的白皮書和Brighthouse: an analytic data warehouse for ad-hoc queries這篇論文。
標題名稱:Infobright列數(shù)據(jù)庫的構(gòu)架分析
瀏覽地址:http://m.fisionsoft.com.cn/article/dpjopoi.html


咨詢
建站咨詢
