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

用于使用基于硬件的處理來(lái)提供分布式樹(shù)遍歷的系統(tǒng)和方法與流程

文檔序號(hào):11635342閱讀:208來(lái)源:國(guó)知局
用于使用基于硬件的處理來(lái)提供分布式樹(shù)遍歷的系統(tǒng)和方法與流程



背景技術(shù):

如今的數(shù)據(jù)庫(kù)系統(tǒng)必須對(duì)大數(shù)據(jù)庫(kù)執(zhí)行許多查詢(xún),例如google必須每天回答約十億個(gè)搜索查詢(xún)。為了保持響應(yīng)時(shí)間低,必須盡可能快地執(zhí)行查詢(xún)。查詢(xún)是在保持?jǐn)?shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)管理系統(tǒng)與依賴(lài)于在這樣的數(shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù)的數(shù)據(jù)庫(kù)應(yīng)用之間的接口。因此,加速查詢(xún)執(zhí)行增加數(shù)據(jù)庫(kù)系統(tǒng)的性能,并且數(shù)據(jù)庫(kù)應(yīng)用將從降低的響應(yīng)時(shí)間受益。

專(zhuān)用和可重配置硬件加速器與常規(guī)的基于軟件的處理器相比具有改進(jìn)數(shù)據(jù)庫(kù)查詢(xún)、尤其是計(jì)算的吞吐量、延時(shí)和功率要求的長(zhǎng)久歷史。然而同時(shí),這些類(lèi)型的設(shè)備的專(zhuān)用性質(zhì)也一般地意味著它們僅能夠執(zhí)行相對(duì)簡(jiǎn)單的功能,從而要求基于軟件的處理完成任務(wù)或者至少充當(dāng)備用處理。該分布式處理可能導(dǎo)致在兩個(gè)系統(tǒng)之間的同步和/或一致性問(wèn)題。

現(xiàn)場(chǎng)可編程門(mén)陣列(fpga)和其他硬件邏輯設(shè)備(例如專(zhuān)用集成電路(asic)和復(fù)雜可編程門(mén)陣列(cpga))已經(jīng)用來(lái)加速對(duì)樹(shù)數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)和遍歷。當(dāng)前解決方案采用兩種一般方式之一:通過(guò)內(nèi)容可尋址存儲(chǔ)器結(jié)構(gòu)的高速緩存和用于樹(shù)的fpga加速器,在fpga加速器中,在專(zhuān)用寄存器傳送級(jí)(rtl)邏輯中布置樹(shù)節(jié)點(diǎn)。第一類(lèi)解決方案具有兩個(gè)缺點(diǎn)。首先,它通常地以顯式高速緩存策略為特征,其中主機(jī)(例如數(shù)據(jù)庫(kù)管理系統(tǒng)(dbms))必須做出關(guān)于在高速緩存中存儲(chǔ)/更新項(xiàng)目的決策。第二,最經(jīng)常使用的數(shù)據(jù)結(jié)構(gòu)沒(méi)有提高很高存儲(chǔ)器效率。第二類(lèi)解決方案也具有兩個(gè)主要缺點(diǎn)。首先,由于在硬件中直接地表示整個(gè)樹(shù),所以它們消耗大量片上存儲(chǔ)器/邏輯。第二,實(shí)施的樹(shù)結(jié)構(gòu)很剛性從而使對(duì)樹(shù)結(jié)構(gòu)的動(dòng)態(tài)更新難以快速地和經(jīng)濟(jì)地處置。



技術(shù)實(shí)現(xiàn)要素:

本公開(kāi)描述用于在硬件中高速緩存和處理樹(shù)式數(shù)據(jù)結(jié)構(gòu)的系統(tǒng)和方法。

一種示例系統(tǒng)包括數(shù)據(jù)庫(kù)管理系統(tǒng)(dbms)、驅(qū)動(dòng)器和邏輯設(shè)備。至少部分地在由一個(gè)或者多個(gè)處理器可執(zhí)行的計(jì)算機(jī)可讀介質(zhì)中體現(xiàn)dbms和驅(qū)動(dòng)器。dbms接收用于在一個(gè)或者多個(gè)樹(shù)型關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)中存儲(chǔ)的信息的查詢(xún),并且響應(yīng)于接收到查詢(xún),向驅(qū)動(dòng)器發(fā)送查詢(xún)。驅(qū)動(dòng)器響應(yīng)于從dbms接收到查詢(xún),向至少部分地在硬件中體現(xiàn)的邏輯設(shè)備發(fā)送修改的查詢(xún)。邏輯設(shè)備包括高速緩存存儲(chǔ)器,高速緩存存儲(chǔ)器用于存儲(chǔ)與關(guān)聯(lián)于dbms的一個(gè)或者多個(gè)樹(shù)型關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)之一的至少部分關(guān)聯(lián)的樹(shù)型關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)。邏輯設(shè)備響應(yīng)于接收到修改的查詢(xún)來(lái)至少基于修改的查詢(xún)來(lái)遍歷在高速緩存存儲(chǔ)器中存儲(chǔ)的樹(shù)型關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)的節(jié)點(diǎn),取回位于每個(gè)遍歷的節(jié)點(diǎn)處的數(shù)據(jù)的部分;并且向驅(qū)動(dòng)器發(fā)送取回的數(shù)據(jù)的部分。

驅(qū)動(dòng)器響應(yīng)于接收到數(shù)據(jù)的部分,基于在關(guān)聯(lián)于dbms的樹(shù)型關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)處存儲(chǔ)的數(shù)據(jù)證實(shí)數(shù)據(jù)的部分,并且向dbms發(fā)送證實(shí)的數(shù)據(jù)的部分。向邏輯設(shè)備重新發(fā)送數(shù)據(jù)的未證實(shí)或者不一致的部分。驅(qū)動(dòng)器在查找表(lut)內(nèi)存儲(chǔ)從硬件邏輯設(shè)備接收的數(shù)據(jù)的部分作為節(jié)點(diǎn)并且使用lut以答復(fù)從dbms接收的查詢(xún)。

在其他示例中,邏輯設(shè)備在與邏輯設(shè)備關(guān)聯(lián)的高速緩存存儲(chǔ)器當(dāng)前不包括與關(guān)聯(lián)于接收的查詢(xún)的節(jié)點(diǎn)關(guān)聯(lián)的頁(yè)面時(shí),至少基于分配規(guī)則,為與接收的查詢(xún)、節(jié)點(diǎn)數(shù)據(jù)和路徑信息關(guān)聯(lián)的節(jié)點(diǎn)分配在高速緩存存儲(chǔ)器內(nèi)的頁(yè)面。邏輯設(shè)備至少基于接收所接收的查詢(xún)、節(jié)點(diǎn)數(shù)據(jù)和路徑信息依次地分配頁(yè)面。高速緩存的頁(yè)面包括存儲(chǔ)值的值位置和存儲(chǔ)一個(gè)或者多個(gè)指針的指針位置。指針位置與在高速緩存存儲(chǔ)器內(nèi)的值位置在邏輯上分離。

提供本發(fā)明內(nèi)容以用簡(jiǎn)化的形式介紹以下在具體實(shí)施方式中進(jìn)一步描述的概念的選擇。本發(fā)明內(nèi)容未旨在于標(biāo)識(shí)要求保護(hù)的主題的關(guān)鍵或者必要特征,它也未旨在于在確定要求保護(hù)的主題的范圍時(shí)用作輔助。例如術(shù)語(yǔ)“技術(shù)”可以如以上和貫穿本文而描述的上下文所允許的那樣指代一個(gè)或者多個(gè)系統(tǒng)、一個(gè)或者多個(gè)方法、計(jì)算機(jī)可讀指令、一個(gè)或者多個(gè)模塊、算法、硬件邏輯和/或一個(gè)或者多個(gè)操作。

附圖說(shuō)明

參照附圖描述具體實(shí)施方式。在各圖中,附圖標(biāo)記的最左數(shù)字標(biāo)識(shí)該附圖標(biāo)記首次出現(xiàn)的圖。不同圖中的相同附圖標(biāo)記指示相似或者相同項(xiàng)目。

圖1是描繪用于實(shí)施數(shù)據(jù)庫(kù)管理系統(tǒng)的示例環(huán)境的圖。

圖2是描繪示例硬件邏輯設(shè)備的框圖,該硬件邏輯設(shè)備執(zhí)行支持?jǐn)?shù)據(jù)庫(kù)管理系統(tǒng)的讀取/寫(xiě)入操作。

圖3-1和3-2示出如下框圖,這些框圖描繪由數(shù)據(jù)庫(kù)管理系統(tǒng)使用的示例數(shù)據(jù)庫(kù)管理軟件部件和驅(qū)動(dòng)器軟件部件。

圖4是描繪數(shù)據(jù)庫(kù)管理系統(tǒng)的軟件和硬件部件的示例操作的流程圖。

圖5-1和5-2示出如下流程圖,該流程圖描繪在數(shù)據(jù)庫(kù)管理系統(tǒng)的部件之間的示例交互操作。

圖6是示出用于執(zhí)行對(duì)在硬件邏輯設(shè)備處高速緩存的樹(shù)型數(shù)據(jù)結(jié)構(gòu)的遍歷的示例方式的流程圖。

圖7-1和7-2示出在數(shù)據(jù)庫(kù)管理系統(tǒng)的軟件部件處驗(yàn)證結(jié)果的流程圖。

圖8-1和8-2用圖形圖示在邏輯設(shè)備與軟件部件之間的交互。

圖9用圖形圖示在邏輯設(shè)備處出現(xiàn)的存儲(chǔ)器分配。

圖10示出由邏輯設(shè)備產(chǎn)生的示例結(jié)果。

具體實(shí)施方式

概述

這里描述的示例提供如下系統(tǒng)的構(gòu)造,該系統(tǒng)具有主機(jī)中央處理單元(cpu)(例如運(yùn)行數(shù)據(jù)庫(kù)管理系統(tǒng)(dbms))和硬件協(xié)同處理器,該硬件協(xié)同處理器可以執(zhí)行與高速緩存的樹(shù)型數(shù)據(jù)結(jié)構(gòu)有關(guān)的操作,高速緩存的樹(shù)型數(shù)據(jù)結(jié)構(gòu)與由dbms維持的完整樹(shù)型數(shù)據(jù)結(jié)構(gòu)關(guān)聯(lián)。

硬件協(xié)同處理器可以通過(guò)在dbms提供樹(shù)型數(shù)據(jù)結(jié)構(gòu)請(qǐng)求時(shí),分配高速緩存中的可重用存儲(chǔ)器以存儲(chǔ)樹(shù)型數(shù)據(jù)結(jié)構(gòu)的部分,來(lái)加速對(duì)樹(shù)型數(shù)據(jù)結(jié)構(gòu)的遍歷。硬件協(xié)同處理器可以用對(duì)dbms透明的方式管理高速緩存的樹(shù)型數(shù)據(jù)結(jié)構(gòu)。驅(qū)動(dòng)器模塊也可以位于與dbms分離的計(jì)算設(shè)備中或者可以位于與dbms相同的計(jì)算設(shè)備處。驅(qū)動(dòng)器模塊可以提供在dbms與硬件協(xié)同處理器之間的接口,因此減少在dbms與硬件協(xié)同處理器之間的通信。

驅(qū)動(dòng)器模塊可以基于dbms向驅(qū)動(dòng)器模塊發(fā)送的與樹(shù)型數(shù)據(jù)結(jié)構(gòu)關(guān)聯(lián)的節(jié)點(diǎn)級(jí)查詢(xún)提供樹(shù)級(jí)查詢(xún)。驅(qū)動(dòng)器模塊可以向硬件協(xié)同處理器發(fā)送樹(shù)級(jí)查詢(xún)。硬件協(xié)同處理器可以基于由驅(qū)動(dòng)器模塊提供的樹(shù)級(jí)查詢(xún)向驅(qū)動(dòng)器返回樹(shù)級(jí)結(jié)果。驅(qū)動(dòng)器模塊可以接收和驗(yàn)證從硬件協(xié)同處理器發(fā)送的結(jié)果。從硬件協(xié)同處理器發(fā)送的結(jié)果可以包括與硬件協(xié)同處理器在遍歷期間基于由驅(qū)動(dòng)器模塊發(fā)送的接收的樹(shù)級(jí)查詢(xún)和樹(shù)標(biāo)識(shí)信息找到的、高速緩存的樹(shù)型數(shù)據(jù)結(jié)構(gòu)的每個(gè)節(jié)點(diǎn)關(guān)聯(lián)的值。驅(qū)動(dòng)器模塊可以向dbms發(fā)送驗(yàn)證的結(jié)果。與高速緩存的樹(shù)型數(shù)據(jù)結(jié)構(gòu)的節(jié)點(diǎn)中的一個(gè)或者多個(gè)節(jié)點(diǎn)關(guān)聯(lián)的不一致結(jié)果可以使后續(xù)通信出現(xiàn)在硬件協(xié)同處理器與驅(qū)動(dòng)器模塊之間以便更新高速緩存的樹(shù)型數(shù)據(jù)結(jié)構(gòu)。

