用于內(nèi)存列式存儲的n比特壓縮版本化列數(shù)據(jù)陣列的制作方法
【技術(shù)領(lǐng)域】
[0001 ]本文描述的主題涉及支持對內(nèi)存(in-memory)列式存儲的并發(fā)讀取者(reader)和寫入者(writer)訪問的η比特壓縮版本化(vers1ned)列數(shù)據(jù)陣列(array)。
【背景技術(shù)】
[0002]對于一些列式內(nèi)存數(shù)據(jù)存儲,列值可被字典壓縮。這種壓縮使得列中的每個不同值被映射到唯一的整數(shù)值。此映射是一對一的。這些整數(shù)值有時被稱為值ID或vid,作為值標(biāo)識符的簡寫。關(guān)聯(lián)到每個列的有這些vid的向量,其可被稱為列數(shù)據(jù)陣列或索引向量。對于列c,c的索引向量的位置P中的Vid V指示出對于列C,位置P處的行具有關(guān)聯(lián)到V的值。為了存儲效率,向量中的V i d可被打包,使得只使用η比特來表示向量中的每個V i d,其中η是表示最高vid所需要的比特的數(shù)目。例如,如果η等于2,則在索引向量的前64比特中,可存儲列中的前32行的vid。
【發(fā)明內(nèi)容】
[0003]在一個方面中,列式內(nèi)存數(shù)據(jù)庫的列中的每個不同的值被映射到不同的值標(biāo)識符。然后,通過在索引向量的第一后備陣列中的每個位置P處插入與行η對于該列所具有的值相對應(yīng)的值標(biāo)識符來填充第一后備陣列。第一后備陣列具有預(yù)定義的分配存儲器區(qū)塊并且索引向量中的每個位置是邏輯上η比特寬的。判定第一后備陣列對于要插入其中的后續(xù)值標(biāo)識符在預(yù)定義的分配存儲器區(qū)塊中不具有容量。隨后,基于這樣的判定,在不同的分配存儲器區(qū)塊中生成第二后備陣列,其包括第一組值標(biāo)識符并且對于要插入其中的后續(xù)值標(biāo)識符具有容量。接下來,后續(xù)值標(biāo)識符被插入在第二后備陣列中。
[0004]將會明白,術(shù)語“第一后備陣列”和“第二后備陣列”就是指創(chuàng)建這種后備陣列的相對時間,并且在第一后備陣列之前和第二后備陣列之后都可以有創(chuàng)建的后備陣列。在一些情況下,術(shù)語“舊后備陣列”可以指第一后備陣列,并且術(shù)語“新后備陣列”可以指第二后備陣列。
[0005]該判定可基于對于后續(xù)值標(biāo)識符沒有空的行位置。該判定可基于后續(xù)值標(biāo)識符具有超過η比特的寬度。
[0006]至少一個寫入者和至少一個讀取者可并發(fā)地訪問索引向量。
[0007]在后續(xù)值標(biāo)識符被插入到第二后備陣列中之后,第一后備陣列可被從存儲器沖刷掉。當(dāng)沒有在第二后備陣列的建立之前注冊的未完成讀取者時,第一后備陣列可被沖刷。讀取者可向(協(xié)調(diào)諸如沖刷存儲器之類的活動的)垃圾收集器注冊。
[0008]可以有向量索引的多個實例并且第二后備陣列可以是逐實例地生成的。
[0009]信號量(semaphore)可與每個索引向量相關(guān)聯(lián)。信號量可被指派給尋求生成第二后備陣列的第一寫入者。信號量可在將值標(biāo)識符從第一后備陣列拷貝到第二后備陣列中之后被釋放,并且第二后備陣列是作為索引向量的最新后備陣列建立的。
[0010]第二寫入者可等待指派給第一寫入者的信號量直到其被釋放為止。第二寫入者然后可在第二后備陣列上執(zhí)行寫入函子。
[0011]在給定的時間只可允許一個寫入者執(zhí)行對第一后備陣列的結(jié)構(gòu)性改變。在給定時間被允許執(zhí)行對第一后備陣列的結(jié)構(gòu)性改變的寫入者被提供對防止其他寫入者執(zhí)行結(jié)構(gòu)性改變的排斥機制的擁有權(quán)。
[0012]在有兩個或更多個寫入者并發(fā)地尋求執(zhí)行對第一后備陣列的結(jié)構(gòu)性改變的情況下,沒有排斥機制的一個或多個寫入者在結(jié)構(gòu)性改變對第二后備陣列做出之前等待對排斥機制的擁有權(quán)的釋放和隨后的提供??梢杂兄辽僖粋€與入者在另一與入者擁有排斥機制的同時并發(fā)地尋求執(zhí)行對第一后備陣列的非結(jié)構(gòu)性改變,并且在這種情況下,沒有排斥機制的寫入者可在非結(jié)構(gòu)性改變對第二后備陣列做出之前等待排斥機制的釋放。
[0013]寫入者可查詢排斥機制以獲得對排斥機制的擁有權(quán)或者將該寫入者置于休眠直到排斥機制對這種寫入者可用為止。排斥機制可采取各種形式,例如包括信號量、互斥鎖和自旋鎖。
[0014]也描述了存儲指令的非暫態(tài)計算機程序產(chǎn)品(S卩,物理上具體實現(xiàn)的計算機程序產(chǎn)品),這些指令在被一個或多個計算系統(tǒng)的一個或多個數(shù)據(jù)處理器執(zhí)行時使得至少一個數(shù)據(jù)處理器執(zhí)行這里的操作。類似地,也描述了計算機系統(tǒng),這些計算機系統(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ò)等等)的連接。
[0015]本文描述的主題提供了許多技術(shù)優(yōu)點。例如,當(dāng)前主題對于增量中的索引向量提供了(按存儲器的)高效表示,并且對于性能,允許了寫入者和讀取者并發(fā)地訪問增量索引向量。
[0016]本文描述的主題的一個或多個變化的細節(jié)在附圖和下面的描述中記載。本文描述的主題的其它特征和優(yōu)點將從描述和圖以及從權(quán)利要求中顯而易見。
【附圖說明】
[0017]圖1是圖示出商業(yè)軟件系統(tǒng)體系結(jié)構(gòu)的特征的圖;
[0018]圖2是圖示出商業(yè)軟件系統(tǒng)體系結(jié)構(gòu)的特征的另一幅圖;
[0019]圖3是主存儲中存儲的片段的示意性表示;
[0020]圖4是圖示出統(tǒng)一表格容器頁鏈的特征的圖;
[0021 ]圖5是圖示出統(tǒng)一表格增量的特征的圖;
[0022]圖6是圖示出統(tǒng)一表格未排序字典的特征的圖;
[0023]圖7是圖示出利用統(tǒng)一表格執(zhí)行增量合并操作和讀取操作的功能框圖;
[0024]圖8是圖示出具有第一后備陣列和第二后備陣列的索引向量的圖;
[0025]圖9是圖示出寫入者對信號量的使用的過程流程圖;
[0026]圖10是圖示出寫入函子的執(zhí)行的過程流程圖;并且
[0027]圖11是圖示出使能對索引向量的并發(fā)讀取者和寫入者訪問的技術(shù)的過程流程圖。
[0028]各幅圖中的同樣的參考符號指示同樣的元素。
【具體實施方式】
[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è)智能環(huán)境,等等),例如大小為若干拍字節(jié)或甚至更大的數(shù)據(jù)庫、具有多達數(shù)萬億行的表格,等等。
[0030]當(dāng)前主題可實現(xiàn)為企業(yè)資源規(guī)劃(enterprise resource planning,ERP)系統(tǒng)的核心軟件平臺、其它商業(yè)軟件體系結(jié)構(gòu)或者在特定組織的控制下的一個或多個處理器上運行的其它數(shù)據(jù)密集型計算應(yīng)用或軟件體系結(jié)構(gòu)。這個布置對于如下的大規(guī)模組織可能是非常有效的:這些組織具有非常富有經(jīng)驗的內(nèi)部信息技術(shù)(IT)職員,并且對于這些組織,在定制市售的商業(yè)軟件解決方案以結(jié)合組織特定的業(yè)務(wù)過程和功能一起工作所需要的計算硬件和咨詢服務(wù)上的相當(dāng)大的資本投入是可行的。圖1示出了符合這種實現(xiàn)方式的系統(tǒng)的圖100。計算系統(tǒng)110可包括提供商業(yè)軟件系統(tǒng)的一個或多個特征的一個或多個核心軟件平臺模塊120。該計算系統(tǒng)也可聚合或以其它方式提供一網(wǎng)關(guān),經(jīng)由該網(wǎng)關(guān),用戶可訪問由一個或多個外部軟件組件130提供的功能。客戶端機器140可經(jīng)由直接連接、本地終端或者通過網(wǎng)絡(luò)150(例如,局域網(wǎng)、廣域網(wǎng)、無線網(wǎng)絡(luò)、因特網(wǎng),等等)訪問該計算系統(tǒng)。
[0031]數(shù)據(jù)庫管理代理160或其它相當(dāng)?shù)墓δ芸稍L問數(shù)據(jù)庫管理系統(tǒng)170,數(shù)據(jù)庫管理系統(tǒng)170存儲數(shù)據(jù)并提供對數(shù)據(jù)的訪問(所述數(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,并且還包括符合本文描述的那些的并行化特征。
[0032]圖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可包括符合本文描述的特征的分成片段的主部分。
[0033]為了實現(xiàn)最佳可能壓縮并且也為了支持非常大的數(shù)據(jù)表格,表格的主部分可被劃分成一個或多個片段。圖3示出了主存儲210中存儲的各種片段的示