欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

固定和可變長度數(shù)據(jù)庫列的卸載投影的方法和系統(tǒng)的制作方法

文檔序號(hào):6619745閱讀:171來源:國知局
固定和可變長度數(shù)據(jù)庫列的卸載投影的方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明涉及一種固定和可變長度數(shù)據(jù)庫列的卸載投影的方法和系統(tǒng)。在本發(fā)明的一個(gè)示例性實(shí)施例中,一種計(jì)算機(jī)實(shí)現(xiàn)的方法包括確定數(shù)據(jù)庫查詢授權(quán)第一投影操作將多個(gè)輸入行投影到多個(gè)被投影行,其中所述多個(gè)輸入行中的每一行具有一個(gè)或多個(gè)變長列。通過計(jì)算機(jī)處理器構(gòu)建第一投影控制塊以描述所述第一投影操作。將所述第一投影操作卸載到硬件加速器。將所述第一投影控制塊提供給所述硬件加速器,并且所述第一投影控制塊使所述硬件加速器能夠以流速率執(zhí)行所述第一投影操作。
【專利說明】固定和可變長度數(shù)據(jù)庫列的卸載投影的方法和系統(tǒng)

【技術(shù)領(lǐng)域】
[0001]本公開的各實(shí)施例涉及數(shù)據(jù)庫管理系統(tǒng),更具體地說,涉及針對(duì)數(shù)據(jù)庫表的固定和變長列的硬件投影(project1n)卸載數(shù)據(jù)。

【背景技術(shù)】
[0002]投影指解析數(shù)據(jù)庫表的記錄(即,行)以便從記錄中選擇特定字段并以特定的方式對(duì)它們進(jìn)行布置的處理。如投影結(jié)果中所需的,通常執(zhí)行這一處理以便向應(yīng)用報(bào)告重新布置的字段,或者通過已布置好的分類鍵實(shí)現(xiàn)更有效的記錄分類。在當(dāng)前的數(shù)據(jù)庫管理系統(tǒng)(DBMS)中,投影通常在軟件中執(zhí)行,并且在中央處理單元(CPU)上產(chǎn)生很大的成本。


【發(fā)明內(nèi)容】

[0003]在本公開的一個(gè)實(shí)施例中,一種計(jì)算機(jī)實(shí)現(xiàn)的方法包括確定數(shù)據(jù)庫查詢授權(quán)第一投影操作將多個(gè)輸入行投影到多個(gè)被投影行,其中所述多個(gè)輸入行中的每一行具有一個(gè)或多個(gè)變長列。通過計(jì)算機(jī)處理器構(gòu)建第一投影控制塊以描述所述第一投影操作。將所述第一投影操作卸載到硬件加速器。將所述第一投影控制塊提供給所述硬件加速器,并且所述第一投影控制塊使所述硬件加速器能夠以流速率執(zhí)行所述第一投影操作。
[0004]在另一個(gè)實(shí)施例中,一種系統(tǒng)包括查詢接受方(recipient)和投影控制器。所述查詢接受方被配置成確定數(shù)據(jù)庫查詢授權(quán)第一投影操作將多個(gè)輸入行投影到多個(gè)被投影行,其中所述多個(gè)輸入行中的每一行具有一個(gè)或多個(gè)變長列。所述投影控制器被配置成構(gòu)建第一投影控制塊以描述所述第一投影操作,將所述第一投影操作卸載到硬件加速器,以及將所述第一投影控制塊提供給所述硬件加速器。所述第一投影控制塊使所述硬件加速器能夠以流速率執(zhí)行所述第一投影操作。
[0005]在又一個(gè)實(shí)施例中,一種計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上包含有計(jì)算機(jī)可讀程序代碼。所述計(jì)算機(jī)可讀程序代碼可由處理執(zhí)行以執(zhí)行一種方法。所述方法包括確定數(shù)據(jù)庫查詢授權(quán)第一投影操作將多個(gè)輸入行投影到多個(gè)被投影行,其中所述多個(gè)輸入行中的每一行具有一個(gè)或多個(gè)變長列。進(jìn)一步根據(jù)該方法,通過計(jì)算機(jī)處理器構(gòu)建第一投影控制塊以描述所述第一投影操作。將所述第一投影操作卸載到硬件加速器。將所述第一投影控制塊提供給所述硬件加速器,并且所述第一投影控制塊使所述硬件加速器能夠以流速率執(zhí)行所述第一投影操作。
[0006]通過本發(fā)明的技術(shù)實(shí)現(xiàn)額外的特征和優(yōu)點(diǎn)。在此,詳細(xì)地描述本發(fā)明的其他實(shí)施例和方面并將它們視為要求保護(hù)的發(fā)明的一部分。為更好地理解本發(fā)明的優(yōu)點(diǎn)和特征,請(qǐng)參考說明書和附圖。

【專利附圖】

【附圖說明】
[0007]在說明書結(jié)尾處的權(quán)利要求中具體指出并明確要求保護(hù)了被視為本發(fā)明的主題。從下面結(jié)合附圖的詳細(xì)說明,本發(fā)明的上述和其他目標(biāo)、特性和優(yōu)點(diǎn)將變得顯而易見,這些附圖是:
[0008]圖1是根據(jù)本公開的一個(gè)示例性實(shí)施例的用于實(shí)現(xiàn)投影系統(tǒng)的一些或全部方面的計(jì)算設(shè)備的框圖;
[0009]圖2是根據(jù)本公開的一個(gè)示例性實(shí)施例的輸入行和由投影系統(tǒng)所投影的被投影列的框圖;
[0010]圖3是根據(jù)本公開的一個(gè)示例性實(shí)施例的投影系統(tǒng)的框圖;
[0011]圖4A是根據(jù)本公開的一個(gè)示例性實(shí)施例的由投影系統(tǒng)生成的投影控制塊的框圖;
[0012]圖4B是根據(jù)本公開的一個(gè)示例性實(shí)施例的投影控制塊中的投影控制元素的框圖;
[0013]圖5A和5B是根據(jù)本公開的一個(gè)示例性實(shí)施例的存儲(chǔ)在硬件加速器中的投影控制元素的框圖;以及
[0014]圖6是根據(jù)本公開的一個(gè)示例性實(shí)施例的用于實(shí)現(xiàn)投影操作的方法的流程圖。