驅(qū)動(dòng)器模塊和硬件協(xié)同處理器可以是用于在普通cpu上運(yùn)行的關(guān)系數(shù)據(jù)庫(kù)的附加件。主機(jī)cpu包括數(shù)據(jù)庫(kù)管理系統(tǒng)(dbms),該dbms實(shí)施可以在關(guān)系數(shù)據(jù)庫(kù)中視為現(xiàn)有技術(shù)的功能、諸如但不限于結(jié)構(gòu)化查詢(xún)語(yǔ)言(sql)解析、查詢(xún)規(guī)劃以及向和從客戶(hù)端的數(shù)據(jù)移動(dòng)。

硬件協(xié)同處理器可以充當(dāng)加速器。有用于與dbms一起使用加速器的多個(gè)原因。樹(shù)遍歷加速、索引查找和運(yùn)行中數(shù)據(jù)壓縮是一些可能性。另一個(gè)是安全性。例如cipherbase是集成硬件邏輯平臺(tái)作為受信任計(jì)算模塊的sql服務(wù)器的增強(qiáng)版本。數(shù)據(jù)可以由云客戶(hù)加密、上傳到服務(wù)器中,然后僅在fpga內(nèi)被解密和處理以維持對(duì)于黑客或者對(duì)于云服務(wù)的系統(tǒng)管理員的保密性。dbms具有用于以加密形式存儲(chǔ)和管理數(shù)據(jù),然后依賴(lài)于fpga對(duì)這些加密的值執(zhí)行操作的能力。作為結(jié)果,在數(shù)據(jù)庫(kù)中對(duì)加密的值的索引樹(shù)遍歷可以依賴(lài)于fpga用于執(zhí)行在查詢(xún)中包括的查找關(guān)鍵字與每個(gè)樹(shù)節(jié)點(diǎn)的內(nèi)容之間的比較。

示例系統(tǒng)可以在硬件協(xié)同處理器的存儲(chǔ)器中實(shí)施高速緩存,該高速緩存可以對(duì)于在主機(jī)cpu處的dbms透明并且無(wú)需修改關(guān)聯(lián)的數(shù)據(jù)庫(kù)管理引擎的代碼。另外,硬件協(xié)同處理器可以對(duì)樹(shù)型數(shù)據(jù)結(jié)構(gòu)的硬件高速緩存的部分執(zhí)行急切(eager)遍歷。樹(shù)型數(shù)據(jù)結(jié)構(gòu)的高速緩存的部分與相對(duì)于dbms而存儲(chǔ)的完整樹(shù)型數(shù)據(jù)結(jié)構(gòu)關(guān)聯(lián)??梢栽谟布f(xié)同處理器從驅(qū)動(dòng)器模塊接收用于在根節(jié)點(diǎn)中的關(guān)鍵字查找的請(qǐng)求時(shí)發(fā)起急切遍歷。硬件協(xié)同處理器針對(duì)被高速緩存的樹(shù)的盡可能多的部分急切地遍歷(在dbms具體地請(qǐng)求高速緩存的樹(shù)之前)高速緩存的樹(shù)。在向驅(qū)動(dòng)器返回這些部分或者完整結(jié)果時(shí),驅(qū)動(dòng)器可以在恒定時(shí)間中驗(yàn)證這些結(jié)果與后續(xù)dmbs請(qǐng)求的一致性。可以如同之前一樣傳輸和處理樹(shù)的沒(méi)有高速緩存的部分,其中硬件協(xié)同處理器自動(dòng)地、透明地高速緩存新部分。

參照?qǐng)D1-10進(jìn)一步描述各種示例、場(chǎng)景和方面。

示例環(huán)境

圖1圖示用于實(shí)施快速和安全系統(tǒng)100的示例環(huán)境,該系統(tǒng)用于訪問(wèn)在一個(gè)或者多個(gè)樹(shù)型關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)內(nèi)的數(shù)據(jù)。示例系統(tǒng)100包括經(jīng)由一個(gè)或者多個(gè)網(wǎng)絡(luò)106與一個(gè)或者多個(gè)用戶(hù)計(jì)算設(shè)備104、諸如膝上型計(jì)算機(jī)104(1)、智能電話104(2)、個(gè)人數(shù)據(jù)助理(pda)104(3)或者其他計(jì)算設(shè)備104(n)信號(hào)通信的一個(gè)或者多個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)(dbms)單元102(1)-(n)。dbms單元102(1)-(n)可以提供對(duì)由用戶(hù)的計(jì)算設(shè)備104(1)-(n)提供的查詢(xún)的響應(yīng)。對(duì)查詢(xún)的響應(yīng)可以包括在與dbms單元102(1)-(n)本地或者在跨網(wǎng)絡(luò)106分布的某個(gè)或者某些其他數(shù)據(jù)存儲(chǔ)設(shè)備存儲(chǔ)的一個(gè)或者多個(gè)樹(shù)型關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)內(nèi)包括的數(shù)據(jù)。

在一些示例中,dbms單元102(1)-(n)可以包括在軟件中體現(xiàn)的部件和主要地在硬件中體現(xiàn)的其他部件作為dbms框架108的部分。在軟件中體現(xiàn)的部件可以包括可以與在數(shù)據(jù)存儲(chǔ)設(shè)備112和驅(qū)動(dòng)器116內(nèi)存儲(chǔ)的樹(shù)型關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)通信的dbms110。dbms框架108可以包括在硬件中體現(xiàn)的部件、諸如邏輯設(shè)備114。邏輯設(shè)備114可以視為dbms110的協(xié)同處理器。dbms110可以從一個(gè)或者多個(gè)用戶(hù)計(jì)算設(shè)備104或者從某個(gè)其他來(lái)源、諸如其他軟件部件接收請(qǐng)求在數(shù)據(jù)存儲(chǔ)設(shè)備112處存儲(chǔ)的樹(shù)型關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)中存儲(chǔ)的信息的查詢(xún)。dbms110可以經(jīng)由驅(qū)動(dòng)器116向邏輯設(shè)備114轉(zhuǎn)發(fā)與查詢(xún)關(guān)聯(lián)的信息。邏輯設(shè)備114可以生成對(duì)從驅(qū)動(dòng)器116接收的信息的響應(yīng)并且向驅(qū)動(dòng)器116返回響應(yīng)。

dbms110可以包括用于從用戶(hù)的計(jì)算設(shè)備104接收查詢(xún)的部件。可以在跨一個(gè)或者多個(gè)網(wǎng)絡(luò)106分布的各種/不同設(shè)備上實(shí)施dbms110、驅(qū)動(dòng)器116和邏輯設(shè)備114。一個(gè)或者多個(gè)網(wǎng)絡(luò)106可以包括公共網(wǎng)絡(luò)(諸如因特網(wǎng))、私有網(wǎng)絡(luò)(諸如機(jī)構(gòu)和/或個(gè)人內(nèi)部網(wǎng))、或者私有和公共網(wǎng)絡(luò)的某個(gè)組合。一個(gè)或者多個(gè)網(wǎng)絡(luò)106也可以包括任何類(lèi)型的有線和/或無(wú)線網(wǎng)絡(luò)、包括但不限于局域網(wǎng)(lan)、廣域網(wǎng)(wan)、衛(wèi)星網(wǎng)絡(luò)、有線網(wǎng)絡(luò)、wi-fi網(wǎng)絡(luò)、wimax網(wǎng)絡(luò)、移動(dòng)通信網(wǎng)絡(luò)(例如3g、4g等等)或者其任何組合。一個(gè)或者多個(gè)網(wǎng)絡(luò)106可以利用通信協(xié)議、包括基于分組和/或基于數(shù)據(jù)報(bào)的協(xié)議、諸如網(wǎng)際協(xié)議(ip)、傳輸控制協(xié)議(tcp)、用戶(hù)數(shù)據(jù)報(bào)協(xié)議(udp)或者其他類(lèi)型的協(xié)議。另外,一個(gè)或者多個(gè)網(wǎng)絡(luò)106也可以包括支持網(wǎng)絡(luò)通信和/或形成用于網(wǎng)絡(luò)的硬件基礎(chǔ)的多個(gè)設(shè)備、諸如交換機(jī)、路由器、網(wǎng)關(guān)、接入點(diǎn)、防火墻、基站、中繼器、主干設(shè)備等。

在示例場(chǎng)景中,一個(gè)或者多個(gè)dbms單元102可以包括在群集或者其他分組配置中操作以共享資源、平衡負(fù)荷、增加性能、提供故障切換支持或者冗余性或者出于其他目的的一個(gè)或者多個(gè)計(jì)算設(shè)備。一個(gè)或者多個(gè)dbms單元102可以屬于多種設(shè)備類(lèi)別或者分類(lèi)、諸如傳統(tǒng)服務(wù)器型設(shè)備、桌面型計(jì)算機(jī)型設(shè)備、移動(dòng)型設(shè)備、專(zhuān)用型設(shè)備、嵌入型設(shè)備和/或可穿戴型設(shè)備。因此,雖然圖示為桌面型計(jì)算機(jī),但是一個(gè)或者多個(gè)dbms單元102可以包括多樣多種設(shè)備類(lèi)型而不限于特定設(shè)備類(lèi)型。一個(gè)或者多個(gè)dbms單元102可以代表、但是不限于桌面型計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、web服務(wù)器計(jì)算機(jī)、個(gè)人計(jì)算機(jī)、移動(dòng)計(jì)算機(jī)、膝上型計(jì)算機(jī)、平板計(jì)算機(jī)、可穿戴計(jì)算機(jī)、植入的計(jì)算設(shè)備、遠(yuǎn)程通信設(shè)備、車(chē)載計(jì)算機(jī)、啟用網(wǎng)絡(luò)的電視、瘦客戶(hù)端、終端、個(gè)人數(shù)據(jù)助理(pda)、游戲控制臺(tái)、游戲設(shè)備、工作站、媒體播放器、個(gè)人視頻記錄器(pvr)、機(jī)頂盒、相機(jī)、用于在計(jì)算設(shè)備、裝置或者任何其他種類(lèi)的計(jì)算設(shè)備中包括的集成部件。

一個(gè)或者多個(gè)dbms單元102可以包括任何計(jì)算設(shè)備、該計(jì)算設(shè)備具有諸如經(jīng)由總線122可操作地連接到計(jì)算機(jī)可讀介質(zhì)120的一個(gè)或者多個(gè)處理單元118,該總線在一些實(shí)例中可以包括系統(tǒng)總線、數(shù)據(jù)總線、地址總線、pci總線、小型pci總線和任何多種本地、外圍和/或獨(dú)立總線中的一個(gè)或者多個(gè)總線。一個(gè)或者多個(gè)dbms單元102可以包括可以可操作地連接到總線122的輸入/輸出(i/o)接口126。在計(jì)算機(jī)可讀介質(zhì)上存儲(chǔ)的可執(zhí)行指令可以例如包括操作系統(tǒng)122、框架以及由一個(gè)或者多個(gè)處理單元可加載和可執(zhí)行的其他模塊、程序或者應(yīng)用。

