两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

實現(xiàn)自適應(yīng)垂直劃分的關(guān)系型數(shù)據(jù)庫的方法及系統(tǒng)的制作方法

文檔序號:6356550閱讀:144來源:國知局
專利名稱:實現(xiàn)自適應(yīng)垂直劃分的關(guān)系型數(shù)據(jù)庫的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及關(guān)系型數(shù)據(jù)庫領(lǐng)域,具體涉及一種實現(xiàn)自適應(yīng)垂直劃分的關(guān)系型數(shù)據(jù)庫的方法及系統(tǒng)。
背景技術(shù)
傳統(tǒng)的關(guān)系型數(shù)據(jù)庫系統(tǒng)都是基于行存儲,記錄的數(shù)據(jù)存放在相同數(shù)據(jù)塊內(nèi),這種方式非常適合于讀寫操作,滿足短事務(wù)頻繁的應(yīng)用場景。缺點是可能會讀取額外的列,復(fù)雜查詢緩慢,索引開銷較大,系統(tǒng)維護復(fù)雜,需要不斷進行系統(tǒng)優(yōu)化。而基于列存儲的數(shù)據(jù)庫系統(tǒng)(簡稱列數(shù)據(jù)庫)的特點是將記錄的列分開存儲,然后利用連接數(shù)據(jù)來重構(gòu)記錄。列存儲的設(shè)計帶來很多優(yōu)點,比如可以對同列數(shù)據(jù)進行數(shù)據(jù)壓縮和索引優(yōu)化處理等,這種方式極大地優(yōu)化了讀操作,滿足復(fù)雜查詢的應(yīng)用場景,系統(tǒng)維護簡單。缺點是數(shù)據(jù)更新性能較低,不適合更新事務(wù)頻繁的應(yīng)用場景。中國專利申請(公開號CN101751406A,
公開日為2010年6月23日)提出了一種實現(xiàn)基于列存儲的關(guān)系型數(shù)據(jù)庫的方法及裝置,該專利申請?zhí)岢隽艘环N新的列存儲方法, 記錄的列分開存儲,在值數(shù)據(jù)塊中存放列值和記錄號,列值排序存儲,在連接數(shù)據(jù)塊中存放記錄號和值數(shù)據(jù)塊序列號,記錄號排序存儲,在數(shù)據(jù)插入時,盡管列值的位置會發(fā)生變化, 只要它仍然在同一個值數(shù)據(jù)塊中,連接數(shù)據(jù)塊就不需要更新,圖1是該專利描述的列存儲示例圖。這種方法有三個問題,第一個問題是所有列都是分開存儲,盡管能對所有列值排序并建索引,但在重構(gòu)記錄時會影響性能;第二個問題是存儲值數(shù)據(jù)塊的序列號盡管能緩解列存儲的更新問題,但影響了讀操作的性能,由于只存儲了值數(shù)據(jù)塊的序列號,在查詢列值的時候還需要進行二分查找;第三個問題是沒有考慮表數(shù)據(jù)的分區(qū)與分布處理,影響了系統(tǒng)的并行查詢能力和可擴展性。

