利用閃存高速緩存中動(dòng)態(tài)生成的替代數(shù)據(jù)格式加速查詢的方法
【專利說明】利用閃存高速緩存中動(dòng)態(tài)生成的替代數(shù)據(jù)格式加速查詢的方法
[0001]相關(guān)申請的交叉引用
[0002]本申請與以下申請有關(guān):(I)美國專利申請N0.12/769508,由Vineet Marwah等人于2010年4月28日提交,標(biāo)題為“Compress1n Analyzer”,代理人案號為50277-3695 ;
(2)美國專利申請N0.12/769205,由Vikram Kapoor等人于2010年4月28日提交,標(biāo)題為“Storing Compress1n Units In Relat1nal Tables,,,代理人案號為 50277-3696 ;
(3)美國專利申請N0.12/617669,由Amit Ganesh等人于2009年11月12日提交,標(biāo)題為“Structure of Hierarchical Compressed Data Structure for Tabular Data,,,代理人案號為50277-3672 ;以及(4)美國臨時(shí)專利申請N0.61/174447,于2009年4月30日提交。本段落中提到的所有專利申請的內(nèi)容都通過引用并入此。申請人特此撤銷在父申請或者其起訴歷史中對權(quán)利要求范圍的任何否認(rèn)聲明,并向USPTO告知本申請中的權(quán)利要求可以比父申請中的任何權(quán)利要求更寬泛。
技術(shù)領(lǐng)域
[0003]本申請涉及數(shù)據(jù)存儲(chǔ)系統(tǒng),并且更具體地涉及利用存儲(chǔ)在閃存高速緩存(flashcache)中動(dòng)態(tài)生成的重寫數(shù)據(jù)來加速查詢。
【背景技術(shù)】
[0004]傳統(tǒng)地,按照行為主(row-major)的格式或列為主(column-major)的格式存儲(chǔ)數(shù)據(jù)。但是,對于滿足各種數(shù)據(jù)訪問要求,這兩種存儲(chǔ)格式似乎都不是最佳的。例如,一些操作對行為主的數(shù)據(jù)可能比對列為主的數(shù)據(jù)執(zhí)行得更快,而其它操作對純列式數(shù)據(jù)可能比行為主的數(shù)據(jù)執(zhí)行得更快。這常常是由于一些數(shù)據(jù)訪問操作需要CPU資源,而其它需要1/0操作。因此,在確定用于存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)格式時(shí),在CPU負(fù)荷和盤(disk)負(fù)荷之間維持平衡可能是有挑戰(zhàn)性的。
[0005]一種解決方案包括在盤上創(chuàng)建數(shù)據(jù)的兩份拷貝:每種格式一份。這種方法常常被稱為斷裂鏡(fractured-mirror)方法。但是,雖然斷裂鏡方法似乎解決了查詢處理的數(shù)據(jù)存取困境,但是該方法實(shí)現(xiàn)起來可能是昂貴的。例如,加倍磁盤容量和復(fù)制數(shù)據(jù)的成本可能較高。而且,將數(shù)據(jù)加載到盤上的時(shí)間可能明顯較長。
[0006]數(shù)據(jù)存儲(chǔ)問題的另一種解決方案可以包括在最常用的數(shù)據(jù)列上創(chuàng)建列式索引,并依賴該索引來加速對數(shù)據(jù)存取的訪問。但是,這種方法也可能是昂貴且耗時(shí)的。
[0007]其它解決方案可以基于混合列式壓縮(Hybrid Columnar Compress1n, HCC)方法。在HCC中,一組塊中的數(shù)據(jù)被旋轉(zhuǎn)為列為主的格式。列行程(column run)可以被限制為針對塊本地指定的默認(rèn)長度。這種方法既通過訪問幾個(gè)連續(xù)的塊來允許高效的行為主的訪問,也通過直接導(dǎo)航到所需的列以及對這些列的操作的快速列處理來允許高效的表掃描訪問。
[0008]還有其它解決方案專注于降低處理常見表達(dá)式的CPU成本。這可以通過利用函數(shù)索引(funct1nal index)給表達(dá)式加索引或者在加載虛擬列期間具體化這些表達(dá)式來解決。
【附圖說明】
[0009]在圖1中:
[0010]圖1是繪出了利用閃存高速緩存中的動(dòng)態(tài)生成的列式數(shù)據(jù)來加速查詢的示例性系統(tǒng)的框圖;
[0011]圖2是繪出了用于存儲(chǔ)各種重寫數(shù)據(jù)塊的示例性系統(tǒng)的框圖;
[0012]圖3A是繪出了利用重寫數(shù)據(jù)塊來加速智能掃描請求的示例性過程的流程圖;
[0013]圖3B是繪出了利用重寫數(shù)據(jù)塊的示例性過程的流程圖;及
[0014]圖4是可以實(shí)現(xiàn)實(shí)施例的計(jì)算機(jī)系統(tǒng)的框圖。
【具體實(shí)施方式】
[0015]在以下描述中,出于說明的目的,闡述了各種具體細(xì)節(jié),以便提供對本發(fā)明的透徹理解。但是,很顯然,在沒有這些具體細(xì)節(jié)的情況下也可以實(shí)踐本發(fā)明。在其它實(shí)例下,眾所周知的結(jié)構(gòu)和設(shè)備以框圖形式示出,以避免不必要地模糊本發(fā)明。
[0016]概述
[0017]本文描述了用于加速對存儲(chǔ)在存儲(chǔ)設(shè)備中的數(shù)據(jù)庫數(shù)據(jù)的訪問的方法。存儲(chǔ)設(shè)備在一個(gè)或更多個(gè)主存儲(chǔ)設(shè)備中以基本主要格式存儲(chǔ)數(shù)據(jù)塊?;局饕袷娇梢允且韵氯魏我环N:行為主的格式、列為主的格式以及混合列式格式。響應(yīng)于從數(shù)據(jù)庫服務(wù)器接收到對數(shù)據(jù)的請求,存儲(chǔ)設(shè)備把在一個(gè)或更多個(gè)主存儲(chǔ)設(shè)備中以基本格式存儲(chǔ)的數(shù)據(jù)塊重寫為重寫主要格式(rewritten major format)。重寫主要格式不同于基本主要格式。重寫數(shù)據(jù)塊存儲(chǔ)在存儲(chǔ)設(shè)備高速緩存中,諸如閃存高速緩存。將數(shù)據(jù)塊重寫為替代格式并且把重寫數(shù)據(jù)塊存儲(chǔ)在存儲(chǔ)設(shè)備高速緩存中是在本文中被稱為重寫數(shù)據(jù)塊的操作。
[0018]該方法可以被實(shí)現(xiàn)為由計(jì)算設(shè)備執(zhí)行的方法,由存儲(chǔ)有指令的裝置、系統(tǒng)、設(shè)備或者在存儲(chǔ)有指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中實(shí)現(xiàn),其中,所述指令在被處理器執(zhí)行時(shí)實(shí)現(xiàn)該方法。
[0019]數(shù)據(jù)庫系統(tǒng)
[0020]由于本發(fā)明的實(shí)施例是在數(shù)據(jù)庫管理系統(tǒng)(DBMS)的背景下實(shí)現(xiàn)的,因此本文包括對數(shù)據(jù)庫管理系統(tǒng)的描述。數(shù)據(jù)庫管理系統(tǒng)管理數(shù)據(jù)庫。數(shù)據(jù)庫管理系統(tǒng)可以包括一個(gè)或更多個(gè)數(shù)據(jù)庫服務(wù)器。數(shù)據(jù)庫包括被存儲(chǔ)在諸如一組硬盤之類的持久存儲(chǔ)器機(jī)構(gòu)上的數(shù)據(jù)庫數(shù)據(jù)和元數(shù)據(jù)。元數(shù)據(jù)定義數(shù)據(jù)庫對象,諸如關(guān)系表、表列、視圖和觸發(fā)器。
[0021]數(shù)據(jù)庫應(yīng)用和客戶端通過向數(shù)據(jù)庫服務(wù)器提交使數(shù)據(jù)庫服務(wù)器對存儲(chǔ)在數(shù)據(jù)庫中的數(shù)據(jù)執(zhí)行操作的命令來與數(shù)據(jù)庫服務(wù)器交互。數(shù)據(jù)庫命令可以是符合數(shù)據(jù)庫語言的數(shù)據(jù)庫語句的形式。
[0022]用于表達(dá)數(shù)據(jù)庫請求的語言之一是結(jié)構(gòu)化查詢語言(SQL)。有許多不同版本的SQL;—些版本是標(biāo)準(zhǔn)的,其它的是專有的。還有對SQL的各種擴(kuò)展。SQL數(shù)據(jù)定義語言(DDL)指令可以發(fā)布給數(shù)據(jù)庫服務(wù)器,以創(chuàng)建或配置諸如表、視圖或復(fù)雜數(shù)據(jù)類型之類的數(shù)據(jù)庫對象。SQL/XML是在對象-關(guān)系數(shù)據(jù)庫中操縱XML數(shù)據(jù)時(shí)使用的常見SQL擴(kuò)展。
[0023]數(shù)據(jù)容器
[0024]一般而言,數(shù)據(jù)在數(shù)據(jù)庫內(nèi)按邏輯布置在一個(gè)或更多個(gè)數(shù)據(jù)容器中。每個(gè)容器包含記錄,并且每條記錄中的數(shù)據(jù)被組織成一個(gè)或更多個(gè)字段。在關(guān)系數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)容器典型地被稱為表,記錄被稱為行,而字段被稱為列。在面向?qū)ο蟮臄?shù)據(jù)庫中,數(shù)據(jù)容器典型地被稱為對象類型或類,記錄被稱為對象,而字段被稱為屬性。其它數(shù)據(jù)庫架構(gòu)可以使用其它術(shù)語。實(shí)現(xiàn)本方法的系統(tǒng)不限于任何特定類型的數(shù)據(jù)容器或任何特定類型的數(shù)據(jù)庫架構(gòu)。但是,出于說明的目的,本文所使用的示例和術(shù)語通常與關(guān)系數(shù)據(jù)庫或?qū)ο?關(guān)系數(shù)據(jù)庫相關(guān)聯(lián)。因此,術(shù)語“表”、“行”和“列”在本文中分別用來指代數(shù)據(jù)容器、記錄和字段。
[0025]數(shù)據(jù)容器典型地被存儲(chǔ)在硬盤上的一個(gè)或更多個(gè)數(shù)據(jù)塊中。因此,雖然發(fā)布到數(shù)據(jù)庫服務(wù)器的指令或查詢把數(shù)據(jù)稱為表、行和列,但是數(shù)據(jù)實(shí)際上作為一批數(shù)據(jù)塊存儲(chǔ)在數(shù)據(jù)庫中。通過使用各種存儲(chǔ)的元數(shù)據(jù)、索引和頭部,數(shù)據(jù)庫服務(wù)器能夠?qū)?shù)據(jù)塊內(nèi)的數(shù)據(jù)解釋為邏輯的表、行和列。
[0026]數(shù)據(jù)塊是為了存儲(chǔ)一個(gè)或更多個(gè)數(shù)據(jù)庫記錄(例如,行)或其部分的原始數(shù)據(jù)而分配的存儲(chǔ)空間的原子單元(atomic unit)。典型地,數(shù)據(jù)庫系統(tǒng)被配置為以不小于數(shù)據(jù)塊的單元從持久性高速緩存和易失性存儲(chǔ)器讀取和寫入數(shù)據(jù)庫記錄。當(dāng)需要檢索來自數(shù)據(jù)塊的記錄時(shí),含有該記錄(或該記錄的相關(guān)部分)的整個(gè)數(shù)據(jù)塊被讀到數(shù)據(jù)庫系統(tǒng)用來臨時(shí)存儲(chǔ)數(shù)據(jù)塊的緩沖區(qū)中。被讀到緩沖區(qū)中的數(shù)據(jù)塊可能包含其它記錄或者其部分。
[0027]存在用于將數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫中的幾種格式。兩種基本格式包括行為主的格式和列為主的格式。在行為主的格式中,單個(gè)行的列值連續(xù)地存儲(chǔ)在數(shù)據(jù)塊內(nèi)。在列為主的格式時(shí),多個(gè)行的某列的值被連續(xù)地存儲(chǔ)。在列為主的格式,數(shù)據(jù)塊可以只包含一列的值。行為主的格式和列為主的格式在本文中統(tǒng)稱為主要格式。
[0028]列為主的格式的一個(gè)優(yōu)點(diǎn)是它允許比行為主的格式更好的壓縮性。列內(nèi)的值可以具有共同屬性,因此,當(dāng)值被連續(xù)地存儲(chǔ)時(shí),可以用各種壓縮技術(shù)來利用共同屬性。
[0029]混合列式格式
[0030]混合列式格式是主要格式的另一個(gè)示例。在混合列式格式中,對于表的行子集,數(shù)據(jù)塊可以保持每個(gè)行子集的全部。但是,在數(shù)據(jù)塊內(nèi),子集行的列可以按列為主的格式存儲(chǔ)。
[0031]存在其中使用混合列式格式比使用行為主的格式或列為主的格式更有利的情形。混合列式格式的優(yōu)點(diǎn)之一是當(dāng)檢索特定的行時(shí)或者當(dāng)執(zhí)行表掃描時(shí)提供合理的性能。在混合列式格式中,檢索數(shù)據(jù)行或執(zhí)行表掃描可以更有效地執(zhí)行,因?yàn)榛旌狭惺礁袷皆试S按行為主的格式存儲(chǔ)一些數(shù)據(jù)并且按列為主的格式存儲(chǔ)其它數(shù)據(jù),并且允許針對不同的格式使用不同的壓縮算法。例如,一些數(shù)據(jù)塊可以按列為主的格式存儲(chǔ)表的第一列的數(shù)據(jù),而其它數(shù)據(jù)塊可以按行為主的格式存儲(chǔ)表的一組多個(gè)第二列的數(shù)據(jù)。因此,表的單個(gè)行可以在幾個(gè)數(shù)據(jù)塊中散布。因此,存儲(chǔ)第一列的數(shù)據(jù)的數(shù)據(jù)塊可以使用與用來對保持第二列的數(shù)據(jù)的數(shù)據(jù)塊中的數(shù)據(jù)進(jìn)行壓縮的算法不同的壓縮算法。向不同的數(shù)據(jù)格式應(yīng)用不同的壓縮算法的能力可以導(dǎo)致改善檢索數(shù)據(jù)或掃描表的過程。
[0032]關(guān)于數(shù)據(jù)塊的更多細(xì)節(jié)可以在標(biāo)題為“Structure of Hierarchical CompressedData Structure for Tabular Data” 的美國公開專利申請 N0.2010/0278446 中找到。關(guān)于各種壓縮格式的附加細(xì)節(jié)可以在標(biāo)題為“Compress1n Analyzer”的美國公開專利申請N0.2010/0281079中找到。關(guān)于不同數(shù)據(jù)格式存儲(chǔ)方法的附加細(xì)節(jié)可以在以下文獻(xiàn)中找到:Anastassia Ailamaki 等人的“Weaving Relat1ns for Cache Performance,,,2001 年羅馬第27屆VLDB會(huì)議期刊上發(fā)表;以及Ravishankar Ramamurthy等人的“A Case forFractured Mirrors”,在2002年香港第28屆VLDB會(huì)議期刊上發(fā)表。
[0033]增強(qiáng)的存儲(chǔ)設(shè)備
[0034]增強(qiáng)的存儲(chǔ)設(shè)備是被配置為與數(shù)據(jù)庫服務(wù)器協(xié)作并且向數(shù)據(jù)庫服務(wù)器提供經(jīng)過濾的和未過濾的數(shù)據(jù)塊的存儲(chǔ)設(shè)備。增強(qiáng)的存儲(chǔ)設(shè)備可以基于由數(shù)據(jù)庫服務(wù)器提供的過濾標(biāo)準(zhǔn)對數(shù)據(jù)塊中的數(shù)據(jù)執(zhí)行一些過