如圖2中所示,在一些示例中,邏輯設(shè)備114可以包括一個(gè)或者多個(gè)邏輯部件202和邏輯存儲(chǔ)器陣列204。邏輯存儲(chǔ)器陣列204可以與邏輯設(shè)備114、諸如動(dòng)態(tài)存取存儲(chǔ)器(dram)或者類(lèi)似的存儲(chǔ)器設(shè)備分離。邏輯部件202可以包括高速緩存部件206和樹(shù)遍歷部件208。部件206和208可以與dbms110通信和/或與邏輯陣列204執(zhí)行輸入/輸出(i/o)(例如讀取/寫(xiě)入操作)。高速緩存部件206可以將與從dbms110接收的查詢(xún)關(guān)聯(lián)的數(shù)據(jù)分配到在邏輯陣列204內(nèi)的存儲(chǔ)器位置中。高速緩存部件206可以分配用于節(jié)點(diǎn)的頁(yè)面以便至少產(chǎn)生在數(shù)據(jù)存儲(chǔ)設(shè)備112處存儲(chǔ)的樹(shù)型關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)的部分副本或者索引。高速緩存部件206可以用允許重用存儲(chǔ)的節(jié)點(diǎn)的方式分配頁(yè)面,因此實(shí)現(xiàn)更高效使用邏輯陣列204。

樹(shù)遍歷部件208可以基于從dbms110接收的查詢(xún)信息遍歷在邏輯陣列204中存儲(chǔ)的樹(shù)型關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)。由高速緩存部件206和樹(shù)遍歷部件208執(zhí)行的操作可以對(duì)位于dbms110處的核心數(shù)據(jù)庫(kù)管理部件透明。以下將更具體描述這些操作。

備選地或者附加地,一個(gè)或者多個(gè)硬件邏輯設(shè)備112充當(dāng)加速器。例如而沒(méi)有限制,可以使用的示例硬件邏輯設(shè)備類(lèi)型包括現(xiàn)場(chǎng)可編程門(mén)陣列(fpga)、專(zhuān)用集成電路(asic)、專(zhuān)用標(biāo)準(zhǔn)產(chǎn)品(assp)、片上系統(tǒng)(soc)、復(fù)雜可編程邏輯設(shè)備(cpld)等。例如加速器可以代表混合設(shè)備、諸如來(lái)自xilinx或者的包括在fpga結(jié)構(gòu)中嵌入的cpu的cpld。

fpga可以是被設(shè)計(jì)為由客戶(hù)或者設(shè)計(jì)者在制造之后配置的集成電路——因此“現(xiàn)場(chǎng)可編程”。fpga配置一般地可以使用與用于專(zhuān)用集成電路(asic)的語(yǔ)言相似的硬件描述語(yǔ)言(hdl)來(lái)指定(電路圖先前用來(lái)指定該配置,因?yàn)樗鼈冊(cè)?jīng)用于asic,但是這越來(lái)越罕見(jiàn))。

現(xiàn)代fpga具有大型邏輯門(mén)和ram塊資源以實(shí)施復(fù)雜數(shù)字計(jì)算。fpga設(shè)計(jì)采用很快i/o和雙向數(shù)據(jù)總線。fpga可以用來(lái)實(shí)施asic可以執(zhí)行的任何邏輯功能。

fpga包含稱(chēng)為“邏輯塊”的可編程邏輯部件和可重配置的互連的分級(jí),這些互連允許塊被“接線在一起”——有些像可以在(許多)不同配置中相互接線的許多(可改變)邏輯門(mén)。邏輯塊可以被配置為執(zhí)行復(fù)雜組合功能或者僅為簡(jiǎn)單邏輯門(mén)如and和xor。在多數(shù)fpga中,邏輯塊也包括存儲(chǔ)器元件,這些存儲(chǔ)器元件可以是簡(jiǎn)單觸發(fā)器或者更完整的存儲(chǔ)器塊。

圖3-1圖示dbms110的示例軟件部件??梢栽诖鎯?chǔ)器設(shè)備302內(nèi)存儲(chǔ)dbms110的軟件部件作為計(jì)算機(jī)可讀介質(zhì)。軟件部件可以至少包括數(shù)據(jù)庫(kù)管理部件304。圖3-2圖示驅(qū)動(dòng)器116的示例軟件部件??梢栽诖鎯?chǔ)器設(shè)備306內(nèi)存儲(chǔ)驅(qū)動(dòng)器116的軟件部件作為計(jì)算機(jī)可讀介質(zhì)。軟件部件可以至少包括驅(qū)動(dòng)器部件308。在一些示例中,數(shù)據(jù)庫(kù)管理部件304和驅(qū)動(dòng)器部件308可以與體現(xiàn)為硬件加速器的協(xié)同處理器交互。驅(qū)動(dòng)器部件308可以提供在數(shù)據(jù)庫(kù)管理部件304與邏輯設(shè)備114之間的接口。驅(qū)動(dòng)器部件308可以使由高速緩存部件206和樹(shù)遍歷部件208執(zhí)行的操作對(duì)數(shù)據(jù)庫(kù)管理部件304透明。驅(qū)動(dòng)器部件308也可以執(zhí)行對(duì)從邏輯設(shè)備114接收的結(jié)果的驗(yàn)證。以下將更具體描述驅(qū)動(dòng)器部件308的操作。

在一些示例中,在一開(kāi)始執(zhí)行時(shí),邏輯設(shè)備114可以從dbms部件404接收可以經(jīng)過(guò)驅(qū)動(dòng)器部件308傳遞的請(qǐng)求。請(qǐng)求可以包括搜索關(guān)鍵字和在基于樹(shù)型關(guān)系數(shù)據(jù)結(jié)構(gòu)的樹(shù)型數(shù)據(jù)結(jié)構(gòu)(即節(jié)點(diǎn)級(jí)請(qǐng)求)的索引中存儲(chǔ)的值。沒(méi)有傳輸元數(shù)據(jù)、諸如子指針、記錄id等。來(lái)自硬件的預(yù)計(jì)的響應(yīng)可以是包括兩個(gè)數(shù)的索引響應(yīng),這兩個(gè)數(shù)代表在用于高速緩存的樹(shù)型數(shù)據(jù)結(jié)構(gòu)的節(jié)點(diǎn)的值數(shù)組中的第一和最后項(xiàng)的索引,這些索引等于搜索關(guān)鍵字(更準(zhǔn)確地,第一個(gè)值等于或者大于關(guān)鍵字并且第一個(gè)值嚴(yán)格地大于關(guān)鍵字)??梢允褂闷渌吔缱兓?。dbms110可以基于從硬件接收的索引最終地向邏輯設(shè)備114發(fā)起從節(jié)點(diǎn)到節(jié)點(diǎn)遍歷高速緩存的樹(shù)型數(shù)據(jù)結(jié)構(gòu)的多個(gè)請(qǐng)求。

每當(dāng)用于節(jié)點(diǎn)的值由邏輯設(shè)備114接收時(shí),高速緩存部件206可以高速緩存如果沒(méi)有已經(jīng)高速緩存的這些值??梢栽谥痦?yè)面基礎(chǔ)上分配用于每個(gè)節(jié)點(diǎn)的空間,其中每個(gè)樹(shù)節(jié)點(diǎn)對(duì)應(yīng)于一個(gè)和僅一個(gè)存儲(chǔ)器頁(yè)面??梢詫⒚總€(gè)頁(yè)面劃分成兩個(gè)邏輯區(qū)域:一個(gè)用于值數(shù)組而另一個(gè)用于存儲(chǔ)指向存儲(chǔ)器中的其他頁(yè)面的指針,因此構(gòu)建樹(shù)結(jié)構(gòu)。劃分的兩個(gè)邏輯區(qū)域允許就地更新值而沒(méi)有觸及它們的對(duì)應(yīng)指針。存儲(chǔ)器分配策略可以如下:在存儲(chǔ)器中依次地分配頁(yè)面并且僅在將在高速緩存中存儲(chǔ)的節(jié)點(diǎn)沒(méi)有已經(jīng)具有頁(yè)面的情況下。由于頁(yè)面的分割性質(zhì),從未擦除指針,從而即使曾經(jīng)具有“子節(jié)點(diǎn)”的節(jié)點(diǎn)變成“葉節(jié)點(diǎn)”,針對(duì)節(jié)點(diǎn)再次變成非葉節(jié)點(diǎn)的將來(lái)情況,仍然可以維持樹(shù)的底層結(jié)構(gòu)。這保證甚至沒(méi)有丟失分配的存儲(chǔ)器。

高速緩存的樹(shù)中的每個(gè)節(jié)點(diǎn)可以由它的相對(duì)于根的位置唯一地標(biāo)識(shí),該位置被表達(dá)為一系列的數(shù),該一系列的數(shù)代表在樹(shù)中的通向節(jié)點(diǎn)的每級(jí)處取得的指針的次序。該一系列的數(shù)形成從根到任何內(nèi)部或者葉節(jié)點(diǎn)的唯一路徑或者路徑信息并且可以由驅(qū)動(dòng)器部件308追加到傳入請(qǐng)求??梢杂脙煞N方式推導(dǎo)該路徑信息。第一方式可以是直接地從驅(qū)動(dòng)器部件308。在第二方式中,驅(qū)動(dòng)器部件308可以與dmbs110通信以基于用來(lái)遍歷關(guān)聯(lián)(索引)樹(shù)的一個(gè)或者多個(gè)算法的知識(shí)推斷路徑信息。也就是說(shuō),可以標(biāo)識(shí)任何傳入請(qǐng)求作為對(duì)先前請(qǐng)求的后續(xù)。這可以是新遍歷請(qǐng)求,在該情況下,該請(qǐng)求始于樹(shù)的根或者可以是基于由邏輯設(shè)備114給出的在先結(jié)果對(duì)內(nèi)部節(jié)點(diǎn)的遍歷(從每個(gè)節(jié)點(diǎn)跟隨的指針是返回的下界和上界索引的直接結(jié)果)。

路徑信息可以由邏輯設(shè)備114用于兩個(gè)目的。第一,路徑信息允許邏輯設(shè)備114從為關(guān)鍵字查找處理而接收的節(jié)點(diǎn)構(gòu)建恰當(dāng)樹(shù)。第二,路徑信息可以實(shí)現(xiàn)在邏輯設(shè)備114中對(duì)樹(shù)的獨(dú)立遍歷。

可以用以下方式在邏輯設(shè)備114中重建正確樹(shù)結(jié)構(gòu)。在傳輸索引的第一節(jié)點(diǎn)(即根)之后,dbms單元108可以傳輸來(lái)自樹(shù)中的第二級(jí)的“子”節(jié)點(diǎn)。在邏輯設(shè)備114分配用于該節(jié)點(diǎn)的頁(yè)面之后,可以更新父節(jié)點(diǎn)中的對(duì)應(yīng)指針以引用該頁(yè)面。伴隨第二級(jí)節(jié)點(diǎn)的路徑信息可以允許邏輯設(shè)備114更新正確指針。在下一操作時(shí),在dbms單元108可以傳輸在第三級(jí)上的節(jié)點(diǎn)時(shí),邏輯設(shè)備114將已經(jīng)在高速緩存中具有先前兩個(gè)節(jié)點(diǎn),并且它插入新節(jié)點(diǎn)作為正確第二級(jí)節(jié)點(diǎn)的正確子節(jié)點(diǎn)。也就是說(shuō),邏輯設(shè)備114可以使用路徑信息以遍歷頁(yè)面直至找到當(dāng)前節(jié)點(diǎn)的位置。在從dbms單元108發(fā)送的節(jié)點(diǎn)是“葉”時(shí),可以標(biāo)記邏輯設(shè)備114中的引用指針以示出它指向葉。在節(jié)點(diǎn)位于結(jié)束于已經(jīng)分配的頁(yè)面中的路徑上的情況下,可以用新節(jié)點(diǎn)直接地更新頁(yè)面的內(nèi)容,因此無(wú)需分配附加存儲(chǔ)器。出于分配目的而對(duì)樹(shù)路徑的遍歷無(wú)需邏輯設(shè)備114讀取全頁(yè)面;邏輯設(shè)備114需要取回每頁(yè)僅一個(gè)指針。可以在頁(yè)面中固定指針的位置,并且作為路徑信息的部分而提供的次序給出指針的確切存儲(chǔ)器位置。因此,可以通過(guò)隨機(jī)訪問(wèn)用代數(shù)計(jì)算的存儲(chǔ)器位置來(lái)找到這些指針。