【具體實(shí)施方式】
[0015]本公開的各實(shí)施例實(shí)現(xiàn)向硬件加速器卸載投影操作。出于各種原因,在硬件中執(zhí)行投影是有利的。當(dāng)應(yīng)用發(fā)出指示投影的數(shù)據(jù)庫查詢時(shí),在硬件中執(zhí)行該投影以應(yīng)用要求的方式格式化數(shù)據(jù),從而減輕了主機(jī)處理器在這方面的負(fù)擔(dān)。其次,一些硬件加速器已經(jīng)被配置成執(zhí)行斷定(predicate)評(píng)估。投影可以與斷定評(píng)估并行執(zhí)行,從而將甚至更多的計(jì)算卸載到硬件,而不增加延遲或影響整體吞吐量。在給定數(shù)據(jù)傳輸中,被卸載的投影增加了被卸載的計(jì)算量,從而更好地分?jǐn)偭伺c數(shù)據(jù)傳輸相關(guān)聯(lián)的成本。
[0016]進(jìn)一步,硬件中的投影提供了帶寬和存儲(chǔ)節(jié)省。通過將不想要的列從每個(gè)數(shù)據(jù)庫記錄中移除,投影減少了返回到主機(jī)處理器的數(shù)據(jù)量,從而優(yōu)化利用了硬件到主機(jī)的總線帶寬。在硬件上需要進(jìn)一步的行處理并且那些行需要暫時(shí)本地存儲(chǔ)在硬件上的情況下,在該存儲(chǔ)之前執(zhí)行的投影通過減少該處存儲(chǔ)的數(shù)據(jù)量而幫助優(yōu)化了硬件內(nèi)存的使用。
[0017]如果數(shù)據(jù)庫記錄還需要被存儲(chǔ)在硬件加速器上,則可能需要投影提取那些形成分類鍵的列,從而使投影成為分類的先決步驟。因此,列投影的硬件加速帶來了許多益處。
[0018]本公開的一些實(shí)施例是投影系統(tǒng),所述投影系統(tǒng)提供了以總線速度,以流方式來處理變長列的列投影的能力。當(dāng)與被卸載到硬件加速器的其他數(shù)據(jù)庫操作耦合時(shí),該投影可以被并行地執(zhí)行,從而卸載并加速了額外的數(shù)據(jù)庫功能而沒有額外延遲或吞吐量降級(jí)。
[0019]圖1示出了在實(shí)現(xiàn)根據(jù)一些實(shí)施例的投影系統(tǒng)或方法中使用的計(jì)算機(jī)系統(tǒng)100的框圖。在此所述的投影系統(tǒng)和方法可以用硬件、軟件(例如,固件)或其組合來實(shí)現(xiàn)。在一個(gè)示例性實(shí)施例中,所述方法可以至少部分地用硬件實(shí)現(xiàn),并且可以是專用或通用計(jì)算機(jī)系統(tǒng)100(例如,個(gè)人計(jì)算機(jī)、工作站、微計(jì)算機(jī)或大型計(jì)算機(jī))的微處理器的一部分。
[0020]在一個(gè)示例性實(shí)施例中,如圖1所示,計(jì)算機(jī)系統(tǒng)100包括處理器105、耦合到存儲(chǔ)器控制器115的存儲(chǔ)器110,以及一個(gè)或多個(gè)輸入和/或輸出(I/O)設(shè)備140和145,例如外設(shè),其經(jīng)由本地I/O控制器135通信地耦合。如在本領(lǐng)域中所知的,I/O控制器135可以例如是但不限于一個(gè)或多個(gè)總線或其他有線或無線連接。I/O控制器135可以具有為簡化起見而省略的附加元件(例如控制器、緩沖器(高速緩存)、驅(qū)動(dòng)器、中繼器和接收器)來實(shí)現(xiàn)通信。
[0021]處理器105是用于執(zhí)行硬件指令或軟件,尤其是那些存儲(chǔ)在存儲(chǔ)器110中的軟件的硬件設(shè)備。處理器105可以是任何定制或市售的處理器、中央處理單元(CPU)、與計(jì)算機(jī)系統(tǒng)100相關(guān)聯(lián)的若干處理器中的輔助處理器,基于半導(dǎo)體的微處理器(形式為微芯片或芯片組)、宏處理器或用于執(zhí)行指令的其他設(shè)備。處理器105包括高速緩存170,其可以包括但不限于加速可執(zhí)行指令取回的指令高速緩存、加速數(shù)據(jù)取回和存儲(chǔ)的數(shù)據(jù)高速緩存,以及用來加速用于可執(zhí)行指令和數(shù)據(jù)的虛擬到物理地址轉(zhuǎn)譯的轉(zhuǎn)譯后備緩沖器(TLB)。高速緩存170可以被組織為一個(gè)具有更多緩存級(jí)(L1、L2等)的層級(jí)。
[0022]存儲(chǔ)器110可以包括易失性存儲(chǔ)器元件(例如,隨機(jī)存取存儲(chǔ)器RAM,例如DRAM、SRAM、SDRAM等等)和非易失性存儲(chǔ)器元件(例如,ROM、可擦除可編程只讀存儲(chǔ)器(EPROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、可編程只讀存儲(chǔ)器(PROM)、磁帶、緊湊盤只讀存儲(chǔ)器(CD-ROM、磁盤、軟磁盤、盒式磁盤、盒式磁帶等等))中的任意一種或其組合。此外,存儲(chǔ)器110可以包含電、磁、光或其他類型的存儲(chǔ)介質(zhì)。注意,存儲(chǔ)器110可以具有分布式架構(gòu),其中不同組件相互遠(yuǎn)離但可以被處理器105訪問。
[0023]存儲(chǔ)器110中的指令可以包括一個(gè)或多個(gè)單獨(dú)的程序,每個(gè)程序包括用于實(shí)現(xiàn)邏輯功能的可執(zhí)行指令的排序列表。在圖1的例子中,存儲(chǔ)器110中的指令包括合適的操作系統(tǒng)(OS) 111。操作系統(tǒng)111基本上可以控制其他計(jì)算機(jī)程序的執(zhí)行,并且提供調(diào)度、輸入-輸出控制、文件和數(shù)據(jù)管理、存儲(chǔ)器管理以及通信控制和相關(guān)服務(wù)。
[0024]例如,包括用于處理器105的指令的額外數(shù)據(jù)或其他可取回信息,可以被存儲(chǔ)在存儲(chǔ)器120中,存儲(chǔ)器120可以是諸如硬盤驅(qū)動(dòng)器的存儲(chǔ)設(shè)備。
[0025]在一個(gè)示例性實(shí)施例中,傳統(tǒng)鍵盤150和鼠標(biāo)155可以被耦合到I/O控制器135。諸如I/o設(shè)備140和145之類的其他輸出設(shè)備可以包括輸入設(shè)備,例如但不限于打印機(jī)、掃描儀、麥克風(fēng)等等。I/O設(shè)備140、145還可以包括傳送輸入和輸出的設(shè)備,例如但不限于網(wǎng)絡(luò)接口卡(NIC)或調(diào)制器/解調(diào)器(用于訪問其他文件、設(shè)備、系統(tǒng)或網(wǎng)絡(luò))、射頻(RF)或其他收發(fā)機(jī)、電話接口、橋接器、路由器等等。
[0026]計(jì)算機(jī)系統(tǒng)100還可以包括被耦合到顯示器130的顯示控制器125。在一個(gè)示例性實(shí)施例中,計(jì)算機(jī)系統(tǒng)100還可以包括網(wǎng)絡(luò)接口 160以耦合到網(wǎng)絡(luò)165。網(wǎng)絡(luò)165可以是一個(gè)基于IP的網(wǎng)絡(luò),其用于經(jīng)由寬帶連接在計(jì)算機(jī)系統(tǒng)100和任何外部服務(wù)器、客戶端等等之間通信。網(wǎng)絡(luò)165在計(jì)算機(jī)系統(tǒng)100和外部系統(tǒng)之間發(fā)送和接收數(shù)據(jù)。在一個(gè)示例性實(shí)施例中,網(wǎng)絡(luò)165可以是由服務(wù)提供商管制的被管理IP網(wǎng)絡(luò)。網(wǎng)絡(luò)165能以無線方式實(shí)現(xiàn),例如,以諸如WiF1、WiMax等等之類的無線協(xié)議和技術(shù)實(shí)現(xiàn)。網(wǎng)絡(luò)165還可以是分組交換網(wǎng)絡(luò),例如局域網(wǎng)、廣域網(wǎng)、城域網(wǎng)、互聯(lián)網(wǎng)或其他類似的網(wǎng)絡(luò)環(huán)境類型。網(wǎng)絡(luò)165可以是固定式無線網(wǎng)絡(luò)、無線局域網(wǎng)(LAN)、無線廣域網(wǎng)(WAN)、個(gè)人區(qū)域網(wǎng)(PAN)、虛擬專用網(wǎng)(VPN)、內(nèi)聯(lián)網(wǎng)或其他合適的網(wǎng)絡(luò)系統(tǒng),并且可以包括用于接收和發(fā)送信號(hào)的裝備。
[0027]根據(jù)本公開的系統(tǒng)和方法可以全部或部分地包含在計(jì)算機(jī)程序產(chǎn)品或如圖1所示的計(jì)算機(jī)系統(tǒng)100中。
[0028]圖2是根據(jù)本公開的一個(gè)示例性實(shí)施例的輸入行210和由投影系統(tǒng)300 (圖3)投影的被投影行220的框圖。如圖所示,輸入行210可以包括定長列、接下來的可變偏移、接下來的變長列。在單個(gè)行內(nèi),可變偏移指示變長列的位置。應(yīng)當(dāng)理解,隨著列長度發(fā)生變化,這些可變偏移也可隨著行發(fā)生變化。
[0029]在一些實(shí)施例中,投影系統(tǒng)300輸出的被投影行220可以包括一列或多列,通過添加填充來達(dá)到所有行當(dāng)中的最大列長度,這些列已經(jīng)從輸入行210中的變長轉(zhuǎn)換成定長。這類填充的列子由圖2的列V2示出,其已經(jīng)作為被投影行220的分類鍵的一部分被填充。在數(shù)據(jù)庫指示需要固定列來滿足查詢操作的要求(例如分類或應(yīng)用要求)的情況下,該填充特別有用。
[0030]圖3是根據(jù)本公開的一個(gè)示例性實(shí)施例的投影系統(tǒng)300的框圖。如圖所示,投影系統(tǒng)300可以包括卸載系統(tǒng)310和硬件加速器330。卸載系統(tǒng)310可以包括查詢接受方315和投影控制器320。在卸載系統(tǒng)310中,該卸載系統(tǒng)310可以在主機(jī)上也可以與主機(jī)通信,查詢接受方315可以接收一個(gè)新的數(shù)據(jù)庫查詢。然后,查詢接受方315可以判定該查詢是否授權(quán)投影,如果是,則可以將該查詢傳遞到投影控制器320。接著,投影控制器320可以構(gòu)建一個(gè)表示該查詢的期望投影的投影控制塊(PCB),然后將該P(yáng)CB轉(zhuǎn)發(fā)給硬件加速器330以便處理。在一些實(shí)施例中,可以使用多個(gè)硬件加速器330并且它們可以同時(shí)運(yùn)行。在此情況下,投影控制器320可以按照需要在多個(gè)加速器330之間分配投影任務(wù)。
[0031]圖4A是根據(jù)本公開的一個(gè)示例性實(shí)施例的PCB400的框圖。當(dāng)接收到授權(quán)數(shù)據(jù)庫列的投影的查詢時(shí),投影控制器320可以為硬件加速器330建立此類PCB400以表示該查詢。如圖所示,PCB400可以包括標(biāo)頭410、分類鍵填充模板420、保留段430和一組投影控制元素(PCE) 440。
[0032]PCB標(biāo)頭410可以包含關(guān)于該查詢的元數(shù)據(jù),例如包括固定列的數(shù)量、待投影的可變列的數(shù)量、輸入行中的可變偏移的開始和結(jié)束位置、分類鍵的長度以及分類順序(例如,升序或降序)。
[0033]一些示例性實(shí)施例支持長至40字節(jié)的復(fù)合分類鍵,其用多至16個(gè)的變長列和/或定長列以固定順序安排而形成。分類鍵填充模板420可以用一個(gè)或多個(gè)填充字符進(jìn)行填充,這些填充字符在后面可以被硬件加速器330用于在分類鍵內(nèi)填充變長列。在一個(gè)示例性實(shí)施例中,對(duì)于分類鍵中的每個(gè)潛在列,分類鍵填充模板420可以包括一個(gè)填充字符。因此,分類鍵填充模板420可以是40字節(jié)長,如最大分類鍵長度那樣。
[0034]將查詢要求轉(zhuǎn)化成該P(yáng)CB數(shù)據(jù)結(jié)構(gòu)400可以是在主機(jī)處理器上的卸載系統(tǒng)310中執(zhí)行的一次性預(yù)處理步驟。在被構(gòu)建之后,PCB400可以被轉(zhuǎn)發(fā)給硬件加速器330并存儲(chǔ)在其中以待在投影中起到幫助。通過使用此PCB結(jié)構(gòu)400,投影系統(tǒng)300可以允許使用硬件加速器330為具有用于各式各樣查詢的定長列和變長列的多個(gè)表執(zhí)行分類和投影,而不會(huì)招致為每次查詢重新配置硬件加速器330的懲罰。替代地,PCB400實(shí)現(xiàn)了一種更顯著有效的軟配置。
[0035]如圖所示,PCB400可以包括一個(gè)或多個(gè)PCE440,其中每個(gè)PCE表示待投影列。在所示的PCB400中,空間被分配給多至64個(gè)的PCE,其中每個(gè)PCE440占據(jù)16字節(jié)的空間。因此,該P(yáng)CB400支持投影多至64個(gè)定長列或變長列。PCB400的大小,及其可攜帶的PCE440的數(shù)量可以通過硬件加速器330上的空間限制來確定。如果在硬件加速器330上提供了足夠的存儲(chǔ)空間,則PCB400的大小以及PCE440的數(shù)量可以更大。類似地,PCB400的大小可以從圖中所示的大小減小以便減少硬件加速器330上由PCB400使用的空間。
[0036]每個(gè)PCE440可以是固定PCE440或可變PCE440,其中固定PCE440表示定長列,可變PCE440表示變長列。固定PCE440可以包含用于列開始位置的字段、用于列長度的字段,以及用于將被輸出的被投影行220中的列開始位置的字段。如果希望分類操作,則PCE440還可以識(shí)別列在分類鍵中的位置,如果該列包含在分類鍵中的話。對(duì)于變長列,因?yàn)榱械拈L度和位置沒有固定,所以PCE440可以包括類似的數(shù)據(jù),不同之處在于所用的開始位置可以是可變偏移的位置,并且列長度可以是查詢中跨所有行的最大定義長度。也可以使用各種其他數(shù)據(jù),包括一個(gè)或多個(gè)位長標(biāo)志,用來向硬件加速器330指示信息。
[0037]圖4B是根據(jù)本公開的一個(gè)示例性實(shí)施例的PCE440的框圖。應(yīng)當(dāng)理解,所示的PCE440中的數(shù)據(jù)布置和提供的數(shù)據(jù)是實(shí)現(xiàn)相關(guān)的,并且該P(yáng)CE圖示只是被提供用于例示目的。如圖所示,在圖4B中,PCE440可以包括列開始字段,其指示固定列的開始位置或是可變列的偏移位置。列長度字段可以指示固定列的長度或者可變列的最大長度。目的地開始字段可以指示所期望的被投影行220中的固定列的開始位置或者可變列的偏移值。鍵目的地字段可以指示所期望的被投影行220中的列的開始位置。列順序字段可以指示輸入行210中的列相對(duì)于可變列的順序。在固定列的情況下,該字段可以是無效的并且可以被忽略。所示的L、V、P和K字段可以是位長字段。圖4中的L字段可以指示該列是否是輸入行210中的最后一列。V字段可以指示該列是否是變長列。在定長列的情況下,L字段和V字段都可以是無效的并且可以被忽略。P字段可以指示是否希望投影該列。K字段可以指示該列是否是分類鍵的一部分。
[0038]返回參考圖3,在建立與給定查詢對(duì)應(yīng)的PCB400之后,卸載系統(tǒng)310可以向硬件加速器330轉(zhuǎn)發(fā)PCB400。例如但不限于,一個(gè)此類硬件加速器330可以是現(xiàn)場可編程門陣列(FPGA)。以流速率,硬件加速器330可以依次處理每個(gè)輸入行210,將得到的被投影行220輸出回主機(jī)。
[0039]以流速率投影的困難隨著一些數(shù)據(jù)庫記錄中變長列的存在而出現(xiàn)。在使用變長列的情況下,一行中的一列或多列的長度和開始位置不固定并且可以跨不同行改變。該長度和位置信息被嵌入行210自身中,因此在投影記錄之前從若干行自身中取出該信息會(huì)需要多次經(jīng)過每一行。然而,進(jìn)行多次經(jīng)過會(huì)極大地減緩?fù)队安僮?。通過使用PCB400描述投影操作,投影系統(tǒng)300的示例性實(shí)施例解決了此問題。對(duì)于每一行,硬件加速器330可以預(yù)處理PCE并解析列的可變性,將變長列轉(zhuǎn)換成固定的、被解析的格式。在執(zhí)行該解析之后,硬件加速器330就可以以流速率執(zhí)行該行的投影。
[0040]如上所述,每個(gè)PCE440可以表示數(shù)據(jù)庫記錄中的一列。因此,PCE440可以包括用于定長列和變長列的PCE440。如圖5A和5B所示,這些PCE440可以存儲(chǔ)在硬件加速器330的PCE存儲(chǔ)緩沖器500中。更具體地,圖5A示出了在解析變長列之前的PCE緩沖器500,而圖5B示出了在此類解析之后的存儲(chǔ)緩沖器500。
[0041]同時(shí),PCE440可以包含描述到加速器330的所卸載的投影的信息。對(duì)于每個(gè)投影,PCE440的集合可以描述所請(qǐng)求的投影,其中每個(gè)PCE440對(duì)應(yīng)于數(shù)據(jù)庫記錄的一列。PCE440可以被轉(zhuǎn)發(fā)到加速器330 —次,存儲(chǔ)在PCE緩沖器500中,然后通過加速器330處理以執(zhí)行所需投影。
[0042]返回參考圖3,如其所示,投影單元340可以與硬件加速器330的其他部件集成在一起。硬件加速器330還可以包括標(biāo)準(zhǔn)的行解壓器350、行緩沖器360以及斷定評(píng)估單元370。投影單元340可以以流速率執(zhí)行投影,同時(shí)斷定評(píng)估單員360執(zhí)行斷定評(píng)估。來自投影單元340的結(jié)果可以輸出到被投影行緩沖器380和分類鍵緩沖器390,它們可以在向主機(jī)返回被投影行220之前執(zhí)行后投影處理。對(duì)于流化的每個(gè)字節(jié),投影單元340可以使用PCE440來判斷該字節(jié)是否將被投影,然后可以針對(duì)被投影行緩沖器380和分類鍵緩沖器390生成合適的寫使能。
[0043]為了在加速器330上提供有利的行處理吞吐量,斷定評(píng)估邏輯通常將被設(shè)計(jì)成處理數(shù)據(jù)庫記錄而不停頓進(jìn)入的行流。因此,投影單元340也能以流速率運(yùn)行,以便維持通過加速器330的行210的流。定長列易于流化,因?yàn)檫@些列的位置和長度都已知,無需首先檢查每行。各示例性實(shí)施例也針對(duì)變長列實(shí)現(xiàn)了此流速率處理。
[0044]如圖2中所示,當(dāng)前行內(nèi)的變長列的開始位置可以由列偏移來表示,該列偏移呈現(xiàn)為該行一部分,該部分在定長列后面。如果沒有使用PCE440進(jìn)行預(yù)處理而流化(streaming) 一行,則列偏移可能想得到地首先被流化,后面處理的是變長列。這會(huì)使在單次經(jīng)過中捕獲變長列變得困難。一個(gè)示例性實(shí)施例避免多次經(jīng)過當(dāng)前行210,其中第一次經(jīng)過僅僅用來處理可變偏移以計(jì)算變長列的位置和長度。一個(gè)示例性的實(shí)施例還避免了使行210在緩沖器中登臺(tái)(staging),以及避免了在必要時(shí)以隨機(jī)順序訪問該行的不同片段。替代地,一個(gè)示例性的投影系統(tǒng)300采用了混合技術(shù),該混合技術(shù)實(shí)現(xiàn)了維持吞吐量和行處理的流化模型兩者。
[0045]返回參考圖5A,在新的查詢開始時(shí),可以以定長列在輸入行210中出現(xiàn)的順序,將用于這些列的PCE440存儲(chǔ)在PCE緩沖器500的下半部??梢砸韵M勺兞性诒煌队靶?20中出現(xiàn)的順序,將表示變長列的PCE440存儲(chǔ)在PCE緩沖器500的上半部。
[0046]當(dāng)每個(gè)輸入行210被流化時(shí),該行可以首先在暫時(shí)的行緩沖器360中被登臺(tái)。在該登臺(tái)中,硬件投影單元340可以遍歷可變PCE400,可變PCE400包含指向行210內(nèi)的可變列偏移的指針。對(duì)于每個(gè)PCE440,該指針可用來從該行讀取兩個(gè)列(即,當(dāng)前和下一可變列)的偏移?;谠撔畔?,投影單元340可以計(jì)算由PCE表示的當(dāng)前變長列的開始位置和長度。開始位置等于當(dāng)前的列偏移,長度是當(dāng)前偏移與下一偏移之差。在輸入行210中,第一可變列的目的地可能緊接在最后的可變偏移之后。這可以是固定位置,因?yàn)樾?10中的所有先前位置都是固定的。對(duì)于后續(xù)的可變列,該列的目的地可以被計(jì)算為前一可變列位置與前一可變列的長度之和。對(duì)于行210的最后一個(gè)變長列(其可以由可變PCE中的一個(gè)位指示),可以通過使用當(dāng)前偏移以及行的總長度(可以提取自行標(biāo)頭)而計(jì)算該列的長度。
[0047]由于從PCE440計(jì)算列位置,所以這些位置可以被置于被投影行緩沖器380中,可能需要它們來解釋得到的被投影行220,因?yàn)檫@些位置指向被投影可變列的開始。與每個(gè)變長列相關(guān)的信息的計(jì)算可導(dǎo)致將可變PCE440解析成一個(gè)固定的、被解析的PCE440以用于當(dāng)前列。對(duì)于查詢中的每一行,被解析的PCE440可以以它們?cè)谳斎胄兄谐霈F(xiàn)的順序被存儲(chǔ)在PCE緩沖器的下半部,即,在固定長度的PCE440之下。
[0048]可以在流化每個(gè)輸入行210之前,針對(duì)該行執(zhí)行解析PCE的動(dòng)作。在已經(jīng)針對(duì)特定行解析可變PCE440之后,可以將所有列視作固定長度,因?yàn)閷?duì)于當(dāng)前輸入行210中的變長列來說,開始位置和長度現(xiàn)在是已知的。然后,例如以每次循環(huán)I字節(jié)的速率,可以通過斷定評(píng)估單元370和投影單元340流化當(dāng)前行210。
[0049]當(dāng)正在流化該行時(shí),投影單元340可以逐步通過(step through)PCE緩沖器600的下半部中被解析的PCE440,并通過比較輸入字節(jié)計(jì)數(shù)與對(duì)應(yīng)于每個(gè)被解析PCE400的列開始位置字段,捕獲所需的待投影字節(jié)。隨著PCE440以對(duì)應(yīng)列在輸入行210中出現(xiàn)的順序被存儲(chǔ),投影單元340可以一次將單個(gè)PCE與正在被流化的當(dāng)前行210相比較。在已針對(duì)行210投影PCE的對(duì)應(yīng)列之后,可以從PCE緩沖器500載入下一 PCE。為了處理投影多個(gè)連續(xù)I字節(jié)列的情況,可以使用PCE預(yù)取邏輯以允許每次循環(huán)加載一個(gè)新的PCE440而沒有停頓。因此,投影單元340可以使用PCE440來逐步通過輸入行210,同時(shí)執(zhí)行該行210內(nèi)的列的聞效投影。
[0050]在流化當(dāng)前行210之后,隨著輸出被發(fā)送到被投影行緩沖器380,被投影行緩沖器380可以包含對(duì)應(yīng)的被投影行220,定長列和變長列以及可變列偏移,在解析PCE440時(shí)寫入這些內(nèi)容。然后可以將分類鍵(如果有)從分類鍵緩沖器390復(fù)制到被投影行220中,以按需完全格式化被投影行220。當(dāng)正在解析用于下一行的PCE時(shí),可以執(zhí)行此行復(fù)制過程,以便不使用比所需更多的時(shí)間。
[0051]概括地說,圖6是根據(jù)本公開的一個(gè)示例性實(shí)施例的用于執(zhí)行投影操作的方法600的流程圖。在框610,可以接收要求投影的查詢。在框620,可以從該查詢建立PCB400。在框630,PCB400可以被存儲(chǔ)在硬件加速器330上,例如存儲(chǔ)在PCE緩沖器500中。在框640,對(duì)于一行數(shù)據(jù),可以將PCB400的可變PCE440解析成固定PCE440。在框650,基于PCB400中提供的信息,可以根據(jù)投影指令從該行中提取和布置所期望的列。在框660,可以將分類鍵插入得到的被投影行220。在決策框670,可以判定是否剩余待處理以便投影的額外行。如果剩余額外行,則方法600可以返回框640以處理該行的PCE。在框680,可以將被投影行輸出到主機(jī)。
[0052]在此所用的術(shù)語只是為了描述特殊實(shí)施例的目的,而非意在限制本發(fā)明。在此使用的單數(shù)形式“一”、“一個(gè)”和“該”意在也包括復(fù)數(shù)形式,除非上下文明確指示并非如此。還應(yīng)當(dāng)理解,術(shù)語“包括”和/或“包含”在本說明書中使用時(shí)指的是陳述的特征、整體、步驟、操作、單元和/或組件的存在,但是也不排除一個(gè)或多個(gè)其他特征、整體、步驟、操作、元件、組件和/或其組合的存在或添加。
[0053]以下的權(quán)利要求中的對(duì)應(yīng)結(jié)構(gòu)、材料、操作以及所有功能性限定的裝置(means)或步驟的等同替換,旨在包括任何用于與在權(quán)利要求中具體指出的其它單元相組合地執(zhí)行該功能的結(jié)構(gòu)、材料或操作。所給出的對(duì)本發(fā)明的描述其目的在于示意和描述,并非是窮盡性的,也并非是要將本發(fā)明限定到所表述的形式。對(duì)于所屬【技術(shù)領(lǐng)域】的普通技術(shù)人員來說,在不偏離本發(fā)明范圍和精神的情況下,顯然可以作出許多修改和變型。對(duì)實(shí)施例的選擇和說明,是為了最好地解釋本發(fā)明的原理和實(shí)際應(yīng)用,使所屬【技術(shù)領(lǐng)域】的普通技術(shù)人員能夠明了,本發(fā)明可以有適合所要的特定用途的具有各種改變的各種實(shí)施方式。
[0054]所屬【技術(shù)領(lǐng)域】的技術(shù)人員知道,本發(fā)明的各個(gè)方面可以實(shí)現(xiàn)為系統(tǒng)、方法或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明的各個(gè)方面可以具體實(shí)現(xiàn)為以下形式,即:完全的硬件實(shí)施方式、完全的軟件實(shí)施方式(包括固件、駐留軟件、微代碼等),或硬件和軟件方面結(jié)合的實(shí)施方式,這里可以統(tǒng)稱為“電路”、“模塊”或“系統(tǒng)”。此外,在一些實(shí)施例中,本發(fā)明的各個(gè)方面還可以實(shí)現(xiàn)為在一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)中的計(jì)算機(jī)程序產(chǎn)品的形式,該計(jì)算機(jī)可讀介質(zhì)中包含計(jì)算機(jī)可讀的程序代碼
[0055]可以采用一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)的任意組合。計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算機(jī)可讀信號(hào)介質(zhì)或者計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以是一但不限于一電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個(gè)或多個(gè)導(dǎo)線的電連接、便攜式計(jì)算機(jī)盤、硬盤、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦式可編程只讀存儲(chǔ)器(EPR0M或閃存)、光纖、便攜式緊湊盤只讀存儲(chǔ)器(CD-ROM)、光存儲(chǔ)器件、磁存儲(chǔ)器件、或者上述的任意合適的組合。在本文件中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是任何包含或存儲(chǔ)程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
[0056]計(jì)算機(jī)可讀的信號(hào)介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號(hào),其中承載了計(jì)算機(jī)可讀的程序代碼。這種傳播的數(shù)據(jù)信號(hào)可以采用多種形式,包括一但不限于一電磁信號(hào)、光信號(hào)或上述的任意合適的組合。計(jì)算機(jī)可讀的信號(hào)介質(zhì)還可以是計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)以外的任何計(jì)算機(jī)可讀介質(zhì),該計(jì)算機(jī)可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。
[0057]計(jì)算機(jī)可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括一但不限于一無線、有線、光纜、RF等等,或者上述的任意合適的組合。
[0058]可以以一種或多種程序設(shè)計(jì)語言的任意組合來編寫用于執(zhí)行本發(fā)明操作的計(jì)算機(jī)程序代碼,所述程序設(shè)計(jì)語言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語言一諸如Java、Smalltalk、C++等,還包括常規(guī)的過程式程序設(shè)計(jì)語言一諸如“C”語言或類似的程序設(shè)計(jì)語言。程序代碼可以完全地在用戶計(jì)算機(jī)上執(zhí)行、部分地在用戶計(jì)算機(jī)上執(zhí)行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計(jì)算機(jī)的情形中,遠(yuǎn)程計(jì)算機(jī)可以通過任意種類的網(wǎng)絡(luò)一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計(jì)算機(jī),或者,可以連接到外部計(jì)算機(jī)(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。
[0059]下面將參照根據(jù)本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或框圖描述本發(fā)明。應(yīng)當(dāng)理解,流程圖和/或框圖的每個(gè)方框以及流程圖和/或框圖中各方框的組合,都可以由計(jì)算機(jī)程序指令實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以提供給通用計(jì)算機(jī)、專用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,使得這些計(jì)算機(jī)程序指令在通過計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時(shí),產(chǎn)生了實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的裝置。
[0060]也可以把這些計(jì)算機(jī)程序指令存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中,這些指令使得計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其他設(shè)備以特定方式工作,從而,存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中的指令就產(chǎn)生出包括實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的指令的制造品(article of manufacture)。
[0061]還可以將計(jì)算機(jī)程序指令加載到計(jì)算機(jī)、其他可編程數(shù)據(jù)處理裝置、或其他裝置上以使在計(jì)算機(jī)、其他可編程設(shè)備或其他裝置上執(zhí)行一系列可操作的步驟來產(chǎn)生計(jì)算機(jī)執(zhí)行的程序,因此在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供了用于執(zhí)行流程圖和/或框圖的一個(gè)或多個(gè)框中示出的功能/動(dòng)作的程序。
[0062]附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個(gè)實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動(dòng)作的專用的基于硬件的系統(tǒng)來實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合來實(shí)現(xiàn)。
[0063]已經(jīng)描述了本發(fā)明的各實(shí)施例,上述說明是示例性的,并非窮盡性的,并且也不限于所披露的各實(shí)施例。在不偏離所說明的各實(shí)施例的范圍和精神的情況下,對(duì)于本【技術(shù)領(lǐng)域】的普通技術(shù)人員來說許多修改和變更都是顯而易見的。本文中所用術(shù)語的選擇,旨在最好地解釋各實(shí)施例的原理、實(shí)際應(yīng)用或?qū)κ袌鲋械募夹g(shù)的技術(shù)改進(jìn),或者使本【技術(shù)領(lǐng)域】的其它普通技術(shù)人員能理解本文披露的各實(shí)施例。
【權(quán)利要求】
1.一種計(jì)算機(jī)實(shí)現(xiàn)的方法,包括: 確定數(shù)據(jù)庫查詢授權(quán)第一投影操作將多個(gè)輸入行投影到多個(gè)被投影行,其中所述多個(gè)輸入行中的每一行具有一個(gè)或多個(gè)變長列; 通過計(jì)算機(jī)處理器構(gòu)建第一投影控制塊以描述所述第一投影操作; 將所述第一投影操作卸載到硬件加速器;以及 將所述第一投影控制塊提供給所述硬件加速器,其中所述第一投影控制塊使所述硬件加速器能夠以流速率執(zhí)行所述第一投影操作。
2.如權(quán)利要求1所述的方法,其中所述第一投影控制塊指定用于所述多個(gè)被投影行的分類鍵。
3.如權(quán)利要求2所述的方法,其中構(gòu)建所述第一投影控制塊包括:提供分類鍵填充模板;指定用于填充所述分類鍵中的每一列的字符。
4.如權(quán)利要求1所述的方法,其中構(gòu)建所述第一投影控制塊包括構(gòu)建與所述多個(gè)輸入行中的變長列對(duì)應(yīng)的投影控制元素,其中所述投影控制元素指定與所述多個(gè)輸入行中的所述變長列的可變偏移和長度有關(guān)的信息。
5.如權(quán)利要求1所述的方法,其中構(gòu)建所述第一投影控制塊包括: 構(gòu)建多個(gè)投影控制元素,每個(gè)投影控制元素對(duì)應(yīng)于所述多個(gè)輸入行中的不同列; 構(gòu)建指定所述投影控制元素在所述第一投影控制塊中的順序的標(biāo)頭。
6.如權(quán)利要求5所述的方法,其中根據(jù)所述多個(gè)被投影行的列順序?qū)⒈硎咀冮L列的所述投影控制元素布置在所述第一投影控制塊中。
7.如權(quán)利要求1所述的方法,其中將所述第一投影控制塊提供給所述硬件加速器的步驟對(duì)所述硬件加速器進(jìn)行軟配置以執(zhí)行所述第一投影操作,所述方法還包括: 構(gòu)建第二投影控制塊以描述第二投影操作,其中所述第二投影控制塊對(duì)所述硬件加速器進(jìn)行軟配置以執(zhí)行所述第二投影操作。
8.一種系統(tǒng),包括: 查詢接受方,其被配置成確定數(shù)據(jù)庫查詢授權(quán)第一投影操作將多個(gè)輸入行投影到多個(gè)被投影行,其中所述多個(gè)輸入行中的每一行具有一個(gè)或多個(gè)變長列; 投影控制器,其被配置成: 構(gòu)建第一投影控制塊以描述所述第一投影操作; 將所述第一投影操作卸載到硬件加速器;以及 將所述第一投影控制塊提供給所述硬件加速器,其中所述第一投影控制塊使所述硬件加速器能夠以流速率執(zhí)行所述第一投影操作。
9.如權(quán)利要求8所述的系統(tǒng),其中所述第一投影控制塊指定用于所述多個(gè)被投影行的分類鍵。
10.如權(quán)利要求9所述的系統(tǒng),所述投影控制器還被配置成通過提供分類鍵填充模板來構(gòu)建所述第一投影控制塊,所述分類鍵填充模板指定用于填充所述分類鍵中的每一列的字符。
11.如權(quán)利要求9所述的系統(tǒng),所述投影控制器還被配置成通過構(gòu)建與所述多個(gè)輸入行中的變長列對(duì)應(yīng)的投影控制元素來構(gòu)建所述第一投影控制塊,其中所述投影控制元素指定與所述多個(gè)輸入行中的所述變長列的可變偏移和長度有關(guān)的信息。
12.如權(quán)利要求9所述的系統(tǒng),所述投影控制器還被配置成在構(gòu)建所述第一投影控制塊時(shí): 構(gòu)建多個(gè)投影控制元素,每個(gè)投影控制元素對(duì)應(yīng)于所述多個(gè)輸入行中的不同列; 構(gòu)建指定所述投影控制元素在所述第一投影控制塊中的順序的標(biāo)頭。
13.如權(quán)利要求12所述的系統(tǒng),其中根據(jù)所述多個(gè)被投影行的列順序?qū)⒈硎咀冮L列的所述投影控制元素布置在所述第一投影控制塊中。
14.如權(quán)利要求8所述的系統(tǒng),所述投影控制器還被配置成: 使用所述第一投影控制塊對(duì)所述硬件加速器進(jìn)行軟配置,以執(zhí)行所述第一投影操作;以及 構(gòu)建第二投影控制塊以描述第二投影操作,其中所述第二投影控制塊對(duì)所述硬件加速器進(jìn)行軟配置以執(zhí)行所述第二投影操作。
【文檔編號(hào)】G06F17/30GK104298699SQ201410327731
【公開日】2015年1月21日 申請(qǐng)日期:2014年7月10日 優(yōu)先權(quán)日:2013年7月19日
【發(fā)明者】S·W·阿薩德, P·杜布, 閔紅, B·蘇克瓦尼, M·S·特內(nèi)斯 申請(qǐng)人:國際商業(yè)機(jī)器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
庆阳市| 勃利县| 花莲市| 达日县| 蛟河市| 九江县| 六枝特区| 宁蒗| 盱眙县| 全州县| 上饶县| 商南县| 乐亭县| 宁国市| 湖南省| 两当县| 蓬溪县| 兴业县| 林芝县| 河南省| 广州市| 古田县| 马边| 红河县| 奉新县| 苗栗县| 吉安市| 民丰县| 东阿县| 建德市| 岐山县| 榆林市| 美姑县| 玛多县| 剑阁县| 休宁县| 隆德县| 房山区| 湖北省| 宁蒗| 玉树县|