專利名稱::用于優(yōu)化針對(duì)垂直存儲(chǔ)式數(shù)據(jù)庫(kù)的查詢的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明總體涉及數(shù)據(jù)庫(kù)管理領(lǐng)域,并且具體地,本發(fā)明涉及一種用于優(yōu)化針對(duì)垂直存儲(chǔ)式數(shù)據(jù)庫(kù)的查詢的方法和設(shè)備。
背景技術(shù):
:已經(jīng)提出了資源描述框架(RDF:ResourcesDescriptionFramework)作為一種用于描述元數(shù)據(jù)(信息)的語(yǔ)言,尤其是用于描述針對(duì)萬(wàn)維網(wǎng)頁(yè)上的資源的元數(shù)據(jù)。通常,可使用統(tǒng)一資源描述符(URI:UniversalResourceIdentifier)來(lái)標(biāo)識(shí)萬(wàn)維網(wǎng)頁(yè)上的資源。隨著語(yǔ)義網(wǎng)絡(luò)技術(shù)的發(fā)展,W3C(萬(wàn)維網(wǎng)聯(lián)盟)已經(jīng)推薦將RDF作為一種用于在語(yǔ)義網(wǎng)絡(luò)應(yīng)用中的多種資源之間交換信息的標(biāo)準(zhǔn)。圖1示出了RDF數(shù)據(jù)存儲(chǔ)表的一個(gè)例子。如圖1所示,在RDF數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)中,RDF數(shù)據(jù)通常是三元組,包括主語(yǔ)、謂詞(也稱為屬性)和賓語(yǔ)。例如,在圖1所示的存儲(chǔ)表中的第二行的三元組表示了這樣一個(gè)事實(shí),即"SXZ是一個(gè)教授",其中"SXZ"是主語(yǔ),"typeOf(是)"是謂詞,以及"Professor(教授)"是賓語(yǔ)。在圖1所示的存儲(chǔ)表中的第五行的三元組表示了另一個(gè)事實(shí),即"SXZ教課程l,,,其中"SXZ,,是主語(yǔ),"Teach(教),,是謂詞,以及"Coursel(課程l)"是賓語(yǔ)。在當(dāng)前的RDF中,主語(yǔ)和謂詞的值都應(yīng)該最終解析為統(tǒng)一資源描述符(URI),而賓語(yǔ)的值既可以是統(tǒng)一資源描述符又可以是文字(literal)值,例如數(shù)字或者字符串。這種RDF數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)實(shí)質(zhì)上是一種垂直式數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),即,每個(gè)條目只表示一個(gè)簡(jiǎn)單的事實(shí),例如,條目"SXZ是一個(gè)教授",以及條目"SXZ教課程1"。相反,傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)是一種水平式數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),即每個(gè)條目表示主語(yǔ)的所有關(guān)系,例如,條目"sxz是一個(gè)教授,并且教授課程1"。RDF三元組也可以被表示為一張圖,其中主語(yǔ)可以被表示為圖中的源節(jié)點(diǎn),表示統(tǒng)一資源描述符的賓語(yǔ)可以被表示為圖中的宿節(jié)點(diǎn),以及謂詞可以被表示為連接源節(jié)點(diǎn)和宿節(jié)點(diǎn)的有向連接。當(dāng)然,主語(yǔ)可以與多個(gè)賓語(yǔ)相關(guān)聯(lián)。例如,圖1中的三元組可以被表示為如圖2所示的有向圖。關(guān)于RDF的完整描述,可參見(jiàn)FrankManola和EricMiller的"RDFprimer.W3Crecommendation,Feb2004",該文件可以通過(guò)網(wǎng)址www.w3.org/TR/rdf-primer/獲得。在此引入該文件作為參考。無(wú)疑,RDF正在成為語(yǔ)義網(wǎng)絡(luò)的里程碑。為了在企業(yè)的廣泛異質(zhì)數(shù)據(jù)源之上執(zhí)行語(yǔ)義查詢,需要將現(xiàn)有數(shù)據(jù)轉(zhuǎn)換成為RDF三元組數(shù)據(jù)。同時(shí),針對(duì)RDF三元組數(shù)據(jù),已經(jīng)開(kāi)發(fā)了例如SPARQL的語(yǔ)義網(wǎng)絡(luò)查詢語(yǔ)言,用以描述用戶的查詢條件。關(guān)于SPARQL的詳細(xì)描述,可參見(jiàn)E.Prud,hommeaux和A.Seaborne的"SPARQLquerylanguageforRDF.W3Ccandidaterecommendation,April2006",在i匕引入該文件作為參考。經(jīng)過(guò)數(shù)十年,已經(jīng)廣泛接受了成熟的關(guān)系數(shù)據(jù)庫(kù)(RDB:RelationalDatabase)技術(shù)來(lái)管理各種應(yīng)用數(shù)據(jù)。當(dāng)前,存在兩種常規(guī)方法來(lái)使用成熟的關(guān)系數(shù)據(jù)庫(kù)技術(shù)管理RDF數(shù)據(jù)。一種方法是使用抽取-轉(zhuǎn)換-裝載(ETL:Extract-transform-load)方法將現(xiàn)有數(shù)據(jù)移植到特定的基于RDB的RDF三元組存儲(chǔ)庫(kù)中,其中用戶可以查詢和管理按照RDF三元組形式存儲(chǔ)的數(shù)據(jù)。另一種方法是在傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)上創(chuàng)建虛擬RDF視圖,由此將RDF查詢轉(zhuǎn)換成為在傳統(tǒng)系統(tǒng)中可沖丸行的結(jié)構(gòu)化查詢語(yǔ)言(SQL:StructuredQueryLanguage)。本發(fā)明關(guān)注于第一種方式,即管理和優(yōu)化在關(guān)系數(shù)據(jù)庫(kù)上建立的RDF三元組存儲(chǔ)庫(kù)中的RDF數(shù)據(jù)。根據(jù)基于RDB的RDF三元組存儲(chǔ)庫(kù)的存儲(chǔ)設(shè)計(jì),可以進(jìn)一步將三元組存儲(chǔ)庫(kù)劃分成為3個(gè)類型即1)通用RDF三元組存4諸庫(kù),2)改進(jìn)的RDF三元組存儲(chǔ)庫(kù);3)水平/二元表存儲(chǔ)庫(kù)。對(duì)于通用RDF三元組存儲(chǔ)庫(kù),直接以具有主語(yǔ)、謂詞和賓語(yǔ)三個(gè)列的通用表存儲(chǔ)三元組,其中創(chuàng)建多個(gè)組合索引來(lái)改進(jìn)其查詢性能。例如,Oracle10gR2空間數(shù)據(jù)庫(kù)和Jana2,兩者都采用了典型的通用三元組存儲(chǔ)。相對(duì)于通用三元組存儲(chǔ)庫(kù),改進(jìn)的三元組存儲(chǔ)庫(kù)可以管理更富于表達(dá)的RDFS(RDFSchema)/OWL(Web本體語(yǔ)言)及其相應(yīng)的實(shí)例。類似于RDF,W3C建議RDFS和OWL支持本體表示。通過(guò)擴(kuò)展RDF,RDFS提供定義域/范圍的基本設(shè)施和類繼承的能力。OWL允許定義更豐富的屬性和關(guān)系,并相對(duì)于RDFS提供更多的約束。除了三元組表,改進(jìn)的三元組存儲(chǔ)還提供附加的方案(schema),例如"類/屬性表,,以及"someValueFrom/allValueFrom表",來(lái)保持富于表達(dá)的RDFS/OWL本體,相應(yīng)地,可將存儲(chǔ)在三元組表中的實(shí)例移植到RDFS/OWL本體中??紤]這些附加表以進(jìn)一步促進(jìn)RDF數(shù)據(jù)上的本體的推理。改進(jìn)的RDF三元組存儲(chǔ)的特定例子包括IBMWebify、IBMSOR以及MySQL上的Sesame。不同于上述這兩類三元組存儲(chǔ)庫(kù),水平/二元表存儲(chǔ)庫(kù)將RDF數(shù)據(jù)分成多個(gè)水平/二元表,其中謂詞可以看作為表名,而每個(gè)列分別是三元組的主語(yǔ)和賓語(yǔ)。代表性例子是DLDB-OWL和PosteGre上的Sesame。水平/二元表存儲(chǔ)庫(kù)的方案總是與存儲(chǔ)的本體模型一致。一旦本體變化,則方案必須相應(yīng)地改變。這是代價(jià)昂貴的。因而,關(guān)于RDF存儲(chǔ)庫(kù)的多數(shù)研究興趣已經(jīng)轉(zhuǎn)移到三元組存儲(chǔ)庫(kù)。本發(fā)明適合于通用三元組存儲(chǔ)庫(kù)和改進(jìn)三元組存儲(chǔ)庫(kù)兩者。當(dāng)前,在三元組存儲(chǔ)庫(kù)上已經(jīng)實(shí)現(xiàn)了許多優(yōu)化以改進(jìn)查詢性能。例如,為了節(jié)省空間開(kāi)銷,大多數(shù)三元組存儲(chǔ)庫(kù)在內(nèi)部給URI和文字值賦予唯一ID(唯一標(biāo)識(shí)符),并且將其單獨(dú)存儲(chǔ)在一個(gè)映射表中,其中將從三元組表中進(jìn)一步參考該映射表。為了提高在文字值上建立的索引有效性,某些三元組存儲(chǔ)庫(kù)將文字值映射表物理地劃分成為具有不同數(shù)據(jù)類型的多個(gè)表。為了使查詢范圍變窄,某些三元組存儲(chǔ)庫(kù)區(qū)分關(guān)系謂詞和數(shù)據(jù)類型謂詞,并且在不同的表中保存它們。此外,利用在IBMDB2中支持的例如多維集群(MDC:Multi-DimensionalClustering)表的某些特定數(shù)據(jù)庫(kù)特征,某些三元組存儲(chǔ)庫(kù)根據(jù)它們的謂詞將三元組本地化,這有助于對(duì)滿足查詢條件的三元組進(jìn)行快速定位和高速緩存。盡管在三元組存儲(chǔ)庫(kù)中已經(jīng)使用了許多優(yōu)化,但是查詢性能都不甚理想。為此,本領(lǐng)域特別需要一種能夠提高針對(duì)垂直存儲(chǔ)式數(shù)據(jù)庫(kù)的查詢性能的方案。
發(fā)明內(nèi)容本發(fā)明的目的在于提供一種用于優(yōu)化針對(duì)垂直存儲(chǔ)式數(shù)據(jù)庫(kù)的查詢的方法和設(shè)備,其可以針對(duì)垂直存儲(chǔ)式數(shù)據(jù)庫(kù)結(jié)構(gòu)的查詢進(jìn)行優(yōu)化,以實(shí)現(xiàn)更高的查詢效率。根據(jù)本發(fā)明的一方面,提供一種用于優(yōu)化針對(duì)垂直存儲(chǔ)式數(shù)據(jù)庫(kù)的查詢的方法。所述數(shù)據(jù)庫(kù)中的條目可以被分成若干分區(qū),每個(gè)分區(qū)具有表示所述分區(qū)中的條目的分區(qū)簽名。該方法可以包括將從用戶接收的第一查詢分解為多個(gè)第一子查詢;按照與產(chǎn)生所述分區(qū)簽名的方式相對(duì)應(yīng)的方式,為每個(gè)第一子查詢產(chǎn)生簽名;通過(guò)將每個(gè)第一子查詢的簽名分別與所有分區(qū)的分區(qū)簽名進(jìn)行比較,獲得與該第一子查詢匹配的所有分區(qū);基于所述匹配的分區(qū),重寫(xiě)由第一子查詢轉(zhuǎn)換而來(lái)的第二子查詢,以得到重寫(xiě)的第二子查詢;以及組合針對(duì)所有第一子查詢的重寫(xiě)的第二子查詢來(lái)形成第二查詢,以便利用該第二查詢執(zhí)行對(duì)所述數(shù)據(jù)庫(kù)的查詢。根據(jù)本發(fā)明的另一方面,提供一種用于處理垂直存儲(chǔ)式數(shù)據(jù)庫(kù)的方法。該方法可以包括將該數(shù)據(jù)庫(kù)中的所有條目分割成若干分區(qū),為每個(gè)分區(qū)賦予唯一標(biāo)識(shí)符,以及為每個(gè)分區(qū)生成簽名。根據(jù)本發(fā)明的另一方面,提供一種用于優(yōu)化針對(duì)垂直存儲(chǔ)式數(shù)據(jù)庫(kù)的查詢的設(shè)備。所述數(shù)據(jù)庫(kù)中的條目被分成若干分區(qū),每個(gè)分區(qū)具有表示所述分區(qū)中的條目的分區(qū)簽名。該設(shè)備可以包括分解裝置,用于將從用戶接收的第一查詢分解為多個(gè)第一子查詢;查詢簽名產(chǎn)生裝置,用于按照與產(chǎn)生所述分區(qū)簽名的方式相對(duì)應(yīng)的方式,為每個(gè)第一子查詢產(chǎn)生簽名;分區(qū)獲得裝置,用于通過(guò)將每個(gè)第一子查詢的簽名分別與所有分區(qū)的分區(qū)簽名進(jìn)行比較,獲得與該第一子查詢匹配的所有分區(qū);查詢重寫(xiě)裝置,用于基于所述匹配的分區(qū),重寫(xiě)由第一子查詢轉(zhuǎn)換而來(lái)的第二子查詢,以得到重寫(xiě)的第二子查詢;以及查詢組合裝置,用于組合針對(duì)所有第一子查詢的重寫(xiě)的第二子查詢來(lái)形成第二查詢,以便利用該第二查詢執(zhí)行對(duì)所述數(shù)據(jù)庫(kù)的查詢。根據(jù)本發(fā)明的另一方面,提供一種用于處理垂直存儲(chǔ)式數(shù)據(jù)庫(kù)的設(shè)備。該設(shè)備可以包括分割裝置,用于將該數(shù)據(jù)庫(kù)中的條目分成若干分區(qū);分配裝置,用于為每個(gè)分區(qū)分配唯一標(biāo)識(shí)符;以及分區(qū)簽名生成裝置,用于為每個(gè)分區(qū)生成簽名參考以下結(jié)合附圖的詳細(xì)說(shuō)明,本發(fā)明的特征、優(yōu)點(diǎn)以及其它方面將變得更加明顯,在附圖中圖1是現(xiàn)有技術(shù)的RDF三元組存儲(chǔ)表的示意圖2是現(xiàn)有技術(shù)的RDF三元組映射圖的示意圖3是根據(jù)本發(fā)明的對(duì)RDF三元組進(jìn)行圖劃分的示意圖4是根據(jù)本發(fā)明的RDF數(shù)據(jù)存儲(chǔ)表的示意圖5示出了^f吏用布隆過(guò)濾器(BloomFilter)方法創(chuàng)建簽名的例子;圖6示出了使用布隆過(guò)濾器方法測(cè)試成員資格的例子;圖7示出了使用相應(yīng)參數(shù)的假陽(yáng)性概率;圖8示出了根據(jù)URI的劃分來(lái)創(chuàng)建簽名的例子;圖9示出了根據(jù)本發(fā)明的用于處理垂直存儲(chǔ)式數(shù)據(jù)庫(kù)的設(shè)備的示意圖IO示出了根據(jù)本發(fā)明的用于處理垂直存儲(chǔ)式數(shù)據(jù)庫(kù)的方法的流程的示意圖11示出了根據(jù)本發(fā)明的用于優(yōu)化針對(duì)垂直存儲(chǔ)式數(shù)據(jù)庫(kù)的查詢的設(shè)備的示意圖12示出了根據(jù)本發(fā)明的用于優(yōu)化針對(duì)垂直存儲(chǔ)式數(shù)據(jù)庫(kù)的查詢的方法的流程的示意圖;以及圖13示出了其中可以應(yīng)用本發(fā)明的計(jì)算機(jī)系統(tǒng)的示意圖。具體實(shí)施例方式本發(fā)明的基本原理在于,對(duì)傳統(tǒng)的垂直存儲(chǔ)式數(shù)據(jù)庫(kù)進(jìn)行分區(qū),然后僅僅在相關(guān)的分區(qū)上執(zhí)行查詢,從而可以提高查詢效率。為了描述起見(jiàn),在以下本發(fā)明的實(shí)施方式的描述中,以RDF三元組存儲(chǔ)結(jié)構(gòu)作為垂直存儲(chǔ)式數(shù)據(jù)庫(kù)結(jié)構(gòu)的例子。然而,本領(lǐng)域技術(shù)人員應(yīng)該理解,本發(fā)明并不局限于RDF三元組存儲(chǔ)結(jié)構(gòu),本發(fā)明可適用于其他垂直存儲(chǔ)式數(shù)據(jù)庫(kù)結(jié)構(gòu),例如電子商務(wù)數(shù)據(jù)庫(kù)中所應(yīng)用的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)。另外,在以下的描述中,將SPARQL查詢作為從用戶接收的第一查詢的一個(gè)例子。應(yīng)當(dāng)理解,從用戶接收的第一查詢并不局限于SPARQL查詢,而可以是任何其他合適的查詢。數(shù)據(jù)準(zhǔn)備過(guò)程下面首先詳細(xì)描述本發(fā)明的數(shù)據(jù)準(zhǔn)備過(guò)程。根據(jù)本發(fā)明,首先將RDF存儲(chǔ)庫(kù)中的三元組劃分成為若干分區(qū),并且對(duì)各個(gè)分區(qū)創(chuàng)建簽名。在根據(jù)本發(fā)明的一個(gè)實(shí)施方式中,使用圖劃分技術(shù)來(lái)將RDF存儲(chǔ)庫(kù)中的三元組劃分成為若干分區(qū),其中劃分的原則是在分區(qū)內(nèi)連接是較密的,而在分區(qū)之間連接是較稀疏的,并且對(duì)跨越分區(qū)的連接分別在相應(yīng)的分區(qū)中進(jìn)行備份。圖劃分技術(shù)是用于將一張圖劃分為若干分區(qū)(子圖)的傳統(tǒng)技術(shù),其在并行計(jì)算和VLSI設(shè)計(jì)領(lǐng)域中經(jīng)常使用,在此對(duì)其不作贅述。目前,最常用的圖劃分技術(shù)例如是METIS圖劃分工具。應(yīng)該理解,除了METIS圖劃分工具之外,本發(fā)明也可以采用任何其他圖劃分工具。具體地,如圖3所示,可以首先將RDF存儲(chǔ)庫(kù)中的三元組映射成一張圖。RDF三元組主語(yǔ)可以-波表示為圖中的源節(jié)點(diǎn),RDF三元組賓語(yǔ)可以被表示為圖中的宿節(jié)點(diǎn),以及RDF謂詞可以被表示為從源節(jié)點(diǎn)到宿節(jié)點(diǎn)的有向連接。然后,利用例如METIS的常用圖劃分工具,對(duì)所形成的圖任意進(jìn)行劃分,以形成若干子圖,其中每個(gè)子圖對(duì)應(yīng)于一個(gè)分區(qū)。為了保證數(shù)據(jù)關(guān)系的完整性,針對(duì)跨越分區(qū)之間的連接,可以在每個(gè)相關(guān)分區(qū)內(nèi)制作與該連接對(duì)應(yīng)的三元組的副本。根據(jù)本發(fā)明的一個(gè)實(shí)施方式,可以對(duì)所形成的圖進(jìn)行劃分,使得分區(qū)內(nèi)的連接是較密,而分區(qū)之間的連接是較稀疏的。同時(shí),針對(duì)跨越分區(qū)之間的連接,可以在每個(gè)相關(guān)分區(qū)內(nèi)制作與該連接對(duì)應(yīng)的三元組的副本,以保持分區(qū)后數(shù)據(jù)關(guān)系的完整性。傳統(tǒng)地,RDF數(shù)據(jù)存儲(chǔ)在三元組表中,其中該三元組表包括其值為RDF三元組主語(yǔ)的RDF主語(yǔ)列、其值為RDF三元組謂詞的RDF謂詞列、以及其值為RDF三元組賓語(yǔ)的賓語(yǔ)列。在本發(fā)明中,為每個(gè)分區(qū)分配一個(gè)標(biāo)識(shí)該分區(qū)的唯一標(biāo)識(shí)符。為了保持分區(qū)的標(biāo)識(shí)符,進(jìn)一步在三元組表中添加一個(gè)新的列,即其值表示對(duì)應(yīng)的RDF三元組所在分區(qū)的唯一標(biāo)識(shí)符列。這樣,三元組表{主語(yǔ)、謂詞、賓語(yǔ)}變成{主語(yǔ)、謂詞、賓語(yǔ)、所在分區(qū)的標(biāo)識(shí)符}的四元形式。圖4示出根據(jù)本發(fā)明進(jìn)行分區(qū)后的RDF數(shù)據(jù)存儲(chǔ)表。進(jìn)一步,在本發(fā)明中,還針對(duì)各個(gè)分區(qū)創(chuàng)建簽名(signature)。簽名最初起源于文本檢索和對(duì)象檢索。其優(yōu)點(diǎn)是有助于通過(guò)過(guò)濾"指紋,,來(lái)極大地縮小搜索空間,并且在相對(duì)較小的數(shù)據(jù)集中執(zhí)行精確查詢。在本發(fā)明的一個(gè)實(shí)施方式中,使用布隆過(guò)濾器的經(jīng)典方法來(lái)為各個(gè)分區(qū)生成簽名。布隆過(guò)濾器方法可以用以針對(duì)對(duì)象集創(chuàng)建位矢量(BitVector),并且測(cè)試其成員資格。例如,當(dāng)用戶希望將x元素插入對(duì)應(yīng)于集合S的過(guò)濾器中時(shí),需要利用k個(gè)獨(dú)立的哈希函數(shù)來(lái)得到k個(gè)數(shù)字或者k項(xiàng),然后將位矢量中的相應(yīng)元素設(shè)置為1。圖5示出了^f吏用布隆過(guò)濾器(BloomFilter)方法創(chuàng)建簽名的例子,其中使用了4個(gè)哈希函數(shù)。類似地,當(dāng)用戶希望針對(duì)集合S內(nèi)部的元素y來(lái)測(cè)試成員資格時(shí),還應(yīng)利用相同的k個(gè)p合希函數(shù)來(lái)獲得k項(xiàng),然后測(cè)試所有k個(gè)相應(yīng)項(xiàng)在集合S的位矢量中是否都是1。如果是,則y可能是集合S的成員并且進(jìn)一步使用精確查詢來(lái)驗(yàn)證。圖6示出了使用布隆過(guò)濾器方法測(cè)試成員資格的例子,其中也使用了三個(gè)相同的哈希函數(shù)。布隆過(guò)濾器方法是創(chuàng)建簽名的有用方式,其中理論上存在假陽(yáng)性(falsepositives)。圖7示出了使用相應(yīng)參數(shù)的假陽(yáng)性概率。請(qǐng)注意k是使用的哈希函數(shù)的數(shù)目,n是在RDF數(shù)據(jù)中特定劃分的URI的數(shù)目,而m是位矢量的長(zhǎng)度。在實(shí)驗(yàn)中,選擇k-4以及m/n-5作為默認(rèn)參數(shù)。從圖7中可以看出,此時(shí)假陽(yáng)性概率為9.2%。為了確保哈希函數(shù)的獨(dú)立性,可以采用著名的密碼學(xué)消息摘要算法(MD5方法)來(lái)針對(duì)各個(gè)數(shù)據(jù)庫(kù)的每項(xiàng)中的URI生成哈希值。應(yīng)當(dāng)注意,本發(fā)明也可以使用其他算法來(lái)針對(duì)各個(gè)URI生成哈希值。圖8示出了根據(jù)URI的劃分來(lái)創(chuàng)建簽名的例子。在此例子中,使用了2個(gè)哈希函數(shù)將每個(gè)URI哈希轉(zhuǎn)換成為2項(xiàng)。接著,針對(duì)每個(gè)三元組,對(duì)位矢量執(zhí)行或(OR)操作,以得到每個(gè)三元組的簽名。同時(shí)進(jìn)一步來(lái)對(duì)分區(qū)內(nèi)所有三元組的簽名矢量進(jìn)行OR操作,以得到該分區(qū)的簽名。例如,在圖8的下面的表中的第一行表示主語(yǔ)"dc:me"的哈希值為從右向左第2和5位被置'T,的簽名矢量,謂詞"rdf:type"的哈希值為第6和8位被置'T,的簽名矢量,以及賓語(yǔ)"dc:persion,,的哈希值為第1和2位被置"1"的簽名矢量。然后,對(duì)三元組中每個(gè)元數(shù)據(jù)的簽名執(zhí)行OR操作,就得到了第一行的三元組的簽名矢量"10110011"。依次類推,可以得到該分區(qū)中所有三元組的簽名矢量。最后,對(duì)該分區(qū)中所有三元組的簽名矢量執(zhí)行OR操作,就得到了該分區(qū)的簽名值。應(yīng)該理解,本發(fā)明可以采用各種為分區(qū)產(chǎn)生簽名的機(jī)制,只要所產(chǎn)生的簽名能夠反映分區(qū)所包括的三元組即可。下面,結(jié)合圖9將詳細(xì)描述根據(jù)本發(fā)明的用于處理垂直存儲(chǔ)式數(shù)據(jù)庫(kù)的設(shè)備。如圖9所示,根據(jù)本發(fā)明的用于處理垂直存儲(chǔ)式數(shù)據(jù)庫(kù)的設(shè)備IO可以包括分割裝置101,用于將該數(shù)據(jù)庫(kù)中的條目分割成若干分區(qū);分配裝置102,用于為每個(gè)分區(qū)分配唯一標(biāo)識(shí)符;以及分區(qū)簽名生成裝置103,用于為每個(gè)分區(qū)生成簽名。下面結(jié)合圖IO的流程圖,對(duì)根據(jù)本發(fā)明的用于處理垂直存儲(chǔ)式數(shù)據(jù)庫(kù)11的設(shè)備10中的各個(gè)部件的操作進(jìn)行詳細(xì)描述。圖10描述了根據(jù)本發(fā)明的用于處理垂直存儲(chǔ)式數(shù)據(jù)庫(kù)的方法的流程。如圖IO所示,首先,在步驟S201中,分割裝置101可以將RDF數(shù)據(jù)庫(kù)中的所有條目分割成若干分區(qū)。具體地,分割裝置101將所述RDF存儲(chǔ)庫(kù)11中的所有條目映射為一張表示所有RDF三元組的圖,其中RDF三元組的主語(yǔ)可以被表示為圖中的源節(jié)點(diǎn),RDF三元組的賓語(yǔ)可以被表示為圖中的宿節(jié)點(diǎn),RDF三元組的謂詞可以被表示為從源節(jié)點(diǎn)到宿節(jié)點(diǎn)的有向連接。然后,分割裝置101采用如上所述的圖劃分方法來(lái)該圖分割成若干子圖,每個(gè)子圖對(duì)應(yīng)于一個(gè)分區(qū)。在本發(fā)明的一個(gè)實(shí)施方式中,該圖被劃分為若干子圖,使得子圖內(nèi)的連接是較密的,跨越子圖之間的連接是較稀疏的,以及其中對(duì)于跨越子圖之間的連接,在每一個(gè)相關(guān)子圖內(nèi)制作該連接的副本,以使得分割后的子圖能夠反映所述RDF存儲(chǔ)庫(kù)中的所有數(shù)據(jù)關(guān)系。然后,在步驟S202處,分配裝置102為每個(gè)分區(qū)賦予唯一標(biāo)識(shí)符,例如圖4中所示的分區(qū)標(biāo)識(shí)符1、2、3。接下來(lái),在步驟S203處,分區(qū)簽名生成裝置103按照如上所述的創(chuàng)建簽名的方法為每個(gè)分區(qū)生成簽名。這樣,就可以得到如圖8所示結(jié)構(gòu)的RDF存儲(chǔ)庫(kù)。該RDF存儲(chǔ)庫(kù)可以包含其值表示RDF主語(yǔ)的主語(yǔ)列、其值表示RDF謂詞的謂詞列、其值表示RDF賓語(yǔ)的賓語(yǔ)列、以及其值表示對(duì)應(yīng)的RDF三元組所在分區(qū)的唯一標(biāo)識(shí)符列。另外,可以得到每個(gè)三元組以及每個(gè)分區(qū)的簽名。根據(jù)本發(fā)明,當(dāng)有新的RDF三元組加入RDF存儲(chǔ)庫(kù)時(shí),可以得到新的三元組所在的分區(qū),并且為所在分區(qū)生成新的簽名。根據(jù)本發(fā)明,可以將分區(qū)標(biāo)識(shí)符及該分區(qū)的簽名值相關(guān)聯(lián)地存儲(chǔ)在一個(gè)映射表中。優(yōu)選地,該映射表可以置于內(nèi)存中,以提高查詢效率。在三元組表和相關(guān)簽名的位中通過(guò)添加、更新和刪除響應(yīng)的記錄,可以很容易地對(duì)數(shù)據(jù)庫(kù)進(jìn)行維護(hù)。例如,當(dāng)將三元組添加到RDF存儲(chǔ)庫(kù)之中時(shí),首先檢查三元組的主語(yǔ)和賓語(yǔ)定位在哪個(gè)分區(qū),并且由此將具有相應(yīng)劃分標(biāo)識(shí)的記錄序列插入三元組表之中。最后,通過(guò)將位設(shè)置為1來(lái)更新這些分區(qū)的簽名,所述位的定位由所插入三元組的URI的哈希函數(shù)進(jìn)行計(jì)算。查詢優(yōu)化過(guò)程下面描述根據(jù)本發(fā)明的數(shù)據(jù)庫(kù)查詢優(yōu)化過(guò)程。圖ll示出了根據(jù)本發(fā)明的用于優(yōu)化針對(duì)垂直存儲(chǔ)式數(shù)據(jù)庫(kù)11的查詢的設(shè)備12的示意圖。如圖11所示,根據(jù)本發(fā)明的用于優(yōu)化針對(duì)垂直存儲(chǔ)式數(shù)據(jù)庫(kù)11的查詢的設(shè)備12可以包括分解裝置131,用于將用戶接收的SPARQL查詢分解為多個(gè)子SPARQL查詢;查詢簽名產(chǎn)生裝置132,用于按照與上述產(chǎn)生分區(qū)簽名的方式相對(duì)應(yīng)的方式,為每個(gè)子SPARQL查詢產(chǎn)生簽名;分區(qū)獲得裝置133,用于通過(guò)將每個(gè)子SPARQL查詢的簽名分別與所有分區(qū)的簽名進(jìn)行比較,來(lái)獲得與該子SPARQL查詢匹配的所有分區(qū);查詢重寫(xiě)裝置134,用于基于匹配的分區(qū),重寫(xiě)由該子SPARQL查詢轉(zhuǎn)換而來(lái)的子SQL查詢,以得到重寫(xiě)后的子SQL查詢;以及查詢組合裝置135,用于組合針對(duì)所有子SPARQL查詢的重寫(xiě)后的子SQL查詢來(lái)形成重寫(xiě)后的SQL查詢,以便利用該重寫(xiě)后的SOL查詢執(zhí)行對(duì)數(shù)據(jù)庫(kù)11的查詢。下面結(jié)合圖12對(duì)根據(jù)本發(fā)明的用于優(yōu)化針對(duì)垂直存儲(chǔ)式數(shù)據(jù)庫(kù)的查詢的設(shè)備12中的各個(gè)部件的操作以詳細(xì)描述。在步驟S301處,分解裝置131將用戶接收的SPARQL查詢分解為多個(gè)子SPARQL查詢。具體地,將所述SPARQL查詢映射為查詢圖,并且枚舉所述查詢圖中的2可達(dá)子圖,其中每個(gè)2可達(dá)子圖對(duì)應(yīng)于一個(gè)子SPARQL查詢。這里,2可達(dá)圖是這樣的圖,其中任何頂點(diǎn)是由至多2個(gè)連接或者邊可達(dá)的。具體地,在分區(qū)簽名中,根據(jù)匹配的分區(qū)的數(shù)目,需要從查詢圖中遞歸地找到具有最高選擇性的2可達(dá)子圖,直到圖中所有查詢節(jié)點(diǎn)都被包含在各2可達(dá)子圖中為止。接下來(lái),在步驟S302處,判斷子查詢是否已經(jīng)被完全處理。如果所有的子查詢已經(jīng)被完全處理,則進(jìn)行到步驟S311。如果還有沒(méi)處理的子查詢,則進(jìn)行到步驟S303。在步驟S303處,查詢簽名產(chǎn)生裝置132為每個(gè)子SPARQL查詢產(chǎn)生簽名。在此,按照與產(chǎn)生所述分區(qū)簽名的方式相對(duì)應(yīng)的方式,為每個(gè)子SPARQL查詢產(chǎn)生簽名。例如,通過(guò)與產(chǎn)生分區(qū)的簽名相同的哈希函數(shù)來(lái)產(chǎn)生針對(duì)每個(gè)子SPARQL查詢的簽名。在步驟S304處,分區(qū)獲得裝置133通過(guò)將每個(gè)子SPARQL查詢的簽名分別與所有分區(qū)的簽名進(jìn)行比較,來(lái)獲得與該子SPARQL查詢匹配的所有分區(qū)。具體地,例如,當(dāng)在針對(duì)子SPARQL查詢產(chǎn)生的簽名向量中為1的位置上,分區(qū)的簽名向量中對(duì)應(yīng)位置也都置1時(shí),則該子SPARQL查詢與該分區(qū)相匹配。假設(shè),針對(duì)子SPARQL查詢產(chǎn)生的簽名向量為10010001,而圖8中所示的分區(qū)的簽名為10111011,由于子SPARQL查詢的簽名中的三個(gè)"1"的位置在上述分區(qū)的簽名中也對(duì)應(yīng)為"1",因此可以判斷該子SPARQL查詢與上述分區(qū)相匹配。在步驟S305處,判斷在步驟S304處是否得到與該子SPARQL查詢匹配的分區(qū)。如果在步驟S304處沒(méi)有得到與該第一子查詢匹配的分區(qū),則提前結(jié)束查詢處理。也就是,在本發(fā)明中,如果判斷沒(méi)有與該子SPARQL查詢對(duì)應(yīng)的分區(qū),則可以直接提早結(jié)束查詢,而不需要等到執(zhí)行查詢后才知道沒(méi)有與用戶查詢相匹配的數(shù)據(jù)。如果判斷在步驟S304處得到與該子SPARQL查詢匹配的分區(qū),則處理進(jìn)行到步驟S306。在步驟S306處,調(diào)用三元組存儲(chǔ)庫(kù)的SPARQL轉(zhuǎn)換器,將子SPARQL查詢轉(zhuǎn)換為子SOL查詢。然后處理前進(jìn)到步驟S307。在步驟S307處,判斷匹配的分區(qū)的數(shù)量是否小于預(yù)定數(shù),例如,小于總分區(qū)的1%。如果判斷匹配的分區(qū)的數(shù)量小于預(yù)定數(shù),則處理前進(jìn)到步驟S308。如果判斷匹配的分區(qū)的數(shù)量大于預(yù)定數(shù),則處理前進(jìn)到步驟S309。在步驟S308處,查詢重寫(xiě)裝置134重寫(xiě)由子SPARQL查詢轉(zhuǎn)換而來(lái)的子SOL查詢,以得到重寫(xiě)后的子SOL查詢。具體地,利用關(guān)于與該子查詢匹配的分區(qū)的附加限制來(lái)重寫(xiě)子SOL查詢,以形成重寫(xiě)后的子SOL查詢。例如,直接將它們寫(xiě)入在劃分標(biāo)識(shí)符上具有約束的where子句之中。然后處理返回到步驟S302,以對(duì)下一個(gè)子SPARQL查詢進(jìn)行處理。在步驟S309處,可以創(chuàng)建一個(gè)臨時(shí)表,用于存儲(chǔ)與該子SPARQL查詢相匹配的所有分區(qū)的唯一標(biāo)識(shí)符,然后,處理前進(jìn)到步驟S310。在步驟S310處,查詢重寫(xiě)裝置134可以利用與存儲(chǔ)有唯一標(biāo)識(shí)符的該臨時(shí)表相關(guān)的附加連接條件,以形成重寫(xiě)后的子SQL查詢。具體地,將包括匹配分區(qū)唯一標(biāo)識(shí)符的臨時(shí)表與該子查詢相連接(join),以形成重寫(xiě)后的子SQL查詢。然后,處理返回到步驟S302,以對(duì)下一個(gè)子SPARQL查詢進(jìn)行處理。連接操作(join)是本領(lǐng)域公知的操作,在此不作過(guò)多贅述。最后,在步驟S311處,查詢組合裝置135組合針對(duì)所有子SPARQL查詢的多個(gè)重寫(xiě)后的子SQL查詢,來(lái)形成重寫(xiě)后的SQL查詢,以便利用該重寫(xiě)后的SQL查詢執(zhí)行對(duì)數(shù)據(jù)庫(kù)11的查詢。下面是根據(jù)本發(fā)明的優(yōu)化過(guò)程的一個(gè)例子。例如,用戶發(fā)送如下的查詢<table>tableseeoriginaldocumentpage18</column></row><table>通常,使用傳統(tǒng)的RDF至SQL的轉(zhuǎn)換方法將該查詢將轉(zhuǎn)換成為以下SQL:_<table>tableseeoriginaldocumentpage18</column></row><table>通過(guò)本發(fā)明的優(yōu)化方法和設(shè)備,可以將其進(jìn)一步優(yōu)化成為以下SQL:_<table>tableseeoriginaldocumentpage18</column></row><table>上述代碼中下劃線部分代表優(yōu)化后增加的代碼。然后利用優(yōu)化的代碼對(duì)數(shù)據(jù)庫(kù)執(zhí)行查詢。與現(xiàn)有技術(shù)相比,由于本發(fā)明僅僅在與子查詢相匹配的分區(qū)進(jìn)行查找,所以可以提高查詢效率。另外,與現(xiàn)有技術(shù)相比,當(dāng)不存在與子查詢相匹配的分區(qū)時(shí),本發(fā)明可以提前結(jié)束查詢,而不需要在數(shù)據(jù)庫(kù)執(zhí)行查詢之后才知道沒(méi)有相匹配的查詢數(shù)據(jù)。因此,可以大幅度提高查詢效率。圖13示出了其中可以應(yīng)用本發(fā)明的計(jì)算機(jī)系統(tǒng)100的示意圖。參考圖13,計(jì)算機(jī)系統(tǒng)100是計(jì)算機(jī)系統(tǒng)的一個(gè)適當(dāng)?shù)膶?shí)現(xiàn),并且包括根據(jù)本發(fā)明的優(yōu)化設(shè)備。計(jì)算機(jī)系統(tǒng)100可以是IBMeServerSystemi計(jì)算機(jī)系統(tǒng)。但是,本領(lǐng)域的技術(shù)人員可以理解,本發(fā)明可以同樣地用于任意計(jì)算機(jī)系統(tǒng),無(wú)論計(jì)算機(jī)系統(tǒng)是復(fù)雜的多用戶計(jì)算機(jī)裝置、單用戶工作站、嵌入式控制系統(tǒng),還是或大型并行計(jì)算機(jī)系統(tǒng),如IBM開(kāi)發(fā)的BlueGene計(jì)算機(jī)系統(tǒng)。如圖13所示,計(jì)算機(jī)系統(tǒng)100包括一個(gè)或多個(gè)處理器110、主存儲(chǔ)器120、大型數(shù)據(jù)庫(kù)接口130、顯示器接口140以及多個(gè)網(wǎng)絡(luò)接口150A、150B和150N。這些系統(tǒng)組件通過(guò)使用系統(tǒng)總線160互連。大型數(shù)據(jù)庫(kù)接口130用于將大型數(shù)據(jù)庫(kù)155連接到計(jì)算機(jī)系統(tǒng)100。圖13中的數(shù)據(jù)庫(kù)對(duì)應(yīng)于圖11的數(shù)據(jù)庫(kù)11。主存儲(chǔ)器120優(yōu)選地包含數(shù)據(jù)121、操作系統(tǒng)122、和根據(jù)本發(fā)明的數(shù)據(jù)庫(kù)處理設(shè)備123和查詢優(yōu)化設(shè)備124。數(shù)據(jù)121代表任何作為計(jì)算機(jī)系統(tǒng)100中任何程序的輸入或輸出的數(shù)據(jù)。操作系統(tǒng)122可以是任何合合適的操作系統(tǒng)。數(shù)據(jù)庫(kù)處理設(shè)備123和查詢優(yōu)化設(shè)備124分別執(zhí)行圖10和圖12的操作流程。雖然數(shù)據(jù)121、操作系統(tǒng)122、數(shù)據(jù)庫(kù)處理設(shè)備123和查詢優(yōu)化設(shè)備124在圖中所示為位于主存儲(chǔ)器120中,本領(lǐng)域的普通技術(shù)人員將可以認(rèn)識(shí)到,這些項(xiàng)目并非必需地同時(shí)完全包含于主存儲(chǔ)器120中。處理器110可以由一個(gè)或多個(gè)微處理器和/或集成電路構(gòu)成。處理器IIO執(zhí)行存儲(chǔ)于主存儲(chǔ)器120中的程序指令。主存儲(chǔ)器120存儲(chǔ)處理器IIO可訪問(wèn)的程序和數(shù)據(jù)。當(dāng)計(jì)算機(jī)系統(tǒng)IOO啟動(dòng)時(shí),處理器110最初執(zhí)行構(gòu)成操作系統(tǒng)122的程序指令。盡管所示的計(jì)算機(jī)系統(tǒng)IOO只包括一個(gè)處理器和一個(gè)系統(tǒng)總線,本領(lǐng)域的普遍技術(shù)人員將可以理解,可以使用具有多個(gè)處理器和/或多個(gè)總線的計(jì)算機(jī)系統(tǒng)來(lái)實(shí)施。顯示器接口140用于直接地將一個(gè)或多個(gè)顯示器165連接到計(jì)算機(jī)系統(tǒng)IOO。這些顯示器165可以是非智能的(即啞的)終端或者完全可編程的工作站,其用于向系統(tǒng)管理員和用戶提供與計(jì)算機(jī)系統(tǒng)100通信的能力。然而,請(qǐng)注意,雖然提供顯示器接口140以支持與一個(gè)或多個(gè)顯示器165的通信,計(jì)算機(jī)系統(tǒng)并非必需地需要顯示器165,因?yàn)樗兴璧呐c用戶的交互以及其它處理可以通過(guò)一個(gè)或多個(gè)網(wǎng)絡(luò)接口實(shí)現(xiàn)。圖13中示為150A,150B,…,150N的網(wǎng)絡(luò)"l妻口用于通過(guò)獨(dú)立網(wǎng)絡(luò)(例如170A,170B,…,170N)將計(jì)算機(jī)系統(tǒng)IOO連接到其它計(jì)算機(jī)系統(tǒng)或工作站,在此示為節(jié)點(diǎn)175A,175B,…,175N)。網(wǎng)絡(luò)接口150A,150B,…,150N和網(wǎng)絡(luò)170A,170B,…,170N廣義地代表互連電子設(shè)備的任何適當(dāng)?shù)姆绞剑鵁o(wú)論所述網(wǎng)絡(luò)是否包括當(dāng)前模擬和/或數(shù)字技術(shù)或通過(guò)未來(lái)的某些聯(lián)網(wǎng)機(jī)制。另外,可使用很多不同網(wǎng)絡(luò)協(xié)議實(shí)現(xiàn)網(wǎng)絡(luò)。這些協(xié)議是專門的計(jì)算機(jī)程序,其允許計(jì)算機(jī)通過(guò)網(wǎng)絡(luò)進(jìn)行通信。TCP/IP(傳輸控制協(xié)議/網(wǎng)際協(xié)議)是適當(dāng)?shù)木W(wǎng)絡(luò)協(xié)議的一個(gè)例子。在此應(yīng)重點(diǎn)注意,上文描述是完全功能性的計(jì)算機(jī)系統(tǒng)環(huán)境下的情況,本領(lǐng)域技術(shù)人員應(yīng)該認(rèn)識(shí)到,也可以在供任何合適數(shù)據(jù)處理系統(tǒng)使用的信號(hào)承載介質(zhì)上所設(shè)置的計(jì)算機(jī)程序產(chǎn)品中體現(xiàn)本發(fā)明。這種信號(hào)承載介質(zhì)可以是傳輸介質(zhì)或用于機(jī)器可讀信息的可記錄介質(zhì),包括磁介質(zhì)、光介質(zhì)或其它合適介質(zhì)??捎涗浗橘|(zhì)的例子包括硬盤驅(qū)動(dòng)器中的磁盤或軟盤、用于光驅(qū)的光盤、磁帶,以及本領(lǐng)域技術(shù)人員所能想到的其它介質(zhì)。本領(lǐng)域技術(shù)人員應(yīng)該認(rèn)識(shí)到,具有合適編程裝置的任何通信終端都將能夠執(zhí)行如程序產(chǎn)品中體現(xiàn)的本發(fā)明方法的步驟。從上述描述應(yīng)該理解,在不脫離本發(fā)明精神的情況下,可以對(duì)本發(fā)明各實(shí)施方式進(jìn)行修改和變更。本說(shuō)明書(shū)中的描述僅僅是用于說(shuō)明性的,而不應(yīng)被認(rèn)為是限制性的。本發(fā)明的范圍僅受權(quán)利要求書(shū)的限制。權(quán)利要求1.一種用于優(yōu)化針對(duì)垂直存儲(chǔ)式數(shù)據(jù)庫(kù)的查詢的方法,其中所述數(shù)據(jù)庫(kù)中的條目被分成若干分區(qū),每個(gè)分區(qū)具有表示所述分區(qū)中的條目的分區(qū)簽名,該方法包括將從用戶接收的第一查詢分解為多個(gè)第一子查詢;按照與產(chǎn)生所述分區(qū)簽名的方式相對(duì)應(yīng)的方式,為每個(gè)第一子查詢產(chǎn)生簽名;通過(guò)將每個(gè)第一子查詢的簽名分別與所有分區(qū)的分區(qū)簽名進(jìn)行比較,獲得與該第一子查詢匹配的所有分區(qū);基于所述匹配的分區(qū),重寫(xiě)由第一子查詢轉(zhuǎn)換而來(lái)的第二子查詢,以得到重寫(xiě)的第二子查詢;以及組合針對(duì)所有第一子查詢的重寫(xiě)的第二子查詢來(lái)形成第二查詢,以便利用該第二查詢執(zhí)行對(duì)所述數(shù)據(jù)庫(kù)的查詢。2.根據(jù)權(quán)利要求1所述的方法,其中所述第一查詢和第一子查詢是SPARQL查詢,以及第二子查詢和第二查詢是SQL查詢。3.根據(jù)權(quán)利要求1所述的方法,其中所述數(shù)據(jù)庫(kù)是RDF存儲(chǔ)庫(kù),所述RDF存儲(chǔ)庫(kù)中的每個(gè)條目包含RDF三元組,該RDF存儲(chǔ)庫(kù)包含其值表示RDF三元組主語(yǔ)的主語(yǔ)列、其值表示RDF三元組謂詞的謂詞列以及其值表示RDF三元組賓語(yǔ)的賓語(yǔ)列,以及其中該RDF存儲(chǔ)庫(kù)還包含其值表示對(duì)應(yīng)的RDF三元組所在分區(qū)的唯一標(biāo)識(shí)符列。4.根據(jù)權(quán)利要求3所述的方法,其中所述RDF存儲(chǔ)庫(kù)中的所有條目被映射為一張表示所有RDF三元組的圖,RDF三元組主語(yǔ)被表示為圖中的源節(jié)點(diǎn),RDF三元組賓語(yǔ)被表示為圖中的宿節(jié)點(diǎn),RDF三元組謂詞被表示為從源節(jié)點(diǎn)到宿節(jié)點(diǎn)的有向連接,以及其中該圖被分成若干子圖,每個(gè)子圖對(duì)應(yīng)于一個(gè)分區(qū)。5.根據(jù)權(quán)利要求4所述的方法,其中子圖內(nèi)的連接是較密的,跨越子圖之間的連接是較稀疏的,以及其中對(duì)于跨越子圖之間的連接,在相關(guān)子圖的每一個(gè)子圖內(nèi)制作該連接的副本,以使得分割后的子圖能夠反映所述RDF存儲(chǔ)庫(kù)中的所有數(shù)據(jù)關(guān)系。6.根據(jù)權(quán)利要求1所述的方法,其中所述分區(qū)的簽名是通過(guò)利用哈希函數(shù)為分區(qū)中的每個(gè)條目生成簽名并且對(duì)每個(gè)條目的簽名進(jìn)行"或"操作得到的。7.根據(jù)權(quán)利要求1所述的方法,所述分解步驟進(jìn)一步包括將所述第一查詢映射為一個(gè)查詢圖,以及枚舉所述查詢圖中的2可達(dá)子圖,其中每個(gè)2可達(dá)子圖對(duì)應(yīng)于一個(gè)第一子查詢。8.根據(jù)權(quán)利要求1所述的方法,通過(guò)與產(chǎn)生分區(qū)的簽名相同的哈希函數(shù)來(lái)產(chǎn)生針對(duì)每個(gè)第一子查詢的簽名。9.根據(jù)權(quán)利要求6或8所述的方法,其中所述哈希函數(shù)為MD5哈希函數(shù)。10.根據(jù)權(quán)利要求9所述的方法,其中當(dāng)在針對(duì)第一子查詢產(chǎn)生的簽名中為1的位置在分區(qū)的簽名中也都被置1時(shí),則該第一子查詢與該分塊相匹配。11.根據(jù)權(quán)利要求1所述的方法,其中如果在所述獲得步驟沒(méi)有得到與該子第一查詢匹配的分區(qū),則提前結(jié)束查詢處理。12.根據(jù)權(quán)利要求1所述的方法,其中所述分區(qū)具有唯一標(biāo)識(shí)符,以及所述重寫(xiě)步驟進(jìn)一步包括創(chuàng)建一個(gè)臨時(shí)表,用于存儲(chǔ)與該第一子查詢相匹配的所有分區(qū)的唯一標(biāo)識(shí)符,以及利用與存儲(chǔ)有唯一標(biāo)識(shí)符的該臨時(shí)表相關(guān)的附加連接條件,來(lái)重寫(xiě)該第二子查詢。13.根據(jù)權(quán)利要求1所述的方法,其中所述分區(qū)具有唯一標(biāo)識(shí)符,以及其中,當(dāng)與該第一子查詢相匹配的分區(qū)的數(shù)量大于預(yù)定數(shù)值時(shí),所述重寫(xiě)步驟包括創(chuàng)建一個(gè)臨時(shí)表,用于存儲(chǔ)與該第一子查詢相匹配的所有分區(qū)的唯一標(biāo)識(shí)符,以及利用與存儲(chǔ)有唯一標(biāo)識(shí)符的該臨時(shí)表相關(guān)的附加連接條件,來(lái)重寫(xiě)該第二子查詢,當(dāng)與該第一子查詢相匹配的分區(qū)的數(shù)量小于預(yù)定數(shù)值時(shí),所述重寫(xiě)步驟包括利用關(guān)于與該子查詢匹配的分區(qū)的附加限制,來(lái)重寫(xiě)該第二子查詢。14.一種用于處理垂直存儲(chǔ)式數(shù)據(jù)庫(kù)的方法,該方法包括將該數(shù)據(jù)庫(kù)中的所有條目分割成若千分區(qū),為每個(gè)分區(qū)賦予唯一標(biāo)識(shí)符,以及為每個(gè)分區(qū)生成簽名。15.根據(jù)權(quán)利要求14所述的方法,其中所述數(shù)據(jù)庫(kù)是RDF存儲(chǔ)庫(kù),所述RDF存儲(chǔ)庫(kù)中的每個(gè)條目包含RDF三元組,該RDF存儲(chǔ)庫(kù)包含其值表示RDF三元組主語(yǔ)的主語(yǔ)列、其值表示RDF三元組謂詞的謂詞列以及其值表示RDF三元組賓語(yǔ)的賓語(yǔ)列,以及其中該RDF存儲(chǔ)庫(kù)還包含其值表示對(duì)應(yīng)的RDF三元組所在分區(qū)的唯一標(biāo)識(shí)符列。16.根據(jù)權(quán)利要求15所述的方法,其中所述分割步驟包括將所述RDF存儲(chǔ)庫(kù)中的所有條目映射為一張表示所有RDF三元組的圖,其中RDF三元組主語(yǔ)被表示為圖中的源節(jié)點(diǎn),RDF三元組賓語(yǔ)被表示為圖中的宿節(jié)點(diǎn),RDF三元組謂詞被表示為從源節(jié)點(diǎn)到宿節(jié)點(diǎn)的有向連接,以及將該圖分割成若干子圖,每個(gè)子圖對(duì)應(yīng)于一個(gè)分區(qū)。17.根據(jù)權(quán)利要求16所述的方法,其中子圖內(nèi)的連接是較密的,跨越子圖之間的連接是較稀疏的,以及其中對(duì)于跨越子圖之間的連接,在相關(guān)子圖的每一個(gè)內(nèi)制作該連接的副本,以使得分割后的子圖能夠反映所述RDF存儲(chǔ)庫(kù)中的所有數(shù)據(jù)關(guān)系。18.根據(jù)權(quán)利要求14所述的方法,其中所述分區(qū)的簽名是通過(guò)利用哈希函數(shù)為分區(qū)中的每個(gè)條目生成簽名并且對(duì)每個(gè)條目的簽名進(jìn)行"或"操作來(lái)得到的。19.根據(jù)權(quán)利要求18所述的方法,其中所述哈希函數(shù)為MD5哈希函數(shù)。20.—種用于優(yōu)化針對(duì)垂直存儲(chǔ)式數(shù)據(jù)庫(kù)的查詢的設(shè)備,其中所述數(shù)據(jù)庫(kù)中的條目被分成若干分區(qū),每個(gè)分區(qū)具有表示所述分區(qū)中的條目的分區(qū)簽名,該設(shè)備包括分解裝置,用于將從用戶接收的第一查詢分解為多個(gè)第一子查詢;查詢簽名產(chǎn)生裝置,用于按照與產(chǎn)生所述分區(qū)簽名的方式相對(duì)應(yīng)的方式,為每個(gè)第一子查詢產(chǎn)生簽名;分區(qū)獲得裝置,用于通過(guò)將每個(gè)第一子查詢的簽名分別與所有分區(qū)的分區(qū)簽名進(jìn)行比較,獲得與該第一子查詢匹配的所有分區(qū);查詢重寫(xiě)裝置,用于基于所述匹配的分區(qū),重寫(xiě)由第一子查詢轉(zhuǎn)換而來(lái)的第二子查詢,以得到重寫(xiě)的第二子查詢;以及查詢組合裝置,用于組合針對(duì)所有第一子查詢的重寫(xiě)的第二子查詢來(lái)形成第二查詢,以便利用該第二查詢執(zhí)行對(duì)所述數(shù)據(jù)庫(kù)的查詢。21.—種用于處理垂直存儲(chǔ)式數(shù)據(jù)庫(kù)的設(shè)備,該設(shè)備包括分割裝置,用于將該數(shù)據(jù)庫(kù)中的條目分成若干分區(qū);分配裝置,用于為每個(gè)分區(qū)分配唯一標(biāo)識(shí)符;以及分區(qū)簽名生成裝置,用于為每個(gè)分區(qū)生成簽名。全文摘要本發(fā)明公開(kāi)了一種用于優(yōu)化針對(duì)垂直存儲(chǔ)式數(shù)據(jù)庫(kù)的查詢的方法和設(shè)備。數(shù)據(jù)庫(kù)中的條目被分成若干分區(qū),每個(gè)分區(qū)具有表示所述分區(qū)中的條目的分區(qū)簽名。該方法包括將從用戶接收的第一查詢分解為多個(gè)第一子查詢;按照與產(chǎn)生所述分區(qū)簽名的方式相對(duì)應(yīng)的方式,為每個(gè)第一子查詢產(chǎn)生簽名;通過(guò)將每個(gè)第一子查詢的簽名分別與所有分區(qū)的分區(qū)簽名進(jìn)行比較,獲得與該第一子查詢匹配的所有分區(qū);基于所述匹配的分區(qū),重寫(xiě)由第一子查詢轉(zhuǎn)換而來(lái)的第二子查詢,以得到重寫(xiě)的第二子查詢;以及組合針對(duì)所有第一子查詢的重寫(xiě)的第二子查詢來(lái)形成第二查詢,以便利用該第二查詢執(zhí)行對(duì)所述數(shù)據(jù)庫(kù)的查詢。利用本發(fā)明,可以極大地提高數(shù)據(jù)庫(kù)的查詢效率。文檔編號(hào)G06F17/30GK101436192SQ200710192738公開(kāi)日2009年5月20日申請(qǐng)日期2007年11月16日優(yōu)先權(quán)日2007年11月16日發(fā)明者越潘,晨王,鶯閆,力馬申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司