在備選存儲(chǔ)器分配策略中,使用兩個(gè)頁(yè)面大小??梢韵虼箜?yè)面分配足夠空間以存儲(chǔ)值和指針,而小頁(yè)面可以具有僅用于值的空間??梢源鎯?chǔ)葉節(jié)點(diǎn)而沒(méi)有浪費(fèi)空間用于指針。這確實(shí)使存儲(chǔ)器分配過(guò)程有一點(diǎn)復(fù)雜化。在先前是“葉”的節(jié)點(diǎn)變成內(nèi)部節(jié)點(diǎn)的情況下,頁(yè)面將太小而無(wú)法存儲(chǔ)值和指針二者。因此可以分配新的大頁(yè)面用于該節(jié)點(diǎn)并且可以更新小頁(yè)面的父節(jié)點(diǎn)中的指針以指向新分配的大頁(yè)面。為了不丟失已經(jīng)分配的小頁(yè)面,可以設(shè)置新分配的大頁(yè)面的第一子指針以引用它。這樣它將最終地用于存儲(chǔ)葉節(jié)點(diǎn)而甚至沒(méi)有丟失存儲(chǔ)器。

第二方式是邏輯設(shè)備114(即樹(shù)遍歷部件208)使用路徑信息以自行導(dǎo)航樹(shù)。可以在邏輯設(shè)備114接收用于在根節(jié)點(diǎn)中查找關(guān)鍵字的請(qǐng)求時(shí)發(fā)起急切遍歷。它不僅將執(zhí)行該關(guān)鍵字搜索,而且將盡可能遠(yuǎn)地沿高速緩存的樹(shù)下降,從而生成用于對(duì)相同關(guān)鍵字的將來(lái)請(qǐng)求的結(jié)果。為了導(dǎo)航高速緩存的樹(shù),樹(shù)遍歷部件208可以使用在每個(gè)節(jié)點(diǎn)的有界索引和在頁(yè)面中的指針;在確定關(guān)鍵字在節(jié)點(diǎn)中的定位之后,樹(shù)遍歷部件208可以在下界樹(shù)遍歷部件208取回它的子節(jié)點(diǎn)(基于指針)、將它的頁(yè)面帶入臨時(shí)存儲(chǔ)并且對(duì)它執(zhí)行關(guān)鍵字查找。一旦它找到該節(jié)點(diǎn)中的邊界,它可以輸出該信息并且繼續(xù)更深直至遇到未分配的指針或者到達(dá)葉節(jié)點(diǎn)。

在一些示例中,指針可以攜帶附加元數(shù)據(jù)以在知道結(jié)果將對(duì)于dbms單元108不正確/沒(méi)有用時(shí)、例如在節(jié)點(diǎn)從作為內(nèi)部節(jié)點(diǎn)遷移成為樹(shù)中的葉時(shí)停止急切遍歷。由于葉節(jié)點(diǎn)是內(nèi)部節(jié)點(diǎn),所以它的在高速緩存中的頁(yè)面將具有(指向分配的空間或者可能為空的)指針數(shù)組。如果將跟隨這些指針,則結(jié)果將按照定義不正確,因?yàn)闆](méi)有子節(jié)點(diǎn)存在。為了避免該問(wèn)題,指針可以攜帶一些元數(shù)據(jù)、諸如指向的頁(yè)面中的數(shù)組的長(zhǎng)度和/或子節(jié)點(diǎn)是否為葉。這樣,即使先前分配樹(shù)型數(shù)據(jù)結(jié)構(gòu)比數(shù)據(jù)存儲(chǔ)設(shè)備112中的當(dāng)前樹(shù)型數(shù)據(jù)結(jié)構(gòu)更深,在更新節(jié)點(diǎn)為葉之后,它的在它的父節(jié)點(diǎn)中的指針仍然可以讓它的葉標(biāo)志激活。沒(méi)有刪除當(dāng)前葉中的指針,從而如果/在節(jié)點(diǎn)再次變成內(nèi)部節(jié)點(diǎn)時(shí),可以再次使用已經(jīng)為它的“子節(jié)點(diǎn)”而分配的空間。換而言之,高速緩存中的樹(shù)的物理結(jié)構(gòu)和在它中的數(shù)據(jù)的邏輯結(jié)構(gòu)可以不同——這又可以在內(nèi)容上與數(shù)據(jù)存儲(chǔ)設(shè)備112中的節(jié)點(diǎn)的版本不同。

急切遍歷可以向驅(qū)動(dòng)器部件308傳達(dá)部分結(jié)果并且以這樣的方式可以在恒定時(shí)間內(nèi)驗(yàn)證這些結(jié)果的正確性。高速緩存中的樹(shù)型結(jié)構(gòu)可以與由dbms單元108維護(hù)的樹(shù)型結(jié)構(gòu)顯著地不同。由于高速緩存的透明和松耦合性質(zhì),dbms單元108可以已經(jīng)插入、刪除或者以別的方式改變索引的內(nèi)容而沒(méi)有更新邏輯設(shè)備114。因此,急切遍歷的結(jié)果可能不正確(或者至少與樹(shù)的當(dāng)前版本不一致)。

在完成急切遍歷之后,假設(shè)以排序方式組織樹(shù)中的數(shù)據(jù),邏輯設(shè)備114除了原始請(qǐng)求(根節(jié)點(diǎn))的結(jié)果之外還可以向驅(qū)動(dòng)器部件308返回以下信息:對(duì)于遍歷的每個(gè)節(jié)點(diǎn),它將返回?cái)?shù)組中的兩個(gè)索引(以標(biāo)記數(shù)組中的等于關(guān)鍵字的范圍)和來(lái)自數(shù)組的四個(gè)實(shí)際值。這些值是在實(shí)際索引處的兩個(gè)值、緊接在第一個(gè)值之前的值(如果存在)和緊接地跟隨最后值的值(如果存在)。這六個(gè)值足以讓驅(qū)動(dòng)器部件308確定由邏輯設(shè)備114為給定的節(jié)點(diǎn)而提供的回答對(duì)于該節(jié)點(diǎn)的當(dāng)前狀態(tài)是否正確。如果返回的值與在與dbms單元108關(guān)聯(lián)的樹(shù)型數(shù)據(jù)結(jié)構(gòu)中的相同位置中的值相同,則可能尚未在由邏輯設(shè)備114返回的范圍之前或者之后插入與關(guān)鍵字相等的項(xiàng)目。因此,即使已經(jīng)同時(shí)更新節(jié)點(diǎn)的部分(即高速緩存中的版本實(shí)際地過(guò)時(shí)),仍然可以安全地接受部分結(jié)果。在該情況下,僅在數(shù)據(jù)的與搜索關(guān)鍵字不相關(guān)的部分需要改變。

驅(qū)動(dòng)器部件308可以在用節(jié)點(diǎn)的路徑信息和搜索關(guān)鍵字標(biāo)注的查找表(lut)中存儲(chǔ)來(lái)自邏輯設(shè)備114的響應(yīng)。在請(qǐng)求從數(shù)據(jù)庫(kù)管理部件304到達(dá)時(shí),驅(qū)動(dòng)器部件308可以首先驗(yàn)證它是否已經(jīng)在lut中具有用于請(qǐng)求的預(yù)先生成的響應(yīng)。如果lut有響應(yīng)被存儲(chǔ),則驅(qū)動(dòng)器部件308可以確定該響應(yīng)是否正確(即沒(méi)有與數(shù)據(jù)的dbms單元的版本沖突)。如果響應(yīng)正確,則數(shù)據(jù)庫(kù)管理單元304將接收該響應(yīng)而沒(méi)有去往邏輯設(shè)備114。否則,驅(qū)動(dòng)器部件308將向邏輯設(shè)備114中繼請(qǐng)求,該邏輯設(shè)備然后將對(duì)更新的節(jié)點(diǎn)執(zhí)行查找。作為該操作的部分,邏輯設(shè)備114將隱式地高速緩存節(jié)點(diǎn)(借助路徑信息)。

可以對(duì)于向根節(jié)點(diǎn)的請(qǐng)求而發(fā)起急切遍歷,因此沿著路徑的未匹配不會(huì)在邏輯設(shè)備114上觸發(fā)用于該路徑的進(jìn)一步工作。另外,如果索引的工作集合很大或者如果驅(qū)動(dòng)器想要向邏輯設(shè)備114人工地提供關(guān)于高速緩存哪些節(jié)點(diǎn)(例如僅樹(shù)的最高級(jí))的提示,則邏輯設(shè)備114未必地必須高速緩存新節(jié)點(diǎn)。

在邏輯設(shè)備114中使用急切遍歷不僅減少在邏輯設(shè)備114與dbms單元108之間的預(yù)計(jì)的通信次數(shù),它也可以減少在二者之間發(fā)送的數(shù)據(jù)的總數(shù)量。

示例過(guò)程

圖示過(guò)程500-700作為在代表可以在硬件、軟件或者其組合中實(shí)施的操作序列的邏輯流程圖中的塊的集合。在軟件的上下文中,塊代表在一個(gè)或者多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上存儲(chǔ)的在由一個(gè)或者多個(gè)處理器執(zhí)行時(shí)執(zhí)行記載的操作的計(jì)算機(jī)可執(zhí)行指令。計(jì)算機(jī)可執(zhí)行指令可以包括執(zhí)行特定功能或者實(shí)施特定抽象數(shù)據(jù)類(lèi)型的例程、程序、對(duì)象、部件、數(shù)據(jù)結(jié)構(gòu)等。對(duì)操作進(jìn)行描述的順序未旨在于被解釋為限制,并且可以按照任何順序和/或并行組合描述的塊中的任何數(shù)目的塊以實(shí)施所示過(guò)程。這里描述的過(guò)程中的一個(gè)或者多個(gè)過(guò)程可以獨(dú)立地或者相對(duì)地按照任何順序、無(wú)論是串行還是并行出現(xiàn)。

圖4圖示由與圖1的系統(tǒng)100相似的系統(tǒng)執(zhí)行的高級(jí)過(guò)程400。首先在塊402,dbms(即軟件不受信任機(jī)器、諸如數(shù)據(jù)庫(kù)管理部件304)可以向邏輯設(shè)備(例如硬件受信任機(jī)器、處理元件、諸如邏輯設(shè)備114)發(fā)送用于與樹(shù)型關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)關(guān)聯(lián)的數(shù)據(jù)或者數(shù)據(jù)索引的請(qǐng)求。以下關(guān)于圖5-1更具體描述由dbms發(fā)送的請(qǐng)求。在塊404,響應(yīng)于接收到請(qǐng)求,邏輯設(shè)備可以返回結(jié)果并且在硬件高速緩存中存儲(chǔ)可以在關(guān)聯(lián)于dbms的數(shù)據(jù)存儲(chǔ)設(shè)備處完全存儲(chǔ)的原始樹(shù)型數(shù)據(jù)結(jié)構(gòu)的至少部分。以下關(guān)于圖5-1、5-2、6、7-1和7-2更具體描述在塊402和404執(zhí)行的過(guò)程的細(xì)節(jié)。

圖5-1和5-2圖示用于從dbms向邏輯設(shè)備發(fā)送查詢(xún)并且分配在與邏輯設(shè)備關(guān)聯(lián)的高速緩存處出現(xiàn)的存儲(chǔ)器的過(guò)程500。首先,在塊502,數(shù)據(jù)庫(kù)管理部件可以從用戶(hù)的計(jì)算設(shè)備(例如用戶(hù)的計(jì)算設(shè)備104)接收請(qǐng)求。在塊504,dbms可以將用戶(hù)請(qǐng)求轉(zhuǎn)換成有可以向驅(qū)動(dòng)器部件(例如驅(qū)動(dòng)器部件308)發(fā)送的根節(jié)點(diǎn)數(shù)據(jù)的查詢(xún)。驅(qū)動(dòng)器部件可以由執(zhí)行dbms的相同處理設(shè)備可執(zhí)行或者可以由不同邏輯設(shè)備可執(zhí)行。

在塊506,驅(qū)動(dòng)器可以創(chuàng)建可以基于根節(jié)點(diǎn)數(shù)據(jù)的根標(biāo)識(shí)符,然后驅(qū)動(dòng)器可以向邏輯設(shè)備發(fā)送接收的查詢(xún)和根標(biāo)識(shí)符。根標(biāo)識(shí)符是路徑信息的部分。與每個(gè)查詢(xún)一起向邏輯設(shè)備發(fā)送路徑信息。路徑信息可以由dbms創(chuàng)建或者由驅(qū)動(dòng)器推斷。

在判決塊508,邏輯設(shè)備確定是否已經(jīng)在邏輯設(shè)備處高速緩存與接收的根標(biāo)識(shí)符關(guān)聯(lián)的根節(jié)點(diǎn)。

