使用存儲器內(nèi)陣列和盤上頁結(jié)構(gòu)的雙重數(shù)據(jù)存儲的制作方法
【技術(shù)領(lǐng)域】
[0001]本公開概括而言涉及數(shù)據(jù)庫存儲,具體而言涉及使用存儲器內(nèi)陣列和盤上頁結(jié)構(gòu)的數(shù)據(jù)的雙重存儲。
【背景技術(shù)】
[0002]市售數(shù)據(jù)庫管理系統(tǒng)(database management system,DBMS)支持的數(shù)據(jù)庫大小隨著基于盤的存儲和系統(tǒng)存儲器的可用性和單位存儲成本的增大而持續(xù)增長。一般地,數(shù)據(jù)庫的特征可以是數(shù)據(jù)的盤上存儲,其中數(shù)據(jù)記錄被存儲在存儲介質(zhì)(例如,硬盤、光存儲、固態(tài)存儲等等)上的一個或多個表格或其他數(shù)據(jù)庫結(jié)構(gòu)中并且根據(jù)需要被讀取到主系統(tǒng)存儲器中以響應(yīng)查詢或其他數(shù)據(jù)庫操作?;蛘?,數(shù)據(jù)庫的特征可以是數(shù)據(jù)的存儲器內(nèi)存儲,其中數(shù)據(jù)記錄被存儲在主系統(tǒng)存儲器中。隨著主系統(tǒng)存儲器的成本持續(xù)減小,對存儲器內(nèi)特征的顯著使用的可行性增大了。然而,數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)容量要求也持續(xù)增大。這樣,涉及存儲器內(nèi)和盤上系統(tǒng)兩者的特征的混合方案也是有利的。
【發(fā)明內(nèi)容】
[0003]對于使用存儲器內(nèi)陣列和盤上頁結(jié)構(gòu)的數(shù)據(jù)的雙重存儲,提供了方法和裝置,包括計算機(jī)程序產(chǎn)品。
[0004]在一個方面中,維護(hù)保持?jǐn)?shù)據(jù)列的存儲器內(nèi)陣列。也維護(hù)一個或多個頁。一個或多個頁中的每一個具有用于存儲數(shù)據(jù)列的一個或多個行。通過至少將行的子集從一個或多個頁加載到存儲器內(nèi)陣列而不從一個或多個頁加載所有行來提供對一個或多個行的子集的隨機(jī)訪問。
[0005]上述方法、裝置和計算機(jī)程序產(chǎn)品在一些實現(xiàn)方式中還可包括以下特征中的一個或多個。
[0006]存儲器內(nèi)陣列可具有連續(xù)的存儲器地址塊。連續(xù)的存儲器地址塊可在所有數(shù)據(jù)被加載到存儲器內(nèi)陣列中時支持對數(shù)據(jù)的隨機(jī)訪問。
[0007]存儲器內(nèi)陣列中的數(shù)據(jù)列可包括一個或多個值標(biāo)識符。
[0008]—個或多個值標(biāo)識符可以是以原生格式(native format)編碼的。一個或多個頁上的一個或多個行可以以原生格式存儲一個或多個值標(biāo)識符。原生格式可使用N比特編碼方案。
[0009]—個或多個頁上的一個或多個行在一個或多個值標(biāo)識符是空值時不能為列存儲任何數(shù)據(jù)。
[0010]一個或多個頁上的一個或多個行在身份屬性適用于列時不能為列存儲任何數(shù)據(jù)。當(dāng)每個值標(biāo)識符的值等于與該值標(biāo)識符相關(guān)聯(lián)的行位置時,身份屬性可適用于該列。
[0011]加載可在計算系統(tǒng)正被恢復(fù)時執(zhí)行。
[0012]也描述了存儲指令的非暫態(tài)計算機(jī)程序產(chǎn)品(即,物理實現(xiàn)的計算機(jī)程序產(chǎn)品),這些指令在被一個或多個計算系統(tǒng)的一個或多個數(shù)據(jù)處理器執(zhí)行時使得至少一個數(shù)據(jù)處理器執(zhí)行這里的操作。類似地,也描述了計算機(jī)系統(tǒng),這些計算機(jī)系統(tǒng)可包括一個或多個數(shù)據(jù)處理器和耦合到這一個或多個數(shù)據(jù)處理器的存儲器。存儲器可臨時或永久地存儲指令,這些指令使得至少一個處理器執(zhí)行本文描述的操作中的一個或多個。此外,方法可由單個計算系統(tǒng)內(nèi)的或者分布在兩個或更多個計算系統(tǒng)間的一個或多個數(shù)據(jù)處理器實現(xiàn)。這種計算系統(tǒng)可被連接并且可經(jīng)由一個或多個連接、經(jīng)由多個計算系統(tǒng)中的一個或多個之間的直接連接等等來交換數(shù)據(jù)和/或命令或其他指令等等,所述一個或多個連接包括但不限于通過網(wǎng)絡(luò)(例如,因特網(wǎng)、無線廣域網(wǎng)、局域網(wǎng)、廣域網(wǎng)、有線網(wǎng)絡(luò)等等)的連接。
[0013]本文描述的主題提供了許多技術(shù)優(yōu)點。例如,在一些實現(xiàn)方式中,將數(shù)據(jù)存儲在存儲器陣列和頁結(jié)構(gòu)中結(jié)合了傳統(tǒng)的基于盤/頁的系統(tǒng)和存儲器內(nèi)數(shù)據(jù)庫系統(tǒng)固有的優(yōu)點。使用存儲器陣列例如允許了數(shù)據(jù)被以存儲器優(yōu)化格式來寫入和存儲。另外,使用頁結(jié)構(gòu)可支持對數(shù)據(jù)的迅速隨機(jī)訪問。
[0014]本文描述的主題的一個或多個變化的細(xì)節(jié)在附圖和下面的描述中記載。本文描述的主題的其他特征和優(yōu)點將從描述和附圖以及從權(quán)利要求中清楚顯現(xiàn)。
【附圖說明】
[0015]被并入在此并構(gòu)成本說明書的一部分的附圖示出了本文公開的主題的某些方面,并且與描述一起幫助說明與本文公開的主題相關(guān)聯(lián)的一些原理。在附圖中,
[0016]圖1是圖示出業(yè)務(wù)軟件系統(tǒng)體系結(jié)構(gòu)的特征的圖;
[0017]圖2是圖示出業(yè)務(wù)軟件系統(tǒng)體系結(jié)構(gòu)的特征的另一幅圖;
[0018]圖3是主存儲中存儲的片段的示意性表示;
[0019]圖4是圖示出統(tǒng)一表格容器頁鏈的特征的圖;
[0020]圖5是圖示出統(tǒng)一表格增量的特征的圖;
[0021]圖6是圖示出統(tǒng)一表格未排序字典的特征的圖;
[0022]圖7是圖示出使用統(tǒng)一表格的增量合并操作和讀取操作的功能框圖;
[0023]圖8是具有存儲器陣列和盤上頁結(jié)構(gòu)的系統(tǒng)體系結(jié)構(gòu)的功能框圖;
[0024]圖9是頁的示意性表示;
[0025]圖10是卸載位圖的示意性表示;
[0026]圖11是用于利用雙重存儲器表示方案提供對數(shù)據(jù)的隨機(jī)訪問的過程流程圖;并且
[0027]圖12是用于將數(shù)據(jù)從存儲器陣列實體化到頁的過程流程圖。
[0028]各幅圖中的相似附圖標(biāo)記指示相似的元素。
【具體實施方式】
[0029]當(dāng)前主題包括數(shù)個方面,這些方面可被單獨應(yīng)用或者將一個或多個這種方面組合應(yīng)用,來支持一種統(tǒng)一數(shù)據(jù)庫表格方案,該方案將存儲器內(nèi)數(shù)據(jù)庫方案的性能優(yōu)點與盤上數(shù)據(jù)庫方案的降低的存儲成本相集成。當(dāng)前主題可在以下系統(tǒng)中實現(xiàn):使用存儲器內(nèi)OLAP的數(shù)據(jù)庫系統(tǒng),例如包括大小為若干萬億字節(jié)(或更大)的數(shù)據(jù)庫,具有數(shù)十億(或更多)行的表格,等等;使用存儲器內(nèi)OLTP的系統(tǒng)(例如,企業(yè)資源規(guī)劃或ERP系統(tǒng)等等),例如具有高事務(wù)量的大小為若干萬億字節(jié)(或更大)的數(shù)據(jù)庫;以及使用盤上OLAP的系統(tǒng)(例如,“大數(shù)據(jù)”,用于高級分析的分析服務(wù)器、數(shù)據(jù)倉庫、業(yè)務(wù)智能環(huán)境,等等),例如大小為若干千萬億字節(jié)或甚至更大的數(shù)據(jù)庫、具有多達(dá)數(shù)萬億行的表格,等等。
[0030]另外,當(dāng)前主題涉及并針對如本文所述的許多方面并且還涉及與本申請同時于2014年11月25日遞交的以下專利申請:標(biāo)題“In-Memory Database System ProvidingLockless Read and Write Operat1ns for OLAP and OLTP Transact1ns,,,發(fā)明人 Anil Kumar Goel、Ivan Schreter、Juchang Lee、Mihnea Andrei (代理人案卷號54874_063R)1US/141088US01),其內(nèi)容在此被通過引用完全并入。
[0031]當(dāng)前主題可實現(xiàn)為企業(yè)資源規(guī)劃(enterprise resource planning,ERP)系統(tǒng)的核心軟件平臺、其他業(yè)務(wù)軟件體系結(jié)構(gòu)或者在特定組織的控制下的一個或多個處理器上運(yùn)行的其他數(shù)據(jù)密集型計算應(yīng)用或軟件體系結(jié)構(gòu)。這個布置對于這樣的大規(guī)模組織可能是非常有效的:這些組織具有非常富有經(jīng)驗的內(nèi)部信息技術(shù)(IT)職員,并且對于這些組織,在定制市售的業(yè)務(wù)軟件解決方案以結(jié)合組織特定的業(yè)務(wù)流程和功能一起工作所需要的計算硬件和咨詢服務(wù)上的相當(dāng)大的資本投入是可行的。圖1示出了符合這種實現(xiàn)方式的系統(tǒng)的圖100。計算系統(tǒng)110可包括提供業(yè)務(wù)軟件系統(tǒng)的一個或多個特征的一個或多個核心軟件平臺模塊120。該計算系統(tǒng)也可聚合或以其他方式提供一網(wǎng)關(guān),經(jīng)由該網(wǎng)關(guān),用戶可訪問由一個或多個外部軟件組件130提供的功能??蛻舳藱C(jī)器140可經(jīng)由直接連接、本地終端或者通過網(wǎng)絡(luò)150 (例如,局域網(wǎng)、廣域網(wǎng)、無線網(wǎng)絡(luò)、因特網(wǎng),等等)訪問該計算系統(tǒng)。
[0032]數(shù)據(jù)庫管理代理160或其他相當(dāng)?shù)墓δ芸稍L問數(shù)據(jù)庫管理系統(tǒng)170,數(shù)據(jù)庫管理系統(tǒng)170存儲并提供對數(shù)據(jù)的訪問(例如,業(yè)務(wù)場景、業(yè)務(wù)流程和一個或多個業(yè)務(wù)配置的定義,以及與業(yè)務(wù)場景、業(yè)務(wù)流程和一個或多個業(yè)務(wù)配置的定義有關(guān)的數(shù)據(jù)、元數(shù)據(jù)、主數(shù)據(jù)等等,和/或與業(yè)務(wù)場景或業(yè)務(wù)流程的特定實例相關(guān)的數(shù)據(jù)對象和/或業(yè)務(wù)對象的具體實例,等等)。數(shù)據(jù)庫管理系統(tǒng)170可包括至少一個表格180,并且還包括符合本文描述的那些的并行化特征。
[0033]圖2示出了圖示可包括在符合當(dāng)前主題的實現(xiàn)方式的數(shù)據(jù)庫或數(shù)據(jù)庫管理系統(tǒng)中的特征的體系結(jié)構(gòu)200的框圖??杀槐4嬖诙鄠€數(shù)據(jù)卷204之間的表格數(shù)據(jù)存儲202可包括以下各項中的一個或多個:增量存儲206(例如,分頁增量部分,其可以可選地是OLTP優(yōu)化的并且可以可選地包括合并過程208)、索引存儲212 (例如,一個或多個分段索引)以及主存儲210。主存儲210可包括符合本文描述的特征的分成片段的主部分。
[0034]為了實現(xiàn)最佳可能壓縮并且也為了支持非常大的數(shù)據(jù)表格,表格的主部分可被劃分成一個或多個片段。圖3示出了主存儲210中存儲的各種片段的示意性表示300。一個或多個主片段或片段330可用于數(shù)據(jù)庫的每個表格或列。小的、易管理的表格可利用單個片段來表不。非常大的表格可被分割成兩個或更多個表格分區(qū)335。每個表格分區(qū)進(jìn)而可包括兩個或更多個片段330。片段330可以是其所屬的表格的水平切片。每個片段330可包括一個或多個列