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