在塊510,如果在邏輯設(shè)備處沒(méi)有高速緩存根節(jié)點(diǎn),則邏輯設(shè)備可以向驅(qū)動(dòng)器發(fā)送空響應(yīng)。響應(yīng)可以是空響應(yīng),因?yàn)樯形锤咚倬彺娓?jié)點(diǎn)。

在塊512,響應(yīng)于從邏輯設(shè)備接收空響應(yīng),驅(qū)動(dòng)器可以將查詢(xún)與實(shí)際節(jié)點(diǎn)數(shù)據(jù)和路徑信息一起重新發(fā)送到邏輯設(shè)備。在塊514,邏輯設(shè)備可以基于新發(fā)送的數(shù)據(jù)而不是任何先前高速緩存的數(shù)據(jù)提供回答。

在判決塊516,邏輯設(shè)備可以確定是否將高速緩存根節(jié)點(diǎn)數(shù)據(jù)。許多因素可以用來(lái)判決是否將高速緩存根節(jié)點(diǎn)數(shù)據(jù)。例如可以在邏輯設(shè)備處確定與查詢(xún)關(guān)聯(lián)的根節(jié)點(diǎn)是否為這樣的不頻繁地訪問(wèn)的節(jié)點(diǎn)使得邏輯設(shè)備可以判決不浪費(fèi)高速緩存空間用于該節(jié)點(diǎn)。

在塊518,如果確定將不高速緩存根節(jié)點(diǎn),則邏輯設(shè)備可以向驅(qū)動(dòng)器通知不高速緩存根節(jié)點(diǎn)。向驅(qū)動(dòng)器通知不高速緩存根節(jié)點(diǎn)可以是可選的,因?yàn)榭赡艹嗽试S驅(qū)動(dòng)器在下次提供相同查詢(xún)時(shí)僅發(fā)送節(jié)點(diǎn)數(shù)據(jù)之外無(wú)需向驅(qū)動(dòng)器提供該信息。

如果在判決塊516確定將高速緩存根節(jié)點(diǎn),則在塊520,邏輯設(shè)備可以分配用于存儲(chǔ)接收的節(jié)點(diǎn)數(shù)據(jù)和空指針的集合的頁(yè)面。在邏輯設(shè)備處高速緩存節(jié)點(diǎn)包括分配在邏輯設(shè)備的存儲(chǔ)陣列(即高速緩存)內(nèi)的頁(yè)面。頁(yè)面可以包括各自具有預(yù)設(shè)大小的兩個(gè)在邏輯上分離的區(qū)段。一個(gè)區(qū)段可以用于存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)值。另一區(qū)段可以用于存儲(chǔ)用于存儲(chǔ)的數(shù)據(jù)值的指針。

在塊522,dbms可以向驅(qū)動(dòng)器發(fā)送查詢(xún)、樹(shù)i級(jí)節(jié)點(diǎn)數(shù)據(jù)和可選地發(fā)送路徑信息。路徑信息可以由驅(qū)動(dòng)器推斷,因?yàn)轵?qū)動(dòng)器知道1)它先前已經(jīng)從dbms接收到什么樹(shù)根以及2)邏輯設(shè)備認(rèn)為匹配搜索關(guān)鍵字的在根內(nèi)的哪個(gè)次序。在塊524,驅(qū)動(dòng)器可以向邏輯設(shè)備發(fā)送查詢(xún)、路徑信息和接收的i級(jí)節(jié)點(diǎn)數(shù)據(jù)。在塊526,邏輯設(shè)備可以分配用于i級(jí)節(jié)點(diǎn)數(shù)據(jù)的頁(yè)面。該分配可以與根節(jié)點(diǎn)分配相似。由于依次地分配頁(yè)面以及由于一旦寫(xiě)入,在頁(yè)面內(nèi)的指針幾乎從未改變(并且如果它們需要改變,則添加新指針取代它們,并且舊指針通過(guò)將它們寫(xiě)入到另一頁(yè)面中來(lái)保留),所以如果關(guān)聯(lián)節(jié)點(diǎn)在父節(jié)點(diǎn)先前已經(jīng)去除指向該節(jié)點(diǎn)的指針的情況下需要重新激活或者需要更新,則該分配可以允許重用頁(yè)面。

在塊528,邏輯設(shè)備可以基于接收的節(jié)點(diǎn)數(shù)據(jù)和/或路徑信息提供答案。在塊530,可以更新父節(jié)點(diǎn)頁(yè)面中的指針以指向剛才分配的子頁(yè)面。

然后,在塊532,重復(fù)塊522-530直至剛才分配的節(jié)點(diǎn)是葉節(jié)點(diǎn),然后可以標(biāo)記父節(jié)點(diǎn)中的指針以標(biāo)識(shí)子節(jié)點(diǎn)作為葉節(jié)點(diǎn)。

如果在判決塊508已經(jīng)在邏輯設(shè)備處高速緩存根節(jié)點(diǎn),則過(guò)程600可以執(zhí)行。在塊602,邏輯設(shè)備可以使用從驅(qū)動(dòng)器發(fā)送的查詢(xún)和根id來(lái)遍歷高速緩存的樹(shù)數(shù)據(jù)結(jié)構(gòu)。在塊604,邏輯設(shè)備可以在樹(shù)的當(dāng)前訪問(wèn)的節(jié)點(diǎn)中找到與查詢(xún)關(guān)聯(lián)的目標(biāo)數(shù)據(jù)和邊界數(shù)據(jù)。在塊606,邏輯設(shè)備可以確定找到的目標(biāo)和邊界數(shù)據(jù)的次序定位??梢耘R時(shí)地保存目標(biāo)數(shù)據(jù)、邊界數(shù)據(jù)和次序定位信息。在塊608,邏輯設(shè)備取回用于目標(biāo)數(shù)據(jù)的一個(gè)或者多個(gè)指針。在該指針處的數(shù)據(jù)將變成新“當(dāng)前節(jié)點(diǎn)”。在塊610,可以重復(fù)塊604-608直至已經(jīng)到達(dá)葉節(jié)點(diǎn)或者有未分配的指針的節(jié)點(diǎn)。在已經(jīng)到達(dá)葉節(jié)點(diǎn)或者有未分配的指針的節(jié)點(diǎn)之后,然后在塊612,邏輯設(shè)備可以向驅(qū)動(dòng)器發(fā)送目標(biāo)數(shù)據(jù)、邊界數(shù)據(jù)和次序定位信息。

圖7-1和7-2圖示由驅(qū)動(dòng)器執(zhí)行的過(guò)程700。在塊702,驅(qū)動(dòng)器可以從邏輯設(shè)備接收結(jié)果。在塊704,對(duì)于與節(jié)點(diǎn)關(guān)聯(lián)的驅(qū)動(dòng)器從邏輯設(shè)備接收的每個(gè)信息,驅(qū)動(dòng)器可以在比較它們與在與關(guān)聯(lián)于dbms的樹(shù)數(shù)據(jù)結(jié)構(gòu)的相同節(jié)點(diǎn)中的相同次序位置處存儲(chǔ)的信息時(shí)確定結(jié)果是否有效。驅(qū)動(dòng)器可以在恒定時(shí)間內(nèi)直接地查找和比較從邏輯設(shè)備接收的兩個(gè)目標(biāo)數(shù)據(jù)和兩個(gè)邊界數(shù)據(jù)值與在由dbms提供的節(jié)點(diǎn)中的目標(biāo)數(shù)據(jù)和邊界數(shù)據(jù)值(使用次序信息)。在判決塊706,驅(qū)動(dòng)器可以確定產(chǎn)生的比較是否為有效結(jié)果或者無(wú)效結(jié)果。如果該比較確定結(jié)果無(wú)效,換而言之,在由dbms提供的節(jié)點(diǎn)內(nèi)的相同次序定位處的數(shù)據(jù)沒(méi)有與由邏輯設(shè)備高速緩存的數(shù)據(jù)有利地(favorably)比較,則在塊708,驅(qū)動(dòng)器可以向邏輯設(shè)備發(fā)送查詢(xún)、節(jié)點(diǎn)數(shù)據(jù)和路徑信息用于更新比較測(cè)試失敗的節(jié)點(diǎn)和任何關(guān)聯(lián)子節(jié)點(diǎn)數(shù)據(jù)。這之所以出現(xiàn)是因?yàn)槿绻?jié)點(diǎn)比較失敗,則該節(jié)點(diǎn)的所有子節(jié)點(diǎn)也將不一致。接著,在塊710,邏輯設(shè)備可以基于節(jié)點(diǎn)數(shù)據(jù)提供回答并且可以判決是否高速緩存節(jié)點(diǎn)數(shù)據(jù),然后dbms移向樹(shù)中的下一級(jí)。

如果在判決塊706,比較結(jié)果指示節(jié)點(diǎn)數(shù)據(jù)有效,則在塊712,驅(qū)動(dòng)器可以在用與存儲(chǔ)的節(jié)點(diǎn)關(guān)聯(lián)的路徑信息和關(guān)聯(lián)的查詢(xún)目標(biāo)標(biāo)注的查找表(lut)中存儲(chǔ)結(jié)果。接著,在塊714,驅(qū)動(dòng)器可以向dbms發(fā)送與根節(jié)點(diǎn)請(qǐng)求關(guān)聯(lián)的結(jié)果。在塊716,dbms向驅(qū)動(dòng)器發(fā)送用于在樹(shù)的下一級(jí)中的節(jié)點(diǎn)的請(qǐng)求。在判決塊718,驅(qū)動(dòng)器可以確定是否已經(jīng)在驅(qū)動(dòng)器的lut中存儲(chǔ)與用于下一節(jié)點(diǎn)的請(qǐng)求關(guān)聯(lián)的結(jié)果。如果沒(méi)有在驅(qū)動(dòng)器的lut中存儲(chǔ)結(jié)果,則該過(guò)程可以返回到塊708。然而,如果已經(jīng)在驅(qū)動(dòng)器的lut中存儲(chǔ)與請(qǐng)求關(guān)聯(lián)的結(jié)果,則在塊702,驅(qū)動(dòng)器可以向dbms發(fā)送在lut中存儲(chǔ)的結(jié)果。該過(guò)程將通過(guò)返回到塊716來(lái)繼續(xù)直至dbms獲得用于葉節(jié)點(diǎn)的結(jié)果或者直至它已經(jīng)在樹(shù)中遍歷足夠深以獲得用于處理客戶(hù)端查詢(xún)的必需信息。

圖8-1和8-2用圖形圖示在包括軟件部件(dbms802和驅(qū)動(dòng)器804)和硬件部件(例如邏輯設(shè)備806)的系統(tǒng)800內(nèi)出現(xiàn)的通信。在dbms802示出樹(shù)型數(shù)據(jù)結(jié)構(gòu)808。dbms802已經(jīng)從外側(cè)來(lái)源接收用于可以最終地在樹(shù)型數(shù)據(jù)結(jié)構(gòu)808的葉節(jié)點(diǎn)處存儲(chǔ)的信息的查詢(xún)。響應(yīng)于接收到的查詢(xún),dbms802可以向驅(qū)動(dòng)器804發(fā)送用于樹(shù)型數(shù)據(jù)結(jié)構(gòu)808的根節(jié)點(diǎn)812的節(jié)點(diǎn)級(jí)查詢(xún)。如果驅(qū)動(dòng)器804沒(méi)有在lut中存儲(chǔ)的與提供的搜索關(guān)鍵字和根節(jié)點(diǎn)812關(guān)聯(lián)的結(jié)果,則驅(qū)動(dòng)器804在箭頭814可以向邏輯設(shè)備806轉(zhuǎn)發(fā)查詢(xún)和根節(jié)點(diǎn)id。邏輯設(shè)備806然后可以執(zhí)行對(duì)先前已經(jīng)在與邏輯設(shè)備806關(guān)聯(lián)的高速緩存存儲(chǔ)器中存儲(chǔ)的樹(shù)型數(shù)據(jù)結(jié)構(gòu)810的急切遍歷。邏輯設(shè)備806在樹(shù)型數(shù)據(jù)結(jié)構(gòu)810的根節(jié)點(diǎn)816處開(kāi)始向i級(jí)節(jié)點(diǎn)(箭頭818)到ii級(jí)的根節(jié)點(diǎn)(箭頭820)的遍歷。