發(fā)明內(nèi)容
(一 )要解決的技術(shù)問題本發(fā)明要解決的技術(shù)問題是如何提供一種能夠提高存儲結(jié)構(gòu)合理性,能實現(xiàn)并行查詢處理并可提高可擴展性的關(guān)系型數(shù)據(jù)庫的方法及系統(tǒng)。( 二 )技術(shù)方案為解決上述技術(shù)問題,本發(fā)明提供了一種實現(xiàn)自適應(yīng)垂直劃分的關(guān)系型數(shù)據(jù)庫的方法,包括以下步驟Si、對于一個表,先基于列存儲結(jié)構(gòu)不斷收集并統(tǒng)計用戶查詢所涉及的相關(guān)列出現(xiàn)的次數(shù),并基于預(yù)設(shè)時間窗口中的歷史數(shù)據(jù)計算相關(guān)列出現(xiàn)次數(shù)的閾值,然后導(dǎo)出大于所述閾值的相關(guān)列進行垂直劃分,并得到垂直劃分的相關(guān)列集合;S2、基于垂直劃分的相關(guān)列集合建立連接數(shù)據(jù);S3、基于所述垂直劃分的相關(guān)列集合,采用預(yù)設(shè)策略將表的不同相關(guān)列分配到不同的分區(qū)上,從而實現(xiàn)查詢的并行執(zhí)行。
其中,步驟Sl中,基于預(yù)設(shè)時間窗口中的歷史數(shù)據(jù)計算相關(guān)列出現(xiàn)次數(shù)的閾值具體為利用下式計算所述閾值閾值=(1-w)X Countmax+wX Countmin其中,w為計劃導(dǎo)出的相關(guān)列的比例,Countfflax表示相關(guān)列出現(xiàn)的最大次數(shù), Countfflin表示相關(guān)列出現(xiàn)的最小次數(shù)。步驟Sl中,在計算閾值之后還包括判斷初始的垂直劃分的相關(guān)列集合是否為空的步驟,如果初始的垂直劃分的相關(guān)列集合為空,則直接導(dǎo)出大于閾值的相關(guān)列進行垂直劃分;否則先合并現(xiàn)有垂直劃分的相關(guān)列集合中的相關(guān)列,并折算在合并時相關(guān)列出現(xiàn)的次數(shù),在得到在合并時相關(guān)列出現(xiàn)的次數(shù)后,再導(dǎo)出大于閾值的相關(guān)列進行垂直劃分。進一步,利用下式計算在合并時相關(guān)列出現(xiàn)的次數(shù)相關(guān)列出現(xiàn)的次數(shù)=Count0ldXd+Countnew其中,Coimt。ld為相關(guān)列出現(xiàn)的現(xiàn)有次數(shù),Coimtnew為新出現(xiàn)的次數(shù),d為折算系數(shù)。其中,步驟Sl中,在得到垂直劃分的相關(guān)列集合的過程中,定時清除出現(xiàn)次數(shù)少于一定值的相關(guān)列。在步驟Sl之前還包括建立所述列存儲結(jié)構(gòu)的步驟,在建立所述列存儲結(jié)構(gòu)時,將所記錄的列分開存儲,若列值的屬性一致則將列值排序存儲,且將表的記錄存儲在分區(qū)中, 每個分區(qū)中存儲有多個表段,每個表段中存放的記錄的數(shù)量有一個上限。其中,步驟S2中,在建立連接數(shù)據(jù)時不僅存儲值數(shù)據(jù)塊序列號,還存儲列值在所述值數(shù)據(jù)塊中排序的位置。本發(fā)明還提供一種基于所述的方法建立的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),包括列存儲管理器,用于實現(xiàn)記錄的列存儲機制;信息采集器,用于采集用戶查詢所涉及的相關(guān)列出現(xiàn)的次數(shù)和時間;垂直劃分管理器,用于控制整個關(guān)系型數(shù)據(jù)庫的垂直劃分,根據(jù)采集的信息計算相關(guān)列出現(xiàn)次數(shù)的閾值并導(dǎo)出大于所述閾值的相關(guān)列為垂直劃分,并發(fā)起相關(guān)列讀優(yōu)化連接的創(chuàng)建;所述采集的信息包括計劃導(dǎo)出的相關(guān)列的比例,相關(guān)列出現(xiàn)的最大次數(shù),相關(guān)列出現(xiàn)的最小次數(shù);分區(qū)管理器,用于根據(jù)節(jié)點的負(fù)載信息調(diào)整并均衡表中數(shù)據(jù)的分布;并行查詢處理引擎,用于實現(xiàn)基于列存儲機制的分布式查詢處理。其中,所述列存儲機制為在建立所述列存儲結(jié)構(gòu)時,將所記錄的列分開存儲,若列值的屬性一致則將列值排序存儲,且將表的記錄存儲在分區(qū)中,每個分區(qū)中存儲有多個表段,每個表段中存放的記錄的數(shù)量有一個上限。(三)有益效果本發(fā)明的優(yōu)點在于1)通過實現(xiàn)基于列存儲的動態(tài)垂直劃分,可以導(dǎo)出更加合理的存儲結(jié)構(gòu);2)可以動態(tài)進行調(diào)整,實現(xiàn)系統(tǒng)的自動調(diào)優(yōu);3)基于垂直劃分建立讀優(yōu)化連接,可以加速列值的讀取和記錄重構(gòu);4)兼顧數(shù)據(jù)更新的性能和讀的優(yōu)化力)通過自適應(yīng)的數(shù)據(jù)分區(qū)和分布,實現(xiàn)了并行查詢處理并可提高可擴展性。