在邏輯設(shè)備806已經(jīng)遍歷如它可以在樹(shù)型數(shù)據(jù)結(jié)構(gòu)810內(nèi)所去往的盡可能遠(yuǎn)之后,無(wú)論那是去往葉節(jié)點(diǎn)還是有空指針的節(jié)點(diǎn),邏輯設(shè)備806都可以向驅(qū)動(dòng)器804發(fā)送與遍歷的節(jié)點(diǎn)關(guān)聯(lián)的目標(biāo)和邊界信息822。驅(qū)動(dòng)器804可以在lut中存儲(chǔ)從邏輯設(shè)備806接收的信息822。在來(lái)自dbms的請(qǐng)求(例如箭頭824-1和826)之后,僅在接收的信息通過(guò)有效性校驗(yàn)的情況下,驅(qū)動(dòng)器804然后可以發(fā)送在lut中存儲(chǔ)的信息(例如箭頭824-2)。如果接收的信息沒(méi)有通過(guò)有效性校驗(yàn)、諸如由在與樹(shù)的ii級(jí)節(jié)點(diǎn)826關(guān)聯(lián)的索引信息處的“x”示出,則驅(qū)動(dòng)器可以向邏輯設(shè)備806轉(zhuǎn)發(fā)原始查詢(xún)、節(jié)點(diǎn)數(shù)據(jù)信息和路徑信息(箭頭830)。邏輯設(shè)備806然后可以基于更新的值提供新回答,然后在它的用于ii級(jí)節(jié)點(diǎn)832的關(guān)聯(lián)高速緩存中存儲(chǔ)或者更新值。

圖9圖示節(jié)點(diǎn)頁(yè)面如何由邏輯設(shè)備分配給高速緩存樹(shù)型數(shù)據(jù)結(jié)構(gòu)900。高速緩存樹(shù)型數(shù)據(jù)結(jié)構(gòu)900包括在0級(jí)處的根節(jié)點(diǎn)902、在i級(jí)處的三個(gè)節(jié)點(diǎn)904、906和908以及在ii級(jí)處的兩個(gè)節(jié)點(diǎn)910和912。

在根節(jié)點(diǎn)902的信息在邏輯設(shè)備被接收時(shí),可以在高速緩存存儲(chǔ)器914內(nèi)的第一位置處分配第一頁(yè)面902-1??梢曰谟糜陉P(guān)聯(lián)節(jié)點(diǎn)的查詢(xún)由邏輯設(shè)備接收的順序在高速緩存存儲(chǔ)器914內(nèi)分配頁(yè)面。頁(yè)面包括值區(qū)段916和指針逐段918。在所示示例中,節(jié)點(diǎn)查詢(xún)被接收的順序如下:根節(jié)點(diǎn)902由樹(shù)i級(jí)第一節(jié)點(diǎn)904、樹(shù)i級(jí)第二節(jié)點(diǎn)906、樹(shù)i級(jí)第三節(jié)點(diǎn)908、樹(shù)ii級(jí)第二節(jié)點(diǎn)912和最終由樹(shù)ii級(jí)第一節(jié)點(diǎn)910跟隨。因此,在高速緩存存儲(chǔ)器914內(nèi)分配的頁(yè)面的順序鏡像節(jié)點(diǎn)查詢(xún)的到達(dá)順序。如與它們的類(lèi)似編號(hào)的節(jié)點(diǎn)關(guān)聯(lián)的那樣,這是頁(yè)面902-1、頁(yè)面904-1、頁(yè)面906-1、頁(yè)面908-1、頁(yè)面912-1、頁(yè)面910-1。注意邏輯設(shè)備在樹(shù)節(jié)點(diǎn)頁(yè)面被驅(qū)動(dòng)器查詢(xún)時(shí)分配它們并且在請(qǐng)求對(duì)樹(shù)節(jié)點(diǎn)頁(yè)面的計(jì)算時(shí)可以高速緩存或者可以不高速緩它們。另外,邏輯設(shè)備僅可以高速緩存被查詢(xún)的那些頁(yè)面。因此,存儲(chǔ)器中的樹(shù)的物理布局和樹(shù)的內(nèi)容可以與在dbms中存儲(chǔ)的樹(shù)顯著地不同。

在一些示例中,工作量中的非對(duì)稱(chēng)可以提供一些益處。首先,如果訪問(wèn)在樹(shù)中在彼此附近的關(guān)鍵字組(即它們具有共同部分路徑),則它們可以從相互的更新中受益。例如沿著從用于一個(gè)關(guān)鍵字的根到葉的全路徑更新所有節(jié)點(diǎn)的成本可以在共享他們的路徑的那些部分的所有其他關(guān)鍵字之中被攤銷(xiāo)(amortize)。也就是說(shuō),在更新的節(jié)點(diǎn)中包含的任何其他關(guān)鍵字可以被更新(因此可以潛在地從急切遍歷中受益),即使以前從未查找它們。

其中非對(duì)稱(chēng)(skew)可以有益于高速緩存性能的另一情況是在對(duì)于樹(shù)出現(xiàn)更新,但是沒(méi)有修改最頻繁地訪問(wèn)的關(guān)鍵字時(shí)。這里,雖然高速緩存中的數(shù)據(jù)過(guò)時(shí),但是由于次序和數(shù)據(jù)加上邊界值結(jié)果校驗(yàn)而可以容許該陳舊。也就是說(shuō),即使已經(jīng)在數(shù)據(jù)庫(kù)中更新節(jié)點(diǎn),但是只要尚未觸及對(duì)于給定(頻繁)的查詢(xún)而言相關(guān)的具體關(guān)鍵字,邏輯設(shè)備就可以提供正確結(jié)果。

可以利用非對(duì)稱(chēng)的最后方式是由于樹(shù)節(jié)點(diǎn)頁(yè)面僅在它們被訪問(wèn)作為查詢(xún)的部分時(shí)被高速緩存,所以非對(duì)稱(chēng)的工作量可以在高速緩存中僅放置整個(gè)樹(shù)的部分。

圖10圖示加密的數(shù)據(jù)1000的部分串及其對(duì)應(yīng)明文值1002。如果由用戶(hù)計(jì)算設(shè)備生成的原始查詢(xún)具有明文值6,則用戶(hù)的計(jì)算設(shè)備將已經(jīng)加密原始查詢(xún)并且向dbms發(fā)送它用于處理。在一些示例中,加密在用于執(zhí)行用于dbms的處理功能的硬件邏輯設(shè)備處出現(xiàn)。因此,由于邏輯設(shè)備是硬件設(shè)備,所以可以保證在樹(shù)型數(shù)據(jù)結(jié)構(gòu)中存儲(chǔ)的信息的安全性。dbms可以包括加密的值、但不是明文值的樹(shù)型數(shù)據(jù)結(jié)構(gòu)。硬件邏輯設(shè)備可以能夠高速緩存加密的樹(shù)型數(shù)據(jù)結(jié)構(gòu)的至少部分,但是然后將能夠解密與該數(shù)據(jù)結(jié)構(gòu)有關(guān)的具體的請(qǐng)求的信息。因此,在該示例中,硬件邏輯設(shè)備可以返回次序值2、4,這些次序值代表與在原始查詢(xún)中包括的明文值關(guān)聯(lián)的加密的數(shù)據(jù)的左和右邊界1004、1006。為了證實(shí)加密的數(shù)據(jù),硬件邏輯設(shè)備也可以發(fā)送在1004、1006處的加密的值和位置與在原始查詢(xún)中包括的明文值關(guān)聯(lián)的加密的數(shù)據(jù)相鄰的在1008、1010處的值。

示例條款

a:一種方法,包括:在至少部分地在由一個(gè)或者多個(gè)處理器可執(zhí)行的計(jì)算機(jī)可讀介質(zhì)中體現(xiàn)的數(shù)據(jù)庫(kù)管理系統(tǒng)(dbms)處,響應(yīng)于接收到查詢(xún),向驅(qū)動(dòng)器發(fā)送查詢(xún);以及在至少部分地在由一個(gè)或者多個(gè)處理器可執(zhí)行的計(jì)算機(jī)可讀介質(zhì)中體現(xiàn)的驅(qū)動(dòng)器處,響應(yīng)于從dbms接收到查詢(xún),向硬件邏輯設(shè)備發(fā)送修改的查詢(xún)。

b:如a段記載的方法,還包括:在硬件邏輯設(shè)備處,響應(yīng)于接收到修改的查詢(xún),至少基于修改的查詢(xún)來(lái)遍歷先前在與硬件邏輯設(shè)備關(guān)聯(lián)的存儲(chǔ)器中高速緩存的樹(shù)型關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)的節(jié)點(diǎn);取回位于每個(gè)遍歷的節(jié)點(diǎn)處的數(shù)據(jù)的至少部分;以及向驅(qū)動(dòng)器發(fā)送取回的數(shù)據(jù)的部分。

c:如a或者b段記載的方法,還包括:在驅(qū)動(dòng)器處,響應(yīng)于從硬件邏輯設(shè)備接收數(shù)據(jù)的部分,至少基于在關(guān)聯(lián)于dbms的一個(gè)或者多個(gè)樹(shù)型關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)之一處存儲(chǔ)的關(guān)聯(lián)的數(shù)據(jù)證實(shí)數(shù)據(jù)的部分;以及響應(yīng)于證實(shí)數(shù)據(jù)的部分,向dbms發(fā)送證實(shí)的數(shù)據(jù)的部分。

d:如a、b或者c段記載的方法,其中查詢(xún)是至少包括查詢(xún)值和位于關(guān)聯(lián)節(jié)點(diǎn)處的數(shù)據(jù)的節(jié)點(diǎn)級(jí)查詢(xún),其中修改的查詢(xún)是包括查詢(xún)值和節(jié)點(diǎn)標(biāo)識(shí)符的樹(shù)級(jí)請(qǐng)求。

e:如a、b、c或者d段記載的方法,還包括:在驅(qū)動(dòng)器處,響應(yīng)于從硬件邏輯設(shè)備接收到數(shù)據(jù)的部分,確定數(shù)據(jù)的接收的部分是否不一致;以及響應(yīng)于確定接收的部分不一致,向硬件邏輯設(shè)備發(fā)送查詢(xún)、節(jié)點(diǎn)數(shù)據(jù)和路徑信息;以及在硬件邏輯設(shè)備處,響應(yīng)于接收到查詢(xún)、節(jié)點(diǎn)數(shù)據(jù)和路徑信息,執(zhí)行以下各項(xiàng)中的至少一項(xiàng):分配用于與節(jié)點(diǎn)數(shù)據(jù)關(guān)聯(lián)的節(jié)點(diǎn)的頁(yè)面;或者更新在與節(jié)點(diǎn)數(shù)據(jù)關(guān)聯(lián)的先前高速緩存的頁(yè)面中包括的數(shù)據(jù)值或者指針信息中的至少一個(gè)。

f:如a、b、c、d或者e段記載的方法,還包括:在硬件邏輯設(shè)備處,響應(yīng)于接收到查詢(xún)、節(jié)點(diǎn)數(shù)據(jù)和路徑信息,在與硬件邏輯設(shè)備關(guān)聯(lián)的高速緩存存儲(chǔ)器當(dāng)前不包括與接收的查詢(xún)關(guān)聯(lián)的節(jié)點(diǎn)關(guān)聯(lián)的頁(yè)面時(shí),至少基于分配策略為與接收的查詢(xún)、節(jié)點(diǎn)數(shù)據(jù)和路徑信息關(guān)聯(lián)的節(jié)點(diǎn)依次地分配在高速緩存存儲(chǔ)器內(nèi)的頁(yè)面。

g:如a、b、c、d、e或者f段記載的方法,還包括:在驅(qū)動(dòng)器處,嘗試證實(shí)從硬件邏輯設(shè)備發(fā)送的數(shù)據(jù)的部分;響應(yīng)于不能證實(shí)數(shù)據(jù)的部分,向硬件邏輯設(shè)備發(fā)送查詢(xún)、節(jié)點(diǎn)數(shù)據(jù)和路徑信息;以及在硬件邏輯設(shè)備處,響應(yīng)于接收到查詢(xún)、節(jié)點(diǎn)數(shù)據(jù)和路徑信息,更新在與接收的節(jié)點(diǎn)數(shù)據(jù)或者接收的路徑信息中的至少一個(gè)關(guān)聯(lián)的先前高速緩存的頁(yè)面中包括的數(shù)據(jù)值或者指針信息中的至少一個(gè)。