圖1是現(xiàn)有技術(shù)中的列存儲示例圖2是動態(tài)垂直劃分導(dǎo)出流程圖;圖3是基于垂直劃分創(chuàng)建的讀優(yōu)化連接結(jié)構(gòu)示意圖;圖4是讀優(yōu)化連接數(shù)據(jù)的索引結(jié)構(gòu)示意圖;圖5是一種簡單的垂直數(shù)據(jù)分區(qū)示意圖;圖6是一種混合的數(shù)據(jù)分區(qū)示意圖;圖7是基于本發(fā)明的方法建立的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)的實施例示意圖;圖8是本發(fā)明的方法流程圖。
具體實施例方式下面結(jié)合附圖和實施例,對本發(fā)明的具體實施方式
作進一步詳細說明。以下實施例用于說明本發(fā)明,但不用來限制本發(fā)明的范圍。鑒于現(xiàn)有列數(shù)據(jù)庫技術(shù)的缺點,本方法提出了一種動態(tài)垂直劃分的方法,將相關(guān)的列邏輯劃分在一起,這樣可以加速記錄的重構(gòu)。對于讀操作性能的問題,本方法提出針對讀的優(yōu)化連接結(jié)構(gòu),也就是對垂直劃分的相關(guān)列建立連接數(shù)據(jù)時直接存儲列值在值數(shù)據(jù)塊中排序的位置,這樣可以在讀取列值時快速定位。由于對數(shù)據(jù)進行了垂直劃分,可以進行自適應(yīng)的數(shù)據(jù)分區(qū)(或簡稱為分區(qū))和分布,從而可以實現(xiàn)并行查詢處理并提高可擴展性。下面參考圖8介紹本發(fā)明的方法。SO 建立列存儲結(jié)構(gòu)圖1中展示了所建立的列存儲的結(jié)構(gòu)。列存儲結(jié)構(gòu)中所記錄的列分開存儲,由于列值的屬性一致且排序存儲,所以可以應(yīng)用一些有效的數(shù)據(jù)壓縮技術(shù)進行存儲。表的記錄存儲在分區(qū)中,每個分區(qū)有多個表段,每個表段中存放的記錄數(shù)量有一個上限。數(shù)據(jù)塊的類型有兩種,一種是值數(shù)據(jù)塊,存放列值和記錄號,列值排序存儲,每個列值可能對應(yīng)多個記錄號;另一種是連接數(shù)據(jù)塊,存放記錄號和值數(shù)據(jù)塊序列號,記錄號排序存儲,用于重構(gòu)記錄。然后,可以基于值數(shù)據(jù)塊的列值建立索引,由于列值已排序存儲,可以對索引進行簡化 在索引塊中只存放值數(shù)據(jù)塊的第一個列值和值數(shù)據(jù)塊的序列號。接著基于連接數(shù)據(jù)塊的記錄號建立索引,同樣,由于記錄號已排序存儲,可以對索引進行簡化在索引塊中只存放連接數(shù)據(jù)塊的第一個記錄號和連接數(shù)據(jù)塊的序列號。Si、動態(tài)垂直劃分步驟物理的存儲對于用戶來說是透明的,一般垂直劃分都是在模式建立的時候定義的,在系統(tǒng)運行的時候是很難改變。另一種簡單的方式是讓用戶先準(zhǔn)備好應(yīng)用軟件可能需要的查詢語句,系統(tǒng)會基于查詢語句生成合理的存儲結(jié)構(gòu),比如分析語句所涉及的列,然后導(dǎo)出合適的列存儲結(jié)構(gòu)。不過這種方式假設(shè)應(yīng)用軟件的查詢語句是不變的,所以這種方式仍然是靜態(tài)的。對于列數(shù)據(jù)庫來說,列的劃分是很自然的事情,本方法提出一種自適應(yīng)的調(diào)節(jié)機制,能有效進行動態(tài)垂直劃分。動態(tài)的垂直劃分方法,簡單地說,就是先不考慮優(yōu)化,將表的所有列都分開存儲, 通過不斷統(tǒng)計相關(guān)列出現(xiàn)的次數(shù)(包括被讀取和更新的次數(shù)),然后判定次數(shù)是否超過某個閾值,超過就可以考慮將相關(guān)列進行垂直劃分。這里需要解決的一個問題是相關(guān)列的導(dǎo)出問題,相關(guān)列不是隨意定義,在一個查詢中出現(xiàn)過的列才會作為相關(guān)列記錄下來,然后基于這些相關(guān)列進行統(tǒng)計,隨著系統(tǒng)的運行,會出現(xiàn)更多的查詢操作,查詢中出現(xiàn)的相關(guān)列會反映到統(tǒng)計中。在一個時間窗口內(nèi),當(dāng)一個相關(guān)列出現(xiàn)的次數(shù)超過閾值的時候,系統(tǒng)就會導(dǎo)出相關(guān)列進行一個垂直劃分。垂直劃分的相關(guān)列集合(也簡稱為垂直劃分集合)會不斷調(diào)整并維護在一個穩(wěn)定的狀態(tài),系統(tǒng)會定時清除出現(xiàn)次數(shù)太少的相關(guān)列。閾值是基于時間窗口內(nèi)的歷史數(shù)據(jù)來進行計算,最新出現(xiàn)的次數(shù)會優(yōu)先考慮。圖2展示了進行動態(tài)垂直劃分的流程。首先初始化垂直劃分的的相關(guān)列集合,然后對一個表來說,先基于現(xiàn)有列存儲結(jié)構(gòu)不斷收集并統(tǒng)計用戶查詢所涉及的相關(guān)列出現(xiàn)的次數(shù),這個過程需要積累一段時間,直到滿足統(tǒng)計所要求的時間窗口,然后基于時間窗口中的歷史數(shù)據(jù)計算相關(guān)列出現(xiàn)次數(shù)的閾值閾值=(1-w)X Countmax+wX Countmin其中,w為計劃導(dǎo)出的相關(guān)列的比例,比如0.2,w為1意味著導(dǎo)出所有相關(guān)列。 Countfflax表示相關(guān)列出現(xiàn)的最大次數(shù),Countfflin表示相關(guān)列出現(xiàn)的最小次數(shù)。在得到閾值以后,如果初始的垂直劃分的相關(guān)列集合為空,可以直接導(dǎo)出大于閾值的相關(guān)列為垂直劃分。如果垂直劃分的相關(guān)列集合不為空,需要合并現(xiàn)有垂直劃分的相關(guān)列集合中的相關(guān)列,由于垂直劃分的相關(guān)列已存在一段時間,因此還要折算在合并時相關(guān)列出現(xiàn)的次數(shù)相關(guān)列出現(xiàn)的次數(shù)=Count0ldXd+Countnew其中,Count0ld為現(xiàn)有次數(shù),Countnew為新出現(xiàn)的次數(shù),d為折算系數(shù),比如0. 8,現(xiàn)有次數(shù)為O意味著是新出現(xiàn)的相關(guān)列。在得到所有相關(guān)列出現(xiàn)的次數(shù)后,可以導(dǎo)出大于閾值的相關(guān)列為垂直劃分。系統(tǒng)會定時清除出現(xiàn)次數(shù)太少的相關(guān)列,以使得垂直劃分的相關(guān)列集合會不斷調(diào)整并維護在一個穩(wěn)定的狀態(tài)。S2、建立讀優(yōu)化連接存儲數(shù)據(jù)塊的序列號能緩解列存儲的更新問題,由于數(shù)據(jù)塊中的列值是排序存儲,其索引只存儲數(shù)據(jù)塊的第一個值和數(shù)據(jù)塊的序列號,所以只要第一個值不變,索引也就不需要更新。在數(shù)據(jù)插入時,盡管數(shù)據(jù)塊中列值的位置會發(fā)生變化,只要它仍在同一個數(shù)據(jù)塊中,連接數(shù)據(jù)也就不需要更新。這種結(jié)構(gòu)盡管能緩解列存儲的更新問題,但影響了讀操作的性能,由于只存儲了數(shù)據(jù)塊的序列號,在查詢值的時候還需要進行二分查找。前面提到垂直劃分的方法,如果能導(dǎo)出系統(tǒng)目前相關(guān)列的集合,就可以基于相關(guān)列建立讀優(yōu)化的連接結(jié)構(gòu),也就是對垂直劃分的相關(guān)列建立連接數(shù)據(jù)時除了存儲值數(shù)據(jù)塊序列號,還存儲列值在值數(shù)據(jù)塊中排序的位置,這樣就可以在讀取列值時快速定位,而且能加速記錄的重構(gòu)。這里有一個問題是連接數(shù)據(jù)的更新性能問題,所以,讀優(yōu)化連接并不會在模式創(chuàng)建的時候就建立,而是在導(dǎo)出垂直劃分的時候再動態(tài)創(chuàng)建。在連接數(shù)據(jù)創(chuàng)建后,如果有批量數(shù)據(jù)導(dǎo)入,可以先將受影響的連接數(shù)據(jù)塊置為失效,后續(xù)的查詢會基于連接數(shù)據(jù)中值數(shù)據(jù)塊的序列號進行定位然后進行二分查找,在系統(tǒng)空閑時再重構(gòu)受影響的連接數(shù)據(jù)塊。在導(dǎo)出垂直劃分的相關(guān)列集合后,就可以基于相關(guān)列建立讀優(yōu)化的連接,圖3展示了讀優(yōu)化連接結(jié)構(gòu)的示意圖。對垂直劃分的相關(guān)列建立連接數(shù)據(jù)時不僅存儲值數(shù)據(jù)塊序列號,還存儲列值在值數(shù)據(jù)塊中排序的位置,這樣就可以在讀取列值時快速定位,而且能加速記錄的重構(gòu)。圖4展示了讀優(yōu)化連接數(shù)據(jù)的索引結(jié)構(gòu)示意圖,其中索引數(shù)據(jù)只存放其它數(shù)據(jù)塊的第一個記錄號和數(shù)據(jù)塊的序列號。在查詢的時候,查詢引擎會選擇與當(dāng)前查詢最匹配的垂直劃分,進而選擇相應(yīng)連接數(shù)據(jù)來定位相關(guān)列和數(shù)據(jù)。在連接數(shù)據(jù)創(chuàng)建后,如果有批量數(shù)據(jù)導(dǎo)入,可以先將受影響的連接數(shù)據(jù)塊置為失效,后續(xù)的查詢會基于連接數(shù)據(jù)中值數(shù)據(jù)塊的序列號進行定位,這時連接數(shù)據(jù)退化成原有連接機制,在查詢值的時候還需要進行二分查找。在系統(tǒng)空閑時會重構(gòu)受影響的連接數(shù)據(jù)塊,連接數(shù)據(jù)塊會重新置為有效,進而加速值的定位與記錄重構(gòu)。S3、數(shù)據(jù)分區(qū)和分布將表中數(shù)據(jù)進行分區(qū)的目的是進行分布式處理,從而實現(xiàn)并行查詢,而且與單個文件系統(tǒng)分區(qū)相比,單個表可以存儲更多的數(shù)據(jù)。此外,對于條件查詢語句,可以得到更大的優(yōu)化,只需要查詢某些分區(qū),而不用掃描全部分區(qū),對于聚合函數(shù)能夠很容易地實現(xiàn)并行執(zhí)行,通過并行1/0,可以大大提高查詢的吞吐量。分區(qū)可以進行水平分區(qū)和垂直分區(qū),水平分區(qū)通常是依據(jù)記錄的特征進行劃分, 而垂直分區(qū)是依據(jù)相關(guān)列的特征進行劃分。傳統(tǒng)數(shù)據(jù)庫最常見是的水平分區(qū),而列存儲不僅支持水平分區(qū),而且很自然地支持垂直分區(qū),自適應(yīng)地將表的不同相關(guān)列分配到不同的物理分區(qū)上,部分列可以冗余,從而提高并行查詢的效率。對于超大型數(shù)據(jù)表,可以先進行水平分區(qū),然后根據(jù)相關(guān)列的集合進行垂直分區(qū),提高并行處理的效率。本步驟中,基于前面導(dǎo)出的垂直劃分的集合,可以基于一些策略將表的不同相關(guān)列分配到不同的物理分區(qū)上,部分列可以冗余,從而提高并行查詢的效率。所述策略例如為按照出現(xiàn)次數(shù)多的相關(guān)列與出現(xiàn)次數(shù)少的相關(guān)列平均搭配。分配示例相關(guān)列的出現(xiàn)次數(shù) 1、2、3、4、5、6、7、8,將其分為兩部分(1,4,5,8) ; 0,3,6,7),分別分配到不同的分區(qū)上。圖 5展示了一種簡單的垂直數(shù)據(jù)分區(qū)示意圖,其中對于關(guān)聯(lián)的數(shù)據(jù)表可以在不同節(jié)點上復(fù)制, 比如表2和表3,以提高并行查詢的效率。對于超大型數(shù)據(jù)表,可以先按記錄特征進行水平分區(qū),然后根據(jù)相關(guān)列的集合進行垂直分區(qū),以提高并行處理的效率。水平分區(qū)通常是為了將記錄進行分布,緩解記錄數(shù)量帶來的壓力,其中范圍劃分是一種常用的策略,但存在執(zhí)行偏差的問題,一些節(jié)點可能在某些范圍的記錄較多,負(fù)載較重。所以,有必要對重負(fù)載的節(jié)點再進行垂直劃分,比較簡單的情況是垂直劃分的節(jié)點內(nèi)容保持一致,也可以基于垂直劃分的相關(guān)列來自適應(yīng)地進行劃分,從而提高并行查詢的效率。圖6展示了一種混合的數(shù)據(jù)分區(qū)示意圖,其中節(jié)點1和其它節(jié)點組成水平分區(qū),節(jié)點2和節(jié)點3組成一個垂直分區(qū),其它關(guān)聯(lián)的數(shù)據(jù)表可以在所有節(jié)點復(fù)制。對于條件查詢語句,通過分區(qū)可以得到更大的優(yōu)化,可能只需要查詢某些分區(qū),而不用掃描全部分區(qū)。此外,對于聚合函數(shù)(比如SUM、COUNT)能夠很容易地實現(xiàn)并行執(zhí)行, 通過并行1/0,可以大大提高查詢的吞吐量。根據(jù)上述四個步驟的說明,可以基于現(xiàn)有列存儲結(jié)構(gòu)實現(xiàn)動態(tài)垂直劃分并建立讀優(yōu)化連接,通過自適應(yīng)的數(shù)據(jù)分區(qū)與分布處理實現(xiàn)查詢的并行執(zhí)行,提高查詢的處理效率。圖7展示了基于本方法建立的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)的實施例示意圖。該系統(tǒng)主要包括列存儲管理器(圖7中為列存儲),實現(xiàn)記錄的列存儲機制,支持有效的數(shù)據(jù)壓縮和讀優(yōu)化技術(shù);信息采集器,用于采集用戶查詢所涉及的相關(guān)列出現(xiàn)的次數(shù)和時間;垂直劃分管理器,用于管理整個數(shù)據(jù)庫的垂直劃分,根據(jù)采集的信息計算閾值并導(dǎo)出垂直劃分,發(fā)起相關(guān)列讀優(yōu)化連接的創(chuàng)建;分區(qū)管理器,管理數(shù)據(jù)分區(qū)的配置信息,支持水平劃分和垂直劃分,根據(jù)節(jié)點負(fù)載信息自適應(yīng)調(diào)整并均衡表數(shù)據(jù)的分布;并行查詢處理引擎,支持基于列存儲的分布式查詢處理。 以上實施方式僅用于說明本發(fā)明,而并非對本發(fā)明的限制,有關(guān)技術(shù)領(lǐng)域的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術(shù)方案也屬于本發(fā)明的范疇,本發(fā)明的專利保護范圍應(yīng)由權(quán)利要求限定。
權(quán)利要求
1.一種實現(xiàn)自適應(yīng)垂直劃分的關(guān)系型數(shù)據(jù)庫的方法,其特征在于,包括以下步驟51、對于一個表,先基于列存儲結(jié)構(gòu)不斷收集并統(tǒng)計用戶查詢所涉及的相關(guān)列出現(xiàn)的次數(shù),并基于預(yù)設(shè)時間窗口中的歷史數(shù)據(jù)計算相關(guān)列出現(xiàn)次數(shù)的閾值,然后導(dǎo)出大于所述閾值的相關(guān)列進行垂直劃分,并得到垂直劃分的相關(guān)列集合;52、基于垂直劃分的相關(guān)列集合建立連接數(shù)據(jù);53、基于所述垂直劃分的相關(guān)列集合,采用預(yù)設(shè)策略將表的不同相關(guān)列分配到不同的分區(qū)上,從而實現(xiàn)查詢的并行執(zhí)行。
2.如權(quán)利要求1所述的方法,其特征在于,步驟Sl中,基于預(yù)設(shè)時間窗口中的歷史數(shù)據(jù)計算相關(guān)列出現(xiàn)次數(shù)的閾值具體為利用下式計算所述閾值閾值=(1-w) X Countmax+wX Countmin其中,w為計劃導(dǎo)出的相關(guān)列的比例,Countmax表示相關(guān)列出現(xiàn)的最大次數(shù),Coimtmin表示相關(guān)列出現(xiàn)的最小次數(shù)。
3.如權(quán)利要求1所述的方法,其特征在于,步驟Sl中,在計算閾值之后還包括判斷初始的垂直劃分的相關(guān)列集合是否為空的步驟,如果初始的垂直劃分的相關(guān)列集合為空,則直接導(dǎo)出大于閾值的相關(guān)列進行垂直劃分;否則先合并現(xiàn)有垂直劃分的相關(guān)列集合中的相關(guān)列,并折算在合并時相關(guān)列出現(xiàn)的次數(shù),在得到在合并時相關(guān)列出現(xiàn)的次數(shù)后,再導(dǎo)出大于閾值的相關(guān)列進行垂直劃分。
4.如權(quán)利要求3所述的方法,其特征在于,利用下式計算在合并時相關(guān)列出現(xiàn)的次數(shù)相關(guān)列出現(xiàn)的次數(shù)=Count0ld X d+Countnew其中,Count0ld為相關(guān)列出現(xiàn)的現(xiàn)有次數(shù),Countnew為新出現(xiàn)的次數(shù),d為折算系數(shù)。
5.如權(quán)利要求1所述的方法,其特征在于,步驟Sl中,在得到垂直劃分的相關(guān)列集合的過程中,定時清除出現(xiàn)次數(shù)少于一定值的相關(guān)列。
6.如權(quán)利要求1所述的方法,其特征在于,在步驟Sl之前還包括建立所述列存儲結(jié)構(gòu)的步驟,在建立所述列存儲結(jié)構(gòu)時,將所記錄的列分開存儲,若列值的屬性一致則將列值排序存儲,且將表的記錄存儲在分區(qū)中,每個分區(qū)中存儲有多個表段,每個表段中存放的記錄的數(shù)量有一個上限。
7.如權(quán)利要求1 6任一項所述的方法,其特征在于,步驟S2中,在建立連接數(shù)據(jù)時不僅存儲值數(shù)據(jù)塊序列號,還存儲列值在所述值數(shù)據(jù)塊中排序的位置。
8.一種基于權(quán)利要求1 6任一項所述的方法建立的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),其特征在于,包括列存儲管理器,用于實現(xiàn)記錄的列存儲機制;信息采集器,用于采集用戶查詢所涉及的相關(guān)列出現(xiàn)的次數(shù)和時間;垂直劃分管理器,用于控制整個關(guān)系型數(shù)據(jù)庫的垂直劃分,根據(jù)采集的信息計算相關(guān)列出現(xiàn)次數(shù)的閾值并導(dǎo)出大于所述閾值的相關(guān)列為垂直劃分,并發(fā)起相關(guān)列讀優(yōu)化連接的創(chuàng)建;所述采集的信息包括計劃導(dǎo)出的相關(guān)列的比例,相關(guān)列出現(xiàn)的最大次數(shù),相關(guān)列出現(xiàn)的最小次數(shù);分區(qū)管理器,用于根據(jù)節(jié)點的負(fù)載信息調(diào)整并均衡表中數(shù)據(jù)的分布;并行查詢處理引擎,用于實現(xiàn)基于列存儲機制的分布式查詢處理。
9.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述列存儲機制為在建立所述列存儲結(jié)構(gòu)時,將所記錄的列分開存儲,若列值的屬性一致則將列值排序存儲,且將表的記錄存儲在分區(qū)中,每個分區(qū)中存儲有多個表段,每個表段中存放的記錄的數(shù)量有一個上限。
全文摘要
本發(fā)明公開了一種實現(xiàn)自適應(yīng)垂直劃分的關(guān)系型數(shù)據(jù)庫的方法,屬于關(guān)系型數(shù)據(jù)庫領(lǐng)域。包括以下步驟S1、對于一個表,先基于列存儲結(jié)構(gòu)不斷收集并統(tǒng)計用戶查詢所涉及的相關(guān)列出現(xiàn)的次數(shù),并基于預(yù)設(shè)時間窗口中的歷史數(shù)據(jù)計算相關(guān)列出現(xiàn)次數(shù)的閾值,然后導(dǎo)出大于所述閾值的相關(guān)列進行垂直劃分,并得到垂直劃分的相關(guān)列集合;S2、基于垂直劃分的相關(guān)列集合建立連接數(shù)據(jù);S3、基于所述垂直劃分的相關(guān)列集合,采用預(yù)設(shè)策略將表的不同相關(guān)列分配到不同的分區(qū)上,從而實現(xiàn)查詢的并行執(zhí)行。本發(fā)明能夠提高存儲結(jié)構(gòu)合理性,能實現(xiàn)并行查詢處理并可提高可擴展性。
文檔編號G06F17/30GK102156714SQ20111006935
公開日2011年8月17日 申請日期2011年3月22日 優(yōu)先權(quán)日2011年3月22日
發(fā)明者張勇, 曾春, 李毅, 李超, 白立宏, 邢春曉 申請人:廣東環(huán)天電子技術(shù)發(fā)展有限公司, 清華大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
磐安县| 米脂县| 中西区| 思南县| 阜阳市| 南宫市| 龙山县| 精河县| 营山县| 姜堰市| 武功县| 盱眙县| 商洛市| 招远市| 宽城| 临邑县| 南投市| 辉县市| 米泉市| 仁布县| 河北区| 黄骅市| 香港| 同仁县| 上虞市| 焦作市| 阿拉善右旗| 东安县| 洞头县| 泰安市| 常宁市| 四会市| 东兰县| 天柱县| 类乌齐县| 临沧市| 安宁市| 白银市| 正宁县| 那曲县| 绥化市|