h:如a、b、c、d、e、f或者g段記載的方法,還包括:在驅(qū)動(dòng)器處,在查找表(lut)內(nèi)存儲(chǔ)從硬件邏輯設(shè)備接收的數(shù)據(jù)的部分;響應(yīng)于從dbms接收到查詢(xún),確定在lut內(nèi)存儲(chǔ)的信息是否與接收的查詢(xún)關(guān)聯(lián);以及基于確定在lut內(nèi)存儲(chǔ)的信息與接收的查詢(xún)關(guān)聯(lián)向dbms發(fā)送在lut內(nèi)存儲(chǔ)的信息。

i:如a、b、c、d、e、f、g或者h(yuǎn)段記載的方法,還包括:在硬件邏輯設(shè)備處,響應(yīng)于接收到修改的查詢(xún),至少基于修改的查詢(xún)來(lái)遍歷先前在與硬件邏輯設(shè)備關(guān)聯(lián)的存儲(chǔ)器中高速緩存的樹(shù)型關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)的節(jié)點(diǎn);取回位于每個(gè)遍歷的節(jié)點(diǎn)處的數(shù)據(jù)的至少部分;以及向驅(qū)動(dòng)器發(fā)送取回的數(shù)據(jù)的部分,其中位于遍歷的節(jié)點(diǎn)處的取回的數(shù)據(jù)的部分包括以下各項(xiàng)中的至少一項(xiàng):與節(jié)點(diǎn)標(biāo)識(shí)符關(guān)聯(lián)的第一數(shù)據(jù)值和第一數(shù)據(jù)值在關(guān)聯(lián)的高速緩存的頁(yè)面內(nèi)的數(shù)據(jù)值的次序定位,以及位于相對(duì)于第一數(shù)據(jù)值的預(yù)定義的位置處的至少一個(gè)第二數(shù)據(jù)值和第二數(shù)據(jù)值在高速緩存的頁(yè)面內(nèi)的次序定位。

j:如a、b、c、d、e、f、g或者i段記載的方法,還包括:在硬件邏輯設(shè)備處,響應(yīng)于接收到修改的查詢(xún),至少基于修改的查詢(xún)來(lái)遍歷先前在與硬件邏輯設(shè)備關(guān)聯(lián)的存儲(chǔ)器中高速緩存的樹(shù)型關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)的節(jié)點(diǎn);取回位于每個(gè)遍歷的節(jié)點(diǎn)處的數(shù)據(jù)的至少部分;以及向驅(qū)動(dòng)器發(fā)送取回的數(shù)據(jù)的部分,其中位于遍歷的節(jié)點(diǎn)處的取回的數(shù)據(jù)的部分包括以下各項(xiàng)中的至少一項(xiàng):與節(jié)點(diǎn)標(biāo)識(shí)符關(guān)聯(lián)的第一數(shù)據(jù)值和第一數(shù)據(jù)值在關(guān)聯(lián)的高速緩存的頁(yè)面內(nèi)的數(shù)據(jù)值的次序定位,以及位于相對(duì)于第一數(shù)據(jù)值的預(yù)定義的位置處的至少一個(gè)第二數(shù)據(jù)值和第二數(shù)據(jù)值在高速緩存的頁(yè)面內(nèi)的次序定位,其中第一數(shù)據(jù)值包括與節(jié)點(diǎn)標(biāo)識(shí)符關(guān)聯(lián)的下和上界值,其中第二值包括位于比下界值小至少一的次序定位的值和位于比上界值大至少一的次序定位的值。

k:如a-j段記載的方法,其中頁(yè)面包括值位置和指針位置,指針位置與值位置在邏輯上分離。

l:一種用于執(zhí)行在a-k段中的任一段中描述的方法的設(shè)備。

m:一種系統(tǒng),包括:至少部分地在由一個(gè)或者多個(gè)處理器可執(zhí)行的計(jì)算機(jī)可讀介質(zhì)中體現(xiàn)的數(shù)據(jù)庫(kù)管理系統(tǒng)(dbms),其中dbms響應(yīng)于接收到查詢(xún)來(lái)發(fā)送查詢(xún);以及至少部分地在由一個(gè)或者多個(gè)處理器可執(zhí)行的計(jì)算機(jī)可讀介質(zhì)中體現(xiàn)的驅(qū)動(dòng)器,其中驅(qū)動(dòng)器響應(yīng)于從dbms接收到查詢(xún)來(lái)向邏輯設(shè)備發(fā)送修改的查詢(xún)。

n:如m記載的系統(tǒng),還包括:至少部分地在硬件中體現(xiàn)的邏輯設(shè)備,包括高速緩存存儲(chǔ)器,高速緩存存儲(chǔ)器用于存儲(chǔ)與關(guān)聯(lián)于dbms的一個(gè)或者多個(gè)樹(shù)型關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)之一的至少部分關(guān)聯(lián)的樹(shù)型關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu),邏輯設(shè)備響應(yīng)于接收到修改的查詢(xún),至少基于修改的查詢(xún)來(lái)遍歷在高速緩存存儲(chǔ)器中存儲(chǔ)的樹(shù)型關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)的節(jié)點(diǎn);取回位于每個(gè)遍歷的節(jié)點(diǎn)處的數(shù)據(jù)的部分;以及向驅(qū)動(dòng)器發(fā)送取回的數(shù)據(jù)的部分。

o:如m或者n段記載的系統(tǒng),其中驅(qū)動(dòng)器響應(yīng)于接收到數(shù)據(jù)的部分至少基于在關(guān)聯(lián)于dbms的樹(shù)型關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)之一處存儲(chǔ)的數(shù)據(jù)證實(shí)數(shù)據(jù)的部分;以及向dbms發(fā)送證實(shí)的數(shù)據(jù)的部分。

p:如m、n或者o段記載的系統(tǒng),其中查詢(xún)是至少包括查詢(xún)值和位于關(guān)聯(lián)節(jié)點(diǎn)處的數(shù)據(jù)的節(jié)點(diǎn)級(jí)查詢(xún),其中修改的查詢(xún)是包括查詢(xún)值和節(jié)點(diǎn)標(biāo)識(shí)符的樹(shù)級(jí)請(qǐng)求。

q:如m、n、o或者p段記載的系統(tǒng),其中驅(qū)動(dòng)器響應(yīng)于從邏輯設(shè)備接收數(shù)據(jù)的部分,確定數(shù)據(jù)的接收的部分是否不一致;以及響應(yīng)于確定數(shù)據(jù)的接收的部分不一致,向邏輯設(shè)備發(fā)送查詢(xún)、節(jié)點(diǎn)數(shù)據(jù)和路徑信息,以及其中邏輯設(shè)備響應(yīng)于接收到查詢(xún)、節(jié)點(diǎn)數(shù)據(jù)和路徑信息來(lái)執(zhí)行以下各項(xiàng)中的至少一項(xiàng):分配用于與節(jié)點(diǎn)數(shù)據(jù)關(guān)聯(lián)的節(jié)點(diǎn)的頁(yè)面;或者更新在與節(jié)點(diǎn)數(shù)據(jù)關(guān)聯(lián)的先前高速緩存的頁(yè)面中包括的數(shù)據(jù)值或者指針信息中的至少一個(gè)。

r:如m、n、o、p或者q段記載的系統(tǒng),其中邏輯設(shè)備響應(yīng)于接收到查詢(xún)、節(jié)點(diǎn)數(shù)據(jù)和路徑信息,在與邏輯設(shè)備關(guān)聯(lián)的高速緩存存儲(chǔ)器當(dāng)前不包括與接收的查詢(xún)關(guān)聯(lián)的節(jié)點(diǎn)關(guān)聯(lián)的頁(yè)面時(shí),至少基于分配規(guī)則為與接收的查詢(xún)、節(jié)點(diǎn)數(shù)據(jù)和路徑信息關(guān)聯(lián)的節(jié)點(diǎn)依次地分配在高速緩存存儲(chǔ)器內(nèi)的頁(yè)面。

s:如m、n、o、p、q或者s段記載的系統(tǒng),其中驅(qū)動(dòng)器嘗試證實(shí)從邏輯設(shè)備發(fā)送的數(shù)據(jù)的部分;以及響應(yīng)于不能證實(shí)數(shù)據(jù)的部分,向邏輯設(shè)備發(fā)送查詢(xún)、節(jié)點(diǎn)數(shù)據(jù)和路徑信息,其中邏輯設(shè)備響應(yīng)于接收到查詢(xún)、節(jié)點(diǎn)數(shù)據(jù),更新在與接收的節(jié)點(diǎn)數(shù)據(jù)或者接收的路徑信息中的至少一個(gè)關(guān)聯(lián)的先前高速緩存的頁(yè)面中包括的數(shù)據(jù)值或者指針信息中的至少一個(gè)。

t:如m、n、o、p、q、r或者s段記載的系統(tǒng),其中驅(qū)動(dòng)器在查找表(lut)內(nèi)存儲(chǔ)從邏輯設(shè)備接收的數(shù)據(jù)的部分作為節(jié)點(diǎn);響應(yīng)于從dbms接收到查詢(xún),確定在lut內(nèi)存儲(chǔ)的信息是否與接收的查詢(xún)關(guān)聯(lián);以及至少基于確定在lut內(nèi)存儲(chǔ)的信息與接收的查詢(xún)關(guān)聯(lián)向dbms發(fā)送在lut內(nèi)存儲(chǔ)的信息。

u:如m、n、o、p、q、r、s或者t段記載的系統(tǒng),其中邏輯設(shè)備響應(yīng)于接收到修改的查詢(xún),至少基于修改的查詢(xún)來(lái)遍歷先前在與邏輯設(shè)備關(guān)聯(lián)的存儲(chǔ)器中高速緩存的樹(shù)型關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)的節(jié)點(diǎn);取回位于每個(gè)遍歷的節(jié)點(diǎn)處的數(shù)據(jù)的至少部分;以及向驅(qū)動(dòng)器發(fā)送取回的數(shù)據(jù)的部分,其中位于遍歷的節(jié)點(diǎn)處的取回的數(shù)據(jù)的部分包括以下各項(xiàng)中的至少一項(xiàng):與節(jié)點(diǎn)標(biāo)識(shí)符關(guān)聯(lián)的第一數(shù)據(jù)值和第一數(shù)據(jù)值在關(guān)聯(lián)的高速緩存的頁(yè)面內(nèi)的次序定位,以及位于相對(duì)于第一數(shù)據(jù)值的預(yù)定義的位置處的至少一個(gè)第二數(shù)據(jù)值和第二數(shù)據(jù)值在高速緩存的頁(yè)面內(nèi)的次序定位。

v:如m、n、o、p、q、r、s或者t段記載的系統(tǒng),其中邏輯設(shè)備響應(yīng)于接收到修改的查詢(xún),至少基于修改的查詢(xún)來(lái)遍歷先前在與邏輯設(shè)備關(guān)聯(lián)的存儲(chǔ)器中高速緩存的樹(shù)型關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)的節(jié)點(diǎn);取回位于每個(gè)遍歷的節(jié)點(diǎn)處的數(shù)據(jù)的至少部分;以及向驅(qū)動(dòng)器發(fā)送取回的數(shù)據(jù)的部分,其中第一數(shù)據(jù)值包括與節(jié)點(diǎn)標(biāo)識(shí)符關(guān)聯(lián)的下和上界值,以及其中第二值在下界值不是頁(yè)面中的第一個(gè)值時(shí)包括位于比下界值小至少一的次序定位處的值,和在上界值不是頁(yè)面中的最后值時(shí)包括位于比上界值大至少一的次序定位處的值。

w:如m、n、o、p、q、r、s、t、u或者v段記載的系統(tǒng),其中頁(yè)面包括值位置和指針位置,指針位置與值位置在邏輯上分離。

x:一種系統(tǒng),包括:在至少部分地在由一個(gè)或者多個(gè)處理器可執(zhí)行的計(jì)算機(jī)可讀介質(zhì)中體現(xiàn)的數(shù)據(jù)庫(kù)管理系統(tǒng)(dbms)裝置,用于響應(yīng)于接收到查詢(xún)來(lái)發(fā)送查詢(xún);以及至少部分地在由一個(gè)或者多個(gè)處理器可執(zhí)行的計(jì)算機(jī)可讀介質(zhì)中體現(xiàn)的驅(qū)動(dòng)器裝置,用于響應(yīng)于從dbms接收到查詢(xún)來(lái)發(fā)送修改的查詢(xún)。

y:如x段記載的系統(tǒng),還包括:邏輯裝置,用于響應(yīng)于接收到修改的查詢(xún),至少基于修改的查詢(xún)來(lái)遍歷先前在與邏輯裝置關(guān)聯(lián)的存儲(chǔ)器中高速緩存的樹(shù)型關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)的節(jié)點(diǎn);取回位于每個(gè)遍歷的節(jié)點(diǎn)處的數(shù)據(jù)的至少部分;以及向驅(qū)動(dòng)器裝置發(fā)送取回的數(shù)據(jù)的部分。

z:如x或者y段記載的系統(tǒng),還包括:硬件驅(qū)動(dòng)器裝置,響應(yīng)于從邏輯裝置接收到數(shù)據(jù)的部分,至少基于在與dbms裝置關(guān)聯(lián)的一個(gè)或者多個(gè)樹(shù)型關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)之一處存儲(chǔ)的關(guān)聯(lián)的數(shù)據(jù)證實(shí)數(shù)據(jù)的部分;以及響應(yīng)于證實(shí)數(shù)據(jù)的部分,向dbms裝置發(fā)送證實(shí)的數(shù)據(jù)的部分。

aa:如x、y或者z段的系統(tǒng),其中查詢(xún)是至少包括查詢(xún)值和位于關(guān)聯(lián)節(jié)點(diǎn)處的數(shù)據(jù)的節(jié)點(diǎn)級(jí)查詢(xún),其中修改的查詢(xún)是包括查詢(xún)值和節(jié)點(diǎn)標(biāo)識(shí)符的樹(shù)級(jí)請(qǐng)求。

bb:如x、y、z或者aa段記載的系統(tǒng),其中驅(qū)動(dòng)器裝置響應(yīng)于接收到數(shù)據(jù)的部分來(lái)確定數(shù)據(jù)的接收的部分是否不一致;以及響應(yīng)于確定接收的部分不一致,發(fā)送查詢(xún)、節(jié)點(diǎn)數(shù)據(jù)和路徑信息;以及還包括:邏輯裝置,響應(yīng)于接收到查詢(xún)、節(jié)點(diǎn)數(shù)據(jù)和路徑信息,執(zhí)行以下各項(xiàng)中的至少一項(xiàng):分配用于與節(jié)點(diǎn)數(shù)據(jù)關(guān)聯(lián)的節(jié)點(diǎn)的頁(yè)面;或者更新在與節(jié)點(diǎn)數(shù)據(jù)關(guān)聯(lián)的先前高速緩存的頁(yè)面中包括的數(shù)據(jù)值或者指針信息中的至少一個(gè)。

cc:如x、y、z、aa或者bb段記載的系統(tǒng),還包括:邏輯裝置,響應(yīng)于接收到查詢(xún)、節(jié)點(diǎn)數(shù)據(jù)和路徑信息,在與邏輯裝置關(guān)聯(lián)的高速緩存存儲(chǔ)器當(dāng)前不包括與接收的查詢(xún)關(guān)聯(lián)的節(jié)點(diǎn)關(guān)聯(lián)的頁(yè)面時(shí),至少基于分配規(guī)則為與接收的查詢(xún)、節(jié)點(diǎn)數(shù)據(jù)和路徑信息關(guān)聯(lián)的節(jié)點(diǎn)依次地分配在高速緩存存儲(chǔ)器內(nèi)的頁(yè)面。

dd:如x、y、z、aa、bb或者cc段記載的系統(tǒng),其中驅(qū)動(dòng)器裝置嘗試證實(shí)數(shù)據(jù)的部分;響應(yīng)于不能證實(shí)數(shù)據(jù)的部分,發(fā)送查詢(xún)、節(jié)點(diǎn)數(shù)據(jù)和路徑信息;以及還包括:邏輯裝置,響應(yīng)于接收到查詢(xún)、節(jié)點(diǎn)數(shù)據(jù)和路徑信息,更新在與接收的節(jié)點(diǎn)數(shù)據(jù)或者接收的路徑信息中的至少一個(gè)關(guān)聯(lián)的先前高速緩存的頁(yè)面中包括的數(shù)據(jù)值或者指針信息中的至少一個(gè)。

ee:如x、y、z、aa、bb、cc或者dd段記載的系統(tǒng),其中驅(qū)動(dòng)器裝置在查找表(lut)內(nèi)存儲(chǔ)從邏輯設(shè)備接收的數(shù)據(jù)的部分;響應(yīng)于從dbms裝置接收到查詢(xún),確定在lut內(nèi)存儲(chǔ)的信息是否與接收的查詢(xún)關(guān)聯(lián);以及基于確定在lut內(nèi)存儲(chǔ)的信息與接收的查詢(xún)關(guān)聯(lián)向dbms裝置發(fā)送在lut內(nèi)存儲(chǔ)的信息。

ff:如x、y、z、aa、bb、cc、dd或者ee段記載的系統(tǒng),還包括:邏輯裝置,響應(yīng)于接收到修改的查詢(xún),至少基于修改的查詢(xún)來(lái)遍歷先前在與邏輯裝置關(guān)聯(lián)的存儲(chǔ)器中高速緩存的樹(shù)型關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)的節(jié)點(diǎn);取回位于每個(gè)遍歷的節(jié)點(diǎn)處的數(shù)據(jù)的至少部分;以及向驅(qū)動(dòng)器裝置發(fā)送取回的數(shù)據(jù)的部分,其中位于遍歷的節(jié)點(diǎn)處的取回的數(shù)據(jù)的部分包括以下各項(xiàng)中的至少一項(xiàng):與節(jié)點(diǎn)標(biāo)識(shí)符關(guān)聯(lián)的第一數(shù)據(jù)值和第一數(shù)據(jù)值在關(guān)聯(lián)的高速緩存的頁(yè)面內(nèi)的數(shù)據(jù)值的次序定位,以及位于相對(duì)于第一數(shù)據(jù)值的預(yù)定義的位置處的至少一個(gè)第二數(shù)據(jù)值和第二數(shù)據(jù)值在高速緩存的頁(yè)面內(nèi)的次序定位。

gg:如x、y、z、aa、bb、cc、dd或者ee段記載的系統(tǒng),還包括:邏輯裝置,響應(yīng)于接收到修改的查詢(xún),至少基于修改的查詢(xún)來(lái)遍歷先前在與邏輯裝置關(guān)聯(lián)的存儲(chǔ)器中高速緩存的樹(shù)型關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)的節(jié)點(diǎn);取回位于每個(gè)遍歷的節(jié)點(diǎn)處的數(shù)據(jù)的至少部分;以及向驅(qū)動(dòng)器裝置發(fā)送取回的數(shù)據(jù)的部分,其中位于遍歷的節(jié)點(diǎn)處的取回的數(shù)據(jù)的部分包括以下各項(xiàng)中的至少一項(xiàng):與節(jié)點(diǎn)標(biāo)識(shí)符關(guān)聯(lián)的第一數(shù)據(jù)值和第一數(shù)據(jù)值在關(guān)聯(lián)的高速緩存的頁(yè)面內(nèi)的數(shù)據(jù)值的次序定位,以及位于相對(duì)于第一數(shù)據(jù)值的預(yù)定義的位置處的至少一個(gè)第二數(shù)據(jù)值和第二數(shù)據(jù)值在高速緩存的頁(yè)面內(nèi)的次序定位,其中第一數(shù)據(jù)值包括與節(jié)點(diǎn)標(biāo)識(shí)符關(guān)聯(lián)的下和上界值,其中第二值包括位于比下界值小至少一的次序定位處的值和位于比上界值大至少一的次序定位處的值。

hh:如x、y、z、aa、bb、cc、dd、ee、ff或者gg段記載的系統(tǒng),其中頁(yè)面包括值位置和指針位置,指針位置與值位置在邏輯上分離。

結(jié)論

雖然已經(jīng)用結(jié)構(gòu)特征和/或方法動(dòng)作特有的言語(yǔ)描述了技術(shù),但是將理解所附權(quán)利要求未必地限于描述的特征或者動(dòng)作。實(shí)際上,描述特征和動(dòng)作作為這樣的技術(shù)的示例實(shí)現(xiàn)方式。

在個(gè)體塊中圖示并且參照那些塊概括示例過(guò)程的操作。圖示過(guò)程作為塊的邏輯流程,這些塊中的每個(gè)塊可以代表可以在硬件、軟件或者其組合中實(shí)施的一個(gè)或者多個(gè)操作。在軟件的上下文中,操作代表在一個(gè)或者多個(gè)計(jì)算機(jī)可讀介質(zhì)上存儲(chǔ)的計(jì)算機(jī)可執(zhí)行指令,這些計(jì)算機(jī)可執(zhí)行指令在由一個(gè)或者多個(gè)處理器執(zhí)行時(shí)使得一個(gè)或者多個(gè)處理器能夠執(zhí)行記載的操作。一般而言,計(jì)算機(jī)可執(zhí)行指令包括執(zhí)行特定功能或者實(shí)施特定抽象數(shù)據(jù)類(lèi)型的例程、程序、對(duì)象、模塊、部件、數(shù)據(jù)結(jié)構(gòu)等。對(duì)操作進(jìn)行描述的順序沒(méi)有旨在于被解釋為限制,并且描述的操作中的任何數(shù)目的操作可以按照任何順序被執(zhí)行、按照任何順序被組合、被細(xì)分成多個(gè)子操作和/或被并行執(zhí)行以實(shí)施描述的過(guò)程。描述的過(guò)程可以由與一個(gè)或者多個(gè)設(shè)備、諸如一個(gè)或者多個(gè)內(nèi)部或者外部cpu或者gpu和/或一件或者多件硬件邏輯、諸如fpga、dsp或者其他類(lèi)型的加速器關(guān)聯(lián)的資源執(zhí)行。

可以在由一個(gè)或者多個(gè)通用計(jì)算機(jī)或者處理器可執(zhí)行的軟件代碼模塊中體現(xiàn)和經(jīng)由這些軟件代碼模塊全自動(dòng)化以上描述的方法和過(guò)程中的所有方法和過(guò)程??梢栽谌魏晤?lèi)型的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)或者其他計(jì)算機(jī)存儲(chǔ)設(shè)備中存儲(chǔ)代碼模塊??梢詡溥x地在專(zhuān)門(mén)化的計(jì)算機(jī)硬件中體現(xiàn)方法中的一些或者所有方法。

在這里描述和/或在附圖中描繪的流程圖中的任何例程描述、元件或者塊應(yīng)當(dāng)被理解為潛在地代表代碼模塊、段或者部分,這些代碼模塊、段或者部分包括用于在例程中實(shí)施具體邏輯功能或者元件的一個(gè)或者多個(gè)可執(zhí)行指令。在這里描述的示例的范圍內(nèi)包括備選實(shí)現(xiàn)方式,在這些備選實(shí)現(xiàn)方式中可以如本領(lǐng)域技術(shù)人員將理解的那樣,元件或者功能根據(jù)涉及到的功能性可以被刪除或者不按照示出或討論的順序、包括基本上同步地或者按照相反順序被執(zhí)行。應(yīng)當(dāng)強(qiáng)調(diào)可以對(duì)以上描述的示例做出許多變化和修改,這些示例的元件將被理解為在其他可接受的示例之中。所有這樣的修改和變化旨在于在這里被包括在本公開(kāi)的范圍內(nèi)并且為所附權(quán)利要求所保護(hù)。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
东阳市| 阜新| 昭平县| 岗巴县| 大兴区| 静安区| 厦门市| 原平市| 黄骅市| 祁东县| 榆中县| 武义县| 武夷山市| 怀仁县| 聊城市| 嘉义县| 洛阳市| 习水县| 朝阳县| 南丰县| 高淳县| 苏尼特右旗| 土默特左旗| 达日县| 开阳县| 温州市| 河曲县| 山东省| 盱眙县| 九龙县| 扎赉特旗| 鲁山县| 新化县| 湘乡市| 永城市| 平舆县| 濮阳市| 长阳| 抚州市| 梅河口市| 焉耆|