專(zhuān)利名稱(chēng)::超無(wú)共享并行數(shù)據(jù)庫(kù)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及并行數(shù)據(jù)庫(kù)系統(tǒng),特別涉及無(wú)共享并行數(shù)據(jù)庫(kù)系統(tǒng)。技術(shù)背景利用無(wú)共享體系結(jié)構(gòu)設(shè)計(jì)的并行數(shù)據(jù)庫(kù)系統(tǒng)包括多個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)具有其自己的處理、存儲(chǔ)器和磁盤(pán)資源。在這些系統(tǒng)中,數(shù)據(jù)庫(kù)的表跨系統(tǒng)的各個(gè)節(jié)點(diǎn)分布。對(duì)于數(shù)據(jù)庫(kù)的查詢(xún)同時(shí)并行地運(yùn)行在多個(gè)節(jié)點(diǎn)上。無(wú)共享并行數(shù)據(jù)庫(kù)系統(tǒng)旨在提供線性擴(kuò)張,其中增加系統(tǒng)中節(jié)點(diǎn)的數(shù)量以提高性能并使得可以處理較大的數(shù)據(jù)集。但是,由于諸如查詢(xún)扭曲(queryskew)等問(wèn)題,傳統(tǒng)的設(shè)計(jì)不能提供線性擴(kuò)張。當(dāng)兩個(gè)相對(duì)于同一數(shù)據(jù)庫(kù)的且復(fù)雜程度相當(dāng)?shù)牟煌樵?xún)?cè)趫?zhí)行時(shí)所花費(fèi)的時(shí)間差異很大時(shí)就發(fā)生查詢(xún)扭曲。在傳統(tǒng)的無(wú)共享并行數(shù)據(jù)庫(kù)中,查詢(xún)扭曲的發(fā)生是由于在處理某些查詢(xún)時(shí)需要在節(jié)點(diǎn)之間傳輸大量數(shù)據(jù),而在處理其他査詢(xún)時(shí)只有很少的數(shù)據(jù)傳輸或沒(méi)有數(shù)據(jù)傳輸。這種數(shù)據(jù)傳輸降低了查詢(xún)處理的速度,并在傳統(tǒng)系統(tǒng)中造成了瓶頸。例如,在一個(gè)有四個(gè)節(jié)點(diǎn)的傳統(tǒng)系統(tǒng)中,數(shù)據(jù)庫(kù)表通常按每個(gè)表的四分之一等量分布在每個(gè)節(jié)點(diǎn)上。典型的數(shù)據(jù)庫(kù)查詢(xún)包括了一個(gè)或多個(gè)"聯(lián)結(jié)(join)",該聯(lián)結(jié)要對(duì)數(shù)據(jù)庫(kù)的表進(jìn)行掃描,査找一個(gè)表的主碼(primarykey)和另一個(gè)表的外碼(foreignkey)之間的匹配。為了處理帶有兩個(gè)數(shù)據(jù)表的聯(lián)結(jié),每個(gè)節(jié)點(diǎn)都必須將其所含一個(gè)數(shù)據(jù)表的一部分傳輸?shù)搅硗獾墓?jié)點(diǎn)。依據(jù)要聯(lián)結(jié)哪些數(shù)據(jù)表以及查詢(xún)中包含多少聯(lián)結(jié),這種數(shù)據(jù)傳輸會(huì)耗費(fèi)相當(dāng)長(zhǎng)的時(shí)間,因此延遲了査詢(xún)的處理。隨著數(shù)據(jù)集的不斷擴(kuò)大和査詢(xún)會(huì)話的增加,查詢(xún)扭曲會(huì)使系統(tǒng)的性能日益降低。由于這種問(wèn)題的本質(zhì)所限,在這種傳統(tǒng)的系統(tǒng)中增加額外的節(jié)點(diǎn)并不能緩解這種査詢(xún)處理的瓶頸。因此,需要一種經(jīng)過(guò)改進(jìn)可以減輕查詢(xún)扭曲的無(wú)共享并行數(shù)據(jù)庫(kù)系統(tǒng)。此外,該經(jīng)過(guò)改進(jìn)的系統(tǒng)應(yīng)減少系統(tǒng)操作所需要的管理開(kāi)支,并應(yīng)提供安全故障備援保護(hù)。
發(fā)明內(nèi)容本該發(fā)明通過(guò)提供一種超無(wú)共享并行數(shù)據(jù)庫(kù)系統(tǒng)來(lái)解決上述的傳統(tǒng)無(wú)共享并行數(shù)據(jù)庫(kù)系統(tǒng)的缺陷。本發(fā)明的超無(wú)共享并行數(shù)據(jù)庫(kù)系統(tǒng)對(duì)數(shù)據(jù)庫(kù)的表進(jìn)行分割并且使之分布于多個(gè)輔節(jié)點(diǎn)上,這樣數(shù)據(jù)庫(kù)的查詢(xún)可以并行地處理,而不象現(xiàn)有技術(shù)那樣在節(jié)點(diǎn)之間做大量的數(shù)據(jù)傳輸。這種數(shù)據(jù)庫(kù)依照與數(shù)據(jù)庫(kù)模式結(jié)構(gòu)相關(guān)的一組規(guī)則以及表的相對(duì)規(guī)模來(lái)分布,本發(fā)明通過(guò)減少網(wǎng)絡(luò)通信量及所造成的査詢(xún)扭曲在很大程度上提高了系統(tǒng)的性能。對(duì)于一個(gè)特定的數(shù)據(jù)庫(kù),事實(shí)表(facttable)與一個(gè)維度表(dimensiontable)都根據(jù)公共碼(commonkey)來(lái)分割,并跨多個(gè)輔節(jié)點(diǎn)分布。數(shù)據(jù)庫(kù)中小的維度表被復(fù)制到系統(tǒng)中所有的輔節(jié)點(diǎn)上。其余的維度表跨各輔節(jié)點(diǎn)分割,又被復(fù)制在所有的輔節(jié)點(diǎn)上。這樣可使數(shù)據(jù)庫(kù)系統(tǒng)在執(zhí)行大部分查詢(xún)時(shí)不會(huì)在各輔節(jié)點(diǎn)之間以及主、輔節(jié)點(diǎn)間產(chǎn)生大的網(wǎng)絡(luò)通信量。根據(jù)本發(fā)明的一方面,提供一種并行數(shù)據(jù)庫(kù)系統(tǒng),該系統(tǒng)包括主節(jié)點(diǎn)和多個(gè)輔節(jié)點(diǎn);包括了事實(shí)表和維度表的數(shù)據(jù)庫(kù)跨該數(shù)據(jù)庫(kù)系統(tǒng)的各輔節(jié)點(diǎn)分布。為了分布數(shù)據(jù)庫(kù)的表,事實(shí)表和第一維度表跨各輔節(jié)點(diǎn)分割。其余的維度表被復(fù)制到每一個(gè)輔節(jié)點(diǎn),并且如果它們具有最小長(zhǎng)度,它們也跨各輔節(jié)點(diǎn)分割。事實(shí)表和第一維度表優(yōu)選按公共碼來(lái)分割。其余的維度表可以有選擇地跨系統(tǒng)的各輔節(jié)點(diǎn)按行或按列分割。對(duì)數(shù)據(jù)庫(kù)的查詢(xún)可以被轉(zhuǎn)換成至少一個(gè)子?xùn)嗽?xún),該子?xùn)嗽?xún)可以由并行數(shù)據(jù)庫(kù)系統(tǒng)中的各輔節(jié)點(diǎn)執(zhí)行,而無(wú)需在輔節(jié)點(diǎn)之間的傳輸數(shù)據(jù)。依據(jù)本發(fā)明的另一個(gè)方面,該并行數(shù)據(jù)庫(kù)高速緩存該數(shù)據(jù)庫(kù)系統(tǒng)產(chǎn)生的查詢(xún)結(jié)果。主節(jié)點(diǎn)優(yōu)選包含一個(gè)査詢(xún)高速緩存用來(lái)高速緩存主節(jié)點(diǎn)和各輔節(jié)點(diǎn)產(chǎn)生的查詢(xún)結(jié)果,而每個(gè)輔節(jié)點(diǎn)都包含查詢(xún)高速緩存用以高速緩存各個(gè)輔節(jié)點(diǎn)的子查詢(xún)結(jié)果。根據(jù)本發(fā)明的另一方面,該數(shù)據(jù)庫(kù)中每個(gè)輔節(jié)點(diǎn)都分配有一個(gè)或多個(gè)故障備援伙伴。除了儲(chǔ)存有自己的表之外,每個(gè)故障備援伙伴都儲(chǔ)存有其故障備援伙伴的全部或部分?jǐn)?shù)據(jù)集。當(dāng)某個(gè)輔節(jié)點(diǎn)發(fā)生故障時(shí),本想在該故障輔節(jié)點(diǎn)執(zhí)行的子查詢(xún)由故障備援伙伴代替該故障輔節(jié)點(diǎn)來(lái)執(zhí)行。上述的本發(fā)明提供了一種高效、可靠的并行數(shù)據(jù)庫(kù)系統(tǒng)。在數(shù)據(jù)庫(kù)査詢(xún)處理中消除了查詢(xún)扭曲,因此可以使數(shù)據(jù)庫(kù)接近線性地?cái)U(kuò)張。在查詢(xún)所針對(duì)的表沒(méi)有發(fā)生此期間內(nèi)改變(interveningchanges)的情況下,兩級(jí)查詢(xún)高速緩存減少了重復(fù)查詢(xún)的處理量。最后,在各輔節(jié)點(diǎn)之間使用故障備援伙伴為在節(jié)點(diǎn)發(fā)生故障的情況下時(shí)可持續(xù)操作提供了成本有效的解決方法。以上為該發(fā)明的概述。它可以幫助快速理解本發(fā)明的本質(zhì)。通過(guò)參照以下關(guān)于本發(fā)明的詳細(xì)說(shuō)明和相關(guān)附圖可得到對(duì)本發(fā)明的優(yōu)選實(shí)施例的詳細(xì)和完整的理解。圖1示出無(wú)共享并行數(shù)據(jù)庫(kù)系統(tǒng)硬件體系結(jié)構(gòu)的示意圖。圖2示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的超無(wú)共享并行數(shù)據(jù)庫(kù)系統(tǒng)軟件體系結(jié)構(gòu)的示意圖。圖3示出用來(lái)生成輔模式的過(guò)程流程圖。圖4示出主模式例子的示意圖。圖5示出排序主模式表的過(guò)程流程圖。圖6示出根據(jù)該發(fā)明的一個(gè)實(shí)施例將數(shù)據(jù)庫(kù)的表批量加載到數(shù)據(jù)庫(kù)系統(tǒng)的過(guò)程流程圖。圖7示出將數(shù)據(jù)庫(kù)表加載于數(shù)據(jù)庫(kù)系統(tǒng)中輔節(jié)點(diǎn)的過(guò)程流程圖。圖8示出將預(yù)分類(lèi)數(shù)據(jù)直接批量加載于輔節(jié)點(diǎn)的過(guò)程流程圖。圖9示出當(dāng)接收到外部主機(jī)系統(tǒng)的新語(yǔ)句時(shí)所執(zhí)行過(guò)程的流程圖。圖IO示出分析和處理SQL語(yǔ)句的過(guò)程流程圖。圖11示出改變數(shù)據(jù)表的過(guò)程流程圖。圖12示出在數(shù)據(jù)庫(kù)表中更新/插入數(shù)據(jù)的過(guò)程流程圖。圖13示出查詢(xún)并行化過(guò)程的流程圖。圖14示出運(yùn)行單步査詢(xún)的過(guò)程流程圖。圖15示出在査詢(xún)中將査詢(xún)中的表名替換為輔模式中使用的表名的過(guò)程流程圖。圖16示出在輔節(jié)點(diǎn)執(zhí)行的用來(lái)運(yùn)行査詢(xún)的過(guò)程流程圖。圖17示出多步査詢(xún)過(guò)程的流程圖。圖18示出在主節(jié)點(diǎn)故障時(shí)運(yùn)行故障備援過(guò)程的流程圖。圖19示出在輔節(jié)點(diǎn)故障時(shí)運(yùn)行故障備援過(guò)程的流程圖。具體實(shí)施方式本發(fā)明是改進(jìn)的無(wú)共享并行數(shù)據(jù)庫(kù)系統(tǒng),稱(chēng)作超無(wú)共享并行數(shù)據(jù)庫(kù)系統(tǒng)。該超無(wú)共享并行數(shù)據(jù)庫(kù)系統(tǒng)的構(gòu)造同傳統(tǒng)的無(wú)共享并行數(shù)據(jù)庫(kù)系統(tǒng)類(lèi)似,使用至少一個(gè)主節(jié)點(diǎn)和多個(gè)輔節(jié)點(diǎn)。圖1示出該超無(wú)共享并行數(shù)據(jù)庫(kù)系一個(gè)實(shí)施例的硬件體系系統(tǒng)。圖1示出數(shù)據(jù)庫(kù)系統(tǒng)10的配置,其中包括了主節(jié)點(diǎn)11和輔節(jié)點(diǎn)12a至12n。為了使該圖簡(jiǎn)明,圖1只包含了一個(gè)主節(jié)點(diǎn)11。然而,如下面詳細(xì)描述的,本發(fā)明的其他實(shí)施例在數(shù)據(jù)庫(kù)系統(tǒng)10中包含多個(gè)主節(jié)點(diǎn)ll。主節(jié)點(diǎn)ll和輔節(jié)點(diǎn)12a至12n通過(guò)網(wǎng)絡(luò)13相互連接。網(wǎng)絡(luò)13優(yōu)選是用來(lái)提高系統(tǒng)IO可靠性的冗余網(wǎng)絡(luò)??商鎿Q地,在非關(guān)鍵的應(yīng)用中,可以使用非冗余網(wǎng)絡(luò)。網(wǎng)絡(luò)13可以使用本領(lǐng)域技術(shù)人員所熟知的任何網(wǎng)絡(luò)技術(shù)和協(xié)議來(lái)實(shí)現(xiàn)。網(wǎng)絡(luò)例子包括但不局限于以太網(wǎng)上的TCP/IP和Infiniband上的MPI(MessagePassingInterface,消息傳遞接口)。數(shù)據(jù)庫(kù)系統(tǒng)10的每個(gè)節(jié)點(diǎn)都具有其自己的處理、存儲(chǔ)器和磁盤(pán)資源。特別是主節(jié)點(diǎn)ll包含中央處理單元(CPU)14,隨機(jī)存取存儲(chǔ)器(RAM)15和磁盤(pán)16。輔節(jié)點(diǎn)12a至12n分別包括CPU17a至17n,RAM18a至18n以及磁盤(pán)19a至19n。CPU執(zhí)行存儲(chǔ)在每個(gè)磁盤(pán)中的軟件模塊的程序指令。CPU使用RAM作為工作空間來(lái)加載指令序列并儲(chǔ)存和操縱數(shù)據(jù)。盡管每個(gè)節(jié)點(diǎn)被描繪為擁有單個(gè)CPU和單個(gè)硬盤(pán),本領(lǐng)域的技術(shù)人員可以認(rèn)識(shí)到每個(gè)節(jié)點(diǎn)可包含多個(gè)CPU和多個(gè)磁盤(pán)來(lái)改進(jìn)系統(tǒng)的性能。例如,本發(fā)明的一個(gè)實(shí)施例使用具有雙處理器和12個(gè)硬盤(pán)的磁盤(pán)陣列的節(jié)點(diǎn)。除了基本的軟件組件,如操作系統(tǒng)和設(shè)備驅(qū)動(dòng)程序外,數(shù)據(jù)庫(kù)系統(tǒng)10的每個(gè)節(jié)點(diǎn)都要儲(chǔ)存并執(zhí)行用以執(zhí)行本發(fā)明的軟件模塊。圖2是示出數(shù)據(jù)庫(kù)系統(tǒng)10的軟件體系結(jié)構(gòu)的示意圖。主節(jié)點(diǎn)11包括流管理軟件20,查詢(xún)高速緩存軟件21,結(jié)構(gòu)化査詢(xún)語(yǔ)言(SQL)分析軟件22,輔模式生成軟件23,更新/插入軟件24,查詢(xún)并行化/最優(yōu)化軟件25,多步査詢(xún)執(zhí)行軟件26,結(jié)果分析軟件28,日期分割維護(hù)軟件29,批量加載軟件30,數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)31和系統(tǒng)管理軟件32。在使用多個(gè)主節(jié)點(diǎn)的實(shí)施例中,每個(gè)主節(jié)點(diǎn)配置有上述軟件模塊。每個(gè)輔節(jié)點(diǎn)分別包括DBMS(DBMS33a至33n)和輔管理軟件34a至34n。最后,管理控制臺(tái)(console)軟件35安裝在一個(gè)或多個(gè)主節(jié)點(diǎn)上,并可以通過(guò)與主節(jié)點(diǎn)連接的終端或通過(guò)運(yùn)行于獨(dú)立于數(shù)據(jù)庫(kù)系統(tǒng)10的計(jì)算機(jī)中的客戶(hù)端程序來(lái)訪問(wèn)。上述軟件模塊存儲(chǔ)于數(shù)據(jù)庫(kù)系統(tǒng)各節(jié)點(diǎn)的各磁盤(pán)上,并且由這些節(jié)點(diǎn)的各CPU執(zhí)行。在優(yōu)選實(shí)施例中,所有的節(jié)點(diǎn)都有相同的硬件結(jié)構(gòu),并且通過(guò)在特定節(jié)點(diǎn)上加載并執(zhí)行相應(yīng)的軟件模塊就可以充當(dāng)主節(jié)點(diǎn)或可充當(dāng)輔節(jié)點(diǎn)。根據(jù)該發(fā)明的一個(gè)實(shí)施例,各軟件模塊使用Java編程語(yǔ)言來(lái)實(shí)現(xiàn)。然而本領(lǐng)域技術(shù)人員可知道其他編程語(yǔ)言可用于實(shí)現(xiàn)所述各軟件系統(tǒng)中的一個(gè)或多個(gè)。在本發(fā)明的操作說(shuō)明中提供這些軟件模塊操作的細(xì)節(jié)描述。本發(fā)明較傳統(tǒng)的無(wú)共享并行數(shù)據(jù)庫(kù)設(shè)計(jì)的重大改進(jìn)在于它在運(yùn)行諸如聯(lián)結(jié)的數(shù)據(jù)庫(kù)査詢(xún)時(shí)在很大程度上減少了在節(jié)點(diǎn)之間傳輸數(shù)據(jù)的需求。這種改進(jìn)是通過(guò)使用一組規(guī)則來(lái)自動(dòng)地跨數(shù)據(jù)庫(kù)IO的各輔節(jié)點(diǎn)來(lái)分割、分布數(shù)據(jù)庫(kù)的表。根據(jù)所生成的輔模式來(lái)執(zhí)行數(shù)據(jù)庫(kù)表的分割和分布。外部主機(jī)系統(tǒng)給數(shù)據(jù)庫(kù)系統(tǒng)10發(fā)送定義主模式的元數(shù)據(jù)。流管理軟件20接收到包含有元數(shù)據(jù)的流,并將該元數(shù)據(jù)轉(zhuǎn)發(fā)到DBMS31。為了為所轉(zhuǎn)發(fā)的主模式生成輔模式,DBMS31將主模式的元數(shù)據(jù)轉(zhuǎn)發(fā)給輔模式生成軟件23。當(dāng)收到該主模式后,輔模式生成軟件23應(yīng)用一組規(guī)則來(lái)生成輔模式。輔模式定義了數(shù)據(jù)庫(kù)的表如何跨輔節(jié)點(diǎn)12a至12n來(lái)分割和分布。圖3的流程圖示出根據(jù)該發(fā)明的一個(gè)實(shí)施例由輔模式生成軟件23為生成輔模式而執(zhí)行的過(guò)程。圖3示出的過(guò)程中嵌入了用于生成輔模式的一組規(guī)則。在步驟S300,輔模式生成軟件23接收由連接到數(shù)據(jù)庫(kù)系統(tǒng)10的外部主機(jī)系統(tǒng)所提供的主模式。主模式可包括但不局限于星型模式、雪花模式及規(guī)范化模式。圖4示出雪花模式的例子,是由事務(wù)處理協(xié)會(huì)(TransactionProcessingCouncil)建立的用于數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)基準(zhǔn)例(benchmark)。該圖示包含了一個(gè)事實(shí)表(LINEITEM,訂單項(xiàng))和多個(gè)維度表(ORDERS(訂貨),CUSTOMER(客戶(hù)),PART(零件),PARTSUPP(零件供應(yīng)),SUPPLIER(供應(yīng)商),NATION(國(guó)家),REGION(地區(qū)))。事實(shí)表被定義成這樣的表,它與其他表沒(méi)有在其中它作為雙親的雙親子女關(guān)系。維度表被定義成這樣的表,它與另一個(gè)表具有在其中它作為雙親的雙親子女關(guān)系。雖然圖4示出的模式只包含一個(gè)事實(shí)表,但應(yīng)該理解,數(shù)據(jù)庫(kù)模式可包含多個(gè)事實(shí)表。在步驟S301中,排序該主模式的各表以準(zhǔn)備生成輔模式。圖5示出排序主模式表的過(guò)程。在步驟S500中,識(shí)別主模式內(nèi)的所有事實(shí)表。對(duì)于每一個(gè)識(shí)別的事實(shí)表,在步驟S501從該事實(shí)表向外探索由主模式定義的各表關(guān)系以識(shí)別第一維度表并且在步驟S502排序其他相關(guān)的維度表。根據(jù)它們的位置和與該事實(shí)表的關(guān)系來(lái)排序各維度表。參見(jiàn)圖4中示出的主模式,訂單項(xiàng)LINEITEM表被識(shí)別為該主模式的唯一事實(shí)表。從LINEITEM向外探索,識(shí)別ORDERS、PART、PARTSUPP及SUPPLIER表作為與LINEITEM表有直接關(guān)系的表。根據(jù)諸如長(zhǎng)度的特定判據(jù),來(lái)排序這些第一層的表。在該第一層內(nèi)第一個(gè)排序的表,如ORDER表,被確認(rèn)為第一維度表。根據(jù)表的關(guān)系和特定的次序判據(jù)來(lái)排序剩余的維度表。為了使用并行數(shù)據(jù)庫(kù)系統(tǒng)來(lái)有效處理査詢(xún),較大和較頻繁存取的表應(yīng)盡可能平均、高效地跨各輔節(jié)點(diǎn)分布。在這方面,本發(fā)明釆用了與用于傳統(tǒng)無(wú)共享數(shù)據(jù)庫(kù)系統(tǒng)相類(lèi)似的方法。本發(fā)明的特別之處在于它利用公共碼對(duì)事實(shí)表和第一維度表進(jìn)行哈希分割。通過(guò)利用公共碼對(duì)這些表進(jìn)行哈希分割,把給定的碼值映射到特定節(jié)點(diǎn)上,在不需要在輔節(jié)點(diǎn)之間傳輸數(shù)據(jù)的情況下,可處理聯(lián)結(jié)了這兩個(gè)表的査詢(xún)。在圖3示出的步驟S302中,對(duì)每個(gè)配對(duì)的事實(shí)表和第一維度表標(biāo)記出哈希碼。再次參見(jiàn)圖4示出的主模式,訂貨碼(ORDERKEY)被標(biāo)記為哈希碼,因?yàn)樗荗RDERS表(第一維度表)的主碼也是LINEITEM表(事實(shí)表)的外碼。一旦排序了數(shù)據(jù)庫(kù)表并且標(biāo)記了哈希碼,輔模式生成處理就準(zhǔn)備就緒來(lái)生成輔模式。檢驗(yàn)主模式中的每個(gè)表,在輔模式中生成一個(gè)或多個(gè)相應(yīng)的表。首先在步驟S303,判定當(dāng)前表是事實(shí)表還是第一維度表。事實(shí)表和第一維度表的每個(gè)跨各輔節(jié)點(diǎn)水平分割和分布。這樣,每個(gè)輔節(jié)點(diǎn)負(fù)責(zé)主模式中每個(gè)事實(shí)表和每個(gè)第一維度表的水平分割的一部分。在典型的數(shù)據(jù)庫(kù)中,表經(jīng)常包含有大量文本。該文本通常位于表中的備注字段中。本發(fā)明的可選特征是垂直分割這樣的表,將這些大的備注字段移出,并將它們置于該輔模式內(nèi)單獨(dú)的表中。為了確保這些行在兩個(gè)表內(nèi)的排列順序完全一樣,可通過(guò)使用行標(biāo)識(shí)符來(lái)査找特定行的備注字段。垂直分割選擇既可以設(shè)置成為默認(rèn)規(guī)則,又可以通過(guò)使用來(lái)自系統(tǒng)管理員的輸入來(lái)設(shè)置。在步驟S304判定這些表是否是垂直分割的。如果沒(méi)有設(shè)定垂直分割,那么在步驟S503在輔模式內(nèi)生成水平分割的表。如果設(shè)定了垂直分割,那么在步驟S306在輔模式內(nèi)生成一組垂直分割的表。這些垂直分割的表為水平分割表的垂直部分,并且整體上等同于在步驟S305生成的水平分割表。根據(jù)本發(fā)明的優(yōu)選實(shí)施例,把包括事實(shí)表和第一維度表在內(nèi)的每個(gè)表的完整副本存儲(chǔ)在每個(gè)輔節(jié)點(diǎn)上。在步驟S307,如果被檢査的表既不是事實(shí)表也不是第一維度表,則在輔模式中生成完整的表。通過(guò)把這些外部維度表的每個(gè)都放置在每個(gè)輔節(jié)點(diǎn)上,例如外部維度表與事實(shí)表或第一維度表之間聯(lián)結(jié)的査詢(xún),可以按并行方式執(zhí)行,而不需要在輔節(jié)點(diǎn)之間傳輸表數(shù)據(jù)。除了每個(gè)外部維度表的完整副本,本發(fā)明的優(yōu)選實(shí)施例還可選地跨各輔節(jié)點(diǎn)分割與分布外部維度表。通過(guò)在各輔節(jié)點(diǎn)包含外部維度表的完整副本和外部維度表的分割,可以?xún)?yōu)化査詢(xún)來(lái)引用輔節(jié)點(diǎn)上的表,這將產(chǎn)生最佳系統(tǒng)性能。然而,某些數(shù)據(jù)庫(kù)的表并不能產(chǎn)生足夠的性能增益來(lái)證實(shí)這種附加的處理和存儲(chǔ)空間的合理性。例如,跨各輔節(jié)點(diǎn)分割和分布較小的數(shù)據(jù)庫(kù)表就可能不會(huì)帶來(lái)顯著的性能改進(jìn)效果。相應(yīng)地,本發(fā)明的這個(gè)方面是一種選擇,可以設(shè)置成默認(rèn)規(guī)則,或根據(jù)系統(tǒng)管理員的輸入不分割某些外部維度表,如那些小于特定長(zhǎng)度的表。在步驟S308判定是否要分割當(dāng)前表。如果沒(méi)有設(shè)置分割選項(xiàng),或者該表滿(mǎn)足分割條件,在步驟S309判定是否設(shè)置了表的垂直分割。如果垂直分割未被設(shè)置,則在步驟S310生成輔模式中的水平分割的表。如果設(shè)置了垂直分割,則在步驟S311生成輔模式中的一組垂直分割表。這些垂直分割的表為水平分割表的垂直部分,并且作為整體等同于在步驟S301生成的水平分割表。一旦檢驗(yàn)了主模式中所有的表,并且在輔模式中建立了適當(dāng)?shù)谋?,所生成的輔模式被存儲(chǔ)在DBMS31中,并在步驟S312被發(fā)送至每個(gè)輔節(jié)點(diǎn)。主節(jié)點(diǎn)和輔節(jié)點(diǎn)使用輔模式用以將數(shù)據(jù)庫(kù)表加裝載和分割至數(shù)據(jù)庫(kù)系統(tǒng)中。用于特定數(shù)據(jù)庫(kù)的數(shù)據(jù)通過(guò)主節(jié)點(diǎn)之一或者專(zhuān)門(mén)的批量加載節(jié)點(diǎn)來(lái)批量加載至本發(fā)明的數(shù)據(jù)庫(kù)系統(tǒng)。圖6示出向數(shù)據(jù)庫(kù)系統(tǒng)中批量加載數(shù)據(jù)的過(guò)程。對(duì)于每個(gè)待加載的表,該過(guò)程包括在步驟S601通過(guò)在相關(guān)的表上設(shè)置適當(dāng)?shù)姆怄i來(lái)使輔節(jié)點(diǎn)準(zhǔn)備接受收數(shù)據(jù)并在步驟S602向所有的輔節(jié)點(diǎn)發(fā)送用于每個(gè)表的數(shù)據(jù)。優(yōu)選地,通過(guò)一個(gè)由節(jié)點(diǎn)間網(wǎng)絡(luò)提供的多路傳送裝置把數(shù)據(jù)傳送至各輔節(jié)點(diǎn)。在步驟S603,輔節(jié)點(diǎn)接收的表根據(jù)輔模式進(jìn)行分割。圖7示出在輔節(jié)點(diǎn)加載和分割表的過(guò)程流程圖。為了在特定的輔節(jié)點(diǎn)上加載和分割表,輔管理軟件34檢査表的每一行。在步驟S700判定表是否完全加載。在這種情況下,在步驟S701把每一行加載至相應(yīng)的表里。在步驟S702判定該表是否按分割的形式保持。如果是,在步驟S703檢查每一行,判定該行是否存在于該特定輔節(jié)點(diǎn)的分割的表中。注意,每一輔節(jié)點(diǎn)負(fù)責(zé)分割后的表的行的唯一的部分。通過(guò)使用任何一種已知的用于劃分和分布表行的算法來(lái)進(jìn)行分割。優(yōu)選地,各表跨各輔節(jié)點(diǎn)平均分割。根據(jù)用于分割表行的算法,判定特定輔節(jié)點(diǎn)是否對(duì)被檢查的行負(fù)責(zé)。本發(fā)明的可選特征是利用日期分割來(lái)分割與分布數(shù)據(jù)。利用日期分割,數(shù)據(jù)庫(kù)中的表根據(jù)數(shù)據(jù)內(nèi)相關(guān)的日期來(lái)分割與分布??梢允褂弥付ǖ囊?guī)則或通過(guò)系統(tǒng)管理員輸入控制來(lái)設(shè)置所述日期。例如,特定年、季度或者月份的日期可以存儲(chǔ)在不同的輔節(jié)點(diǎn)上。存儲(chǔ)這些經(jīng)日期分割的表并用來(lái)處理日期敏感的數(shù)據(jù)庫(kù)查詢(xún)。日常地維護(hù)日期分割的表以去除不在相關(guān)日期范圍內(nèi)的數(shù)據(jù)。優(yōu)選地,經(jīng)日期分割的表存儲(chǔ)在專(zhuān)門(mén)用于日期分割的輔節(jié)點(diǎn)上。然而,日期分割的表也可以與其他已分割和未分割的表一同存儲(chǔ)在標(biāo)準(zhǔn)的輔節(jié)點(diǎn)上。在步驟S704,判定特定輔節(jié)點(diǎn)是否是日期分割的輔節(jié)點(diǎn),如果是,則在步驟S705確定被檢驗(yàn)的行是否在輔節(jié)點(diǎn)所存儲(chǔ)的日期范圍內(nèi)。如果該輔節(jié)點(diǎn)是日期分割的輔節(jié)點(diǎn),并且該行屬于該相關(guān)日期范圍內(nèi),那么在步驟S706判定該行是否基于該輔模式來(lái)垂直分割。對(duì)于垂直分割的行,在步驟S707把該行寫(xiě)入相應(yīng)一組垂直分割表中。如果該行未被垂直分割,那么在步驟S708把該行寫(xiě)入相應(yīng)水平分割的表中。本發(fā)明的可選特征是使用若干已知分割算法中的任何一種在輔節(jié)點(diǎn)中使用進(jìn)一步的表分割。例如,可以通過(guò)哈希值或日期范圍來(lái)分割。本發(fā)明的數(shù)據(jù)庫(kù)系統(tǒng)還設(shè)計(jì)成提供故障備援保護(hù)。為了實(shí)現(xiàn)這種保護(hù),對(duì)輔節(jié)點(diǎn)分配故障備援伙伴。除了它自己的分割表,每一個(gè)輔節(jié)點(diǎn)還存儲(chǔ)有其故障備援伙伴的分割表,并且使用同樣的算法來(lái)更新相關(guān)的表,如上描述。使用這種故障備援系統(tǒng)提供了高級(jí)的可靠性,而不需要在每個(gè)節(jié)點(diǎn)上使用鏡象或基于均等的(parity-based)磁盤(pán)陣列。這樣可以減少實(shí)現(xiàn)成本,因?yàn)镽AIDLevelO磁盤(pán)系統(tǒng)可以用來(lái)提供更高的性能而不用增加與高級(jí)RAID系統(tǒng)相應(yīng)的成本。如果被檢驗(yàn)的行不在該輔節(jié)點(diǎn)的日期分割表的日期范圍內(nèi),或者如果該輔節(jié)點(diǎn)沒(méi)有儲(chǔ)存日期分割表,則在步驟S709中判定該行是否在該輔節(jié)點(diǎn)垂直分割。如果該行是垂直分割的,則在步驟S710將其寫(xiě)入相應(yīng)一組垂直分割表。在步驟S711判定該行是否為該輔節(jié)點(diǎn)中水平分割表的一部分。如果該行是水平分割表的一部分,在步驟S712把該行寫(xiě)入該表內(nèi)。一旦某特定表的所有行被添加到數(shù)據(jù)庫(kù),各種受影響的物理表的索引在步驟S713中更新。本發(fā)明的另一個(gè)性能增強(qiáng)特征是査詢(xún)高速緩存和臨時(shí)表高速緩存的使用。在每一個(gè)主節(jié)點(diǎn)上的DBMS31中和在每一個(gè)輔節(jié)點(diǎn)的DBMS33中存儲(chǔ)和維護(hù)查詢(xún)高速緩存。該查詢(xún)高速緩存用于存儲(chǔ)在特定節(jié)點(diǎn)上運(yùn)行的査詢(xún)的結(jié)果。在每個(gè)主節(jié)點(diǎn)內(nèi)的DBMS31中存儲(chǔ)并維護(hù)臨時(shí)表高速緩存以存儲(chǔ)由該主節(jié)點(diǎn)在執(zhí)行多步査詢(xún)時(shí)生成的臨時(shí)表。當(dāng)表加載到數(shù)據(jù)庫(kù)系統(tǒng)中時(shí),必須清空包含有根據(jù)這些表的以前版本所生成結(jié)果的査詢(xún)高速緩存和臨時(shí)表高速緩存。相應(yīng)地在步驟S604清洗(flush)相關(guān)査詢(xún)高速緩存和臨時(shí)表緩存,這些高速緩存的更詳細(xì)操作說(shuō)明在下面給出。前面描述了通過(guò)分類(lèi)和分割表把表批量加載至數(shù)據(jù)庫(kù)系統(tǒng)的各種處理。向數(shù)據(jù)庫(kù)系統(tǒng)加載數(shù)據(jù)的可選處理是利用外部主機(jī)來(lái)預(yù)分類(lèi)數(shù)據(jù),該外部主機(jī)可存取所生成的輔模式和影響數(shù)據(jù)分布的任何系統(tǒng)設(shè)置。經(jīng)預(yù)分類(lèi)的數(shù)據(jù)可以繞過(guò)主節(jié)點(diǎn)直接加載到輔節(jié)點(diǎn)中。圖8示出批量加載預(yù)分類(lèi)數(shù)據(jù)過(guò)程的流程圖。如圖8所示,檢査預(yù)分類(lèi)數(shù)據(jù)的每個(gè)表和分割,并加載到相應(yīng)的輔節(jié)點(diǎn)上。對(duì)于完整存儲(chǔ)在輔節(jié)點(diǎn)上的每個(gè)表,在步驟S800使所有輔節(jié)點(diǎn)都準(zhǔn)備好批量加載該表,并且在步驟S801把完整的表內(nèi)容發(fā)送至所有的輔節(jié)點(diǎn)。對(duì)于已分類(lèi)數(shù)據(jù)的每個(gè)分割,在步驟S802使輔節(jié)點(diǎn)的所分配的故障備援集準(zhǔn)備好加載該分割并且在步驟S803把該分割發(fā)送至該故障備援集。最后在步驟S804,清洗相應(yīng)的査詢(xún)高速緩存和臨時(shí)表緩存。根據(jù)本發(fā)明的一個(gè)實(shí)施例,外部主機(jī)系統(tǒng)用SQL語(yǔ)句同該數(shù)據(jù)庫(kù)系統(tǒng)通信。SQL語(yǔ)句通常被主機(jī)系統(tǒng)分離成流(stream)。每個(gè)流都對(duì)應(yīng)特定的用戶(hù)或應(yīng)用程序。使用流來(lái)組織SQL語(yǔ)句確保了語(yǔ)句由數(shù)據(jù)庫(kù)系統(tǒng)按正確的順序來(lái)執(zhí)行。數(shù)據(jù)庫(kù)系統(tǒng)所接收的SQL語(yǔ)句由每個(gè)主節(jié)點(diǎn)上的流管理軟件20來(lái)管理。圖9示出流管理軟件20當(dāng)從外部主機(jī)系統(tǒng)接收了新語(yǔ)句時(shí)所執(zhí)行過(guò)程的流程圖。如上所述,本發(fā)明的數(shù)據(jù)庫(kù)系統(tǒng)包含了一個(gè)或多個(gè)主節(jié)點(diǎn)。由外部主機(jī)系統(tǒng)發(fā)送的SQL語(yǔ)句被每個(gè)主節(jié)點(diǎn)接收并按圖9所示的方式來(lái)處理。特別地,對(duì)于每一個(gè)主節(jié)點(diǎn)流,管理軟件20在步驟S901判定所接受語(yǔ)句是一個(gè)新流的開(kāi)始還是數(shù)據(jù)庫(kù)系統(tǒng)已經(jīng)處理過(guò)的已存在流的一部分。如果該語(yǔ)句為新流的開(kāi)端,流管理軟件20在步驟S卯2判定該流是否應(yīng)由該特定主節(jié)點(diǎn)控制。在數(shù)據(jù)庫(kù)系統(tǒng)中,每個(gè)流都由一個(gè)主節(jié)點(diǎn)控制。每個(gè)主節(jié)點(diǎn)上的流管理軟件20與其他主節(jié)點(diǎn)通信來(lái)確定由哪個(gè)主節(jié)點(diǎn)來(lái)控制進(jìn)入的流??赏ㄟ^(guò)使用已知的負(fù)載平衡算法來(lái)確定流控制。如果在步驟S902中確定相應(yīng)的主節(jié)點(diǎn)來(lái)控制該流,流管理軟件20在步驟S903通知其他主節(jié)點(diǎn)該流由該主節(jié)點(diǎn)控制。當(dāng)每條語(yǔ)句被主節(jié)點(diǎn)接受,每個(gè)主節(jié)點(diǎn)上的査詢(xún)高速緩存軟件21在步驟S904中把該語(yǔ)句同該主節(jié)點(diǎn)的査詢(xún)高速緩存做比較。如上所述,每個(gè)主節(jié)點(diǎn)在査詢(xún)高速緩存中存儲(chǔ)有以前查詢(xún)的結(jié)果。在步驟S904中,把該語(yǔ)句同查詢(xún)高速緩存做比較來(lái)確定是否相同的語(yǔ)句已被該主節(jié)點(diǎn)處理過(guò)并且所針對(duì)的表沒(méi)有發(fā)生此期間內(nèi)的改變。如果以前處理過(guò)相同的語(yǔ)句,在步驟S905從査詢(xún)高速緩存中檢索出該語(yǔ)句的相應(yīng)結(jié)果集并傳送給外部主機(jī)系統(tǒng)或控制該査詢(xún)流的主節(jié)點(diǎn),并且主節(jié)點(diǎn)對(duì)該語(yǔ)句的處理終結(jié)。如果在査詢(xún)高速緩存中沒(méi)有找到該語(yǔ)句,則在步驟S906確定所接受的語(yǔ)句是否為由相關(guān)主節(jié)點(diǎn)控制的流的一部分。如果該主節(jié)點(diǎn)控制該特定的流,則在步驟S907由SQL分析軟件22處理該語(yǔ)句。如果該語(yǔ)句并不是由相關(guān)主節(jié)點(diǎn)控制的流的一部分,那么主節(jié)點(diǎn)對(duì)于該語(yǔ)句的處理結(jié)束,并且流管理軟件20等待接受下一個(gè)語(yǔ)句。圖10示出由SQL分析軟件22所執(zhí)行的為進(jìn)一步處理語(yǔ)句做準(zhǔn)備的過(guò)程的流程圖。為使每條語(yǔ)句準(zhǔn)備好進(jìn)一步處理,在步驟S1001對(duì)該語(yǔ)句分離句元(tokenize),并且在步驟S1002分析各句元。最后,在步驟S1003調(diào)用相關(guān)的子例程來(lái)處理經(jīng)分析的語(yǔ)句??赡艿淖永贪ǖ痪窒抻诟淖儽怼⒏?插入數(shù)據(jù)和査詢(xún)并行化。圖11示出由SQL分析軟件22調(diào)用的用以改變數(shù)據(jù)庫(kù)表的子例程所執(zhí)行的過(guò)程流程圖。數(shù)據(jù)庫(kù)表的改變主要由輔模式生成軟件23來(lái)執(zhí)行。該過(guò)程在步驟S1100中開(kāi)始,該步驟確定待改變的表是事實(shí)表還是第一維度表。若該表是事實(shí)表或第一維度表,在步驟S1101確定待改變的表是否是垂直分割的。若該表未被垂直分割,則在步驟S1102,根據(jù)存儲(chǔ)于主節(jié)點(diǎn)的DBMS31中的以及每個(gè)輔節(jié)點(diǎn)上元數(shù)據(jù)在相應(yīng)的水平分割表中進(jìn)行對(duì)該表的改變。如果待改變的表被垂直分割,則在步驟S1103根據(jù)存儲(chǔ)于主節(jié)點(diǎn)的DBMS31中的以及每個(gè)輔節(jié)點(diǎn)上元數(shù)據(jù)改變相應(yīng)一組垂直分割表。如果待改變的表不是事實(shí)表或第一維度表,則在步驟S1104,根據(jù)存儲(chǔ)于主節(jié)點(diǎn)的DBMS31中的以及每個(gè)輔節(jié)點(diǎn)上元數(shù)據(jù)改變相應(yīng)的表。在步驟S1105判定待改變的表是否在輔節(jié)點(diǎn)上被分割。如果該表被分割,那么在步驟S1106判定該表是否被垂直分割。如果該表不是被垂直分割,則在步驟S1107改變相應(yīng)水平分割表的元數(shù)據(jù)和實(shí)際的表內(nèi)容。如果該表是垂直分割的,則在步驟S1108改變相應(yīng)一組垂直分割表的元數(shù)據(jù)和實(shí)際表內(nèi)容。最后在步驟S1109,清洗依賴(lài)該被改變表的査詢(xún)高速緩存數(shù)據(jù)項(xiàng)和臨時(shí)表高速緩存數(shù)據(jù)項(xiàng)。圖12示出由SQL分析軟件22調(diào)用的用于更新數(shù)據(jù)庫(kù)或向數(shù)據(jù)庫(kù)中插入數(shù)據(jù)的更新/插入子例程所執(zhí)行的過(guò)程流程圖。對(duì)于每一個(gè)被更新或插入的行,在步驟S1200確定該行是否為該輔節(jié)點(diǎn)上只以分割的形式保持的表的一部分,例如事實(shí)表或第一維度表。如果該行所在的表并不是只以分割的形式保持,則在步驟S1201把該行寫(xiě)入該系統(tǒng)的每一個(gè)輔節(jié)點(diǎn)。如果該行是只以分割的形式保持的表的一部分,則在步驟S1202根據(jù)適當(dāng)?shù)墓4a和可選的相關(guān)日期分割該行,并在步驟S1203將其寫(xiě)入相關(guān)輔節(jié)點(diǎn)上分割的表中。在步驟S1204,更新數(shù)據(jù)庫(kù)中所有改變的表的索引。最后在步驟S1205,清洗所有依賴(lài)數(shù)據(jù)被更新/插入的表的査詢(xún)高速緩存和臨時(shí)表高速緩存的數(shù)據(jù)項(xiàng)。通過(guò)査詢(xún)并行化軟件25來(lái)處理并優(yōu)化査詢(xún)語(yǔ)句。圖13示出了查詢(xún)并行化過(guò)程的流程圖。在步驟S1301確定査詢(xún)是否査找由數(shù)據(jù)庫(kù)系統(tǒng)中任何日期分割集所覆蓋的特定日期范圍。如果該査詢(xún)尋找由日期分割所覆蓋的日期范圍,則在步驟S1302指定用于該特定日期范圍的輔節(jié)點(diǎn)的組以用于處理該査詢(xún)。如果該査詢(xún)并不査找特定的日期范圍,或者該日期范圍與所有日期分割集合中任何一個(gè)都不對(duì)應(yīng),在步驟S1301中指定所有輔節(jié)點(diǎn)用來(lái)處理該查詢(xún)。步驟S1304、S1305和S1306確定如何根據(jù)查詢(xún)結(jié)構(gòu)在輔節(jié)點(diǎn)上執(zhí)行查詢(xún)并使用本領(lǐng)域所熟知的技術(shù)。在步驟S1304中,必須單獨(dú)運(yùn)行的子查詢(xún)被分成兩個(gè)單獨(dú)的査詢(xún)。首先執(zhí)行該子?xùn)嗽?xún),并在主節(jié)點(diǎn)上收集中間結(jié)果,然后把中間結(jié)果連同該査詢(xún)的其余部分返回到輔節(jié)點(diǎn)作進(jìn)一步處理。在步驟S1305中,把外部聯(lián)結(jié)(outerjoin)分解成多個(gè)一起在輔節(jié)點(diǎn)和主節(jié)點(diǎn)上執(zhí)行的查詢(xún)以完成該査詢(xún)。最后在步驟S1306,査詢(xún)優(yōu)化程序?qū)Χ嗖胶蛦尾降膱?zhí)行策略的成本進(jìn)行評(píng)估,然后選擇成本最小的方案,同樣使用本領(lǐng)域人員所熟悉的技術(shù)。然后,該査詢(xún)被傳遞到用于單步査詢(xún)的步驟S1307,或傳遞到用于多步査詢(xún)的步驟S1308,之后,在步驟S1309把結(jié)果集返回主機(jī)。圖14示出運(yùn)行單步査詢(xún)的過(guò)程流程圖。從外部主機(jī)系統(tǒng)接收査詢(xún),使用主模式的表名來(lái)引用表。為了使用輔接點(diǎn)并行處理該査詢(xún),表名必須被相應(yīng)輔模式中的表名所代替。在替換的實(shí)施例中,主模式中使用的表可以在所生成的輔模式中使用,這樣單步査詢(xún)可以直接傳遞到輔節(jié)點(diǎn)。在步驟S1401,在查詢(xún)中引用的表名被輔模式中相應(yīng)的表名替代。圖15示出了替代在査詢(xún)中使用的表名的過(guò)程。在步驟S1500中,該查詢(xún)中的聯(lián)結(jié)和表從事實(shí)表向外進(jìn)行重新排序。在步驟S1501檢驗(yàn)經(jīng)排序的査詢(xún)以確定在該査詢(xún)中是否有待運(yùn)行的聯(lián)結(jié)。如果該査詢(xún)不包含聯(lián)結(jié),在步驟S1502確定該査詢(xún)中使用的表是否只以分割的形式保持在該輔節(jié)點(diǎn)。如果表完全保持在該輔節(jié)點(diǎn)上,不替換表名并且處理結(jié)束。如果該表只以分割的形式保持,在步驟S1503確定該表是否在輔模式中垂直分割。如果該表不是垂直分割的,則在步驟S1504用相應(yīng)水平分割表的表名替換所述表名。如果該表在輔模式之中被垂直分割,則在步驟S1505判定該査詢(xún)是否使用任何這樣的列,如被垂直分割移去的大型備注字段。如果查詢(xún)中沒(méi)有使用被移走的列,在步驟S1506用相應(yīng)垂直分割表的表名替換所述表名。如果在該查詢(xún)中使用被移去的列,該表名被相應(yīng)垂直分割表替換,并且在步驟S1507修改查詢(xún)以便從包含移走列的表中得到相應(yīng)的行。這可以利用使用本領(lǐng)域熟知的技術(shù)通過(guò)使用行標(biāo)識(shí)符來(lái)實(shí)現(xiàn)。如果在步驟S1501判定査詢(xún)包括聯(lián)結(jié),每個(gè)聯(lián)結(jié)依次被檢驗(yàn)。對(duì)當(dāng)前聯(lián)結(jié)中每一個(gè)表,在步驟S1508判定該表為事實(shí)表還是第一維度表。如果該表是事實(shí)表或第一維度表,在步驟S1509確定該表是否在輔模式中垂直分割。如果該表不是垂直分割的,在步驟S1510用相應(yīng)水平分割表的表名替換該表名。如果該表被垂直分割,在步驟S1511判定該査詢(xún)是否使用在垂直分割中移去的列。如果該査詢(xún)中沒(méi)有使用移出的列,在步驟S1512用相應(yīng)垂直分割表的表名替代該表名。另外,如果在査詢(xún)中使用任何移去的列,該表名被相應(yīng)的垂直分割表替換,并且在步驟S1513修改該查詢(xún)以便從包含有移出列的表中取得相應(yīng)行。以上目的通過(guò)使用本領(lǐng)域技術(shù)人員熟悉的技術(shù)通過(guò)行標(biāo)識(shí)符來(lái)達(dá)到。如果在步驟S1508判定該表不是事實(shí)表或第一維度表,則在步驟S1514判定已經(jīng)檢驗(yàn)的査詢(xún)中使用的任何表名是否已被相應(yīng)水平分割表的表名替代。如果該査詢(xún)中不包含水平分割表的名稱(chēng),過(guò)程進(jìn)至步驟S1509。按上述方式重復(fù)步驟S1509至S1513。如果表名被水平分割表表名替代,則在步驟S1515判定該表是否具有該水平分割表已使用的同樣的分割碼。如果該表有同樣的分割碼,該聯(lián)結(jié)在表的共處分割之間執(zhí)行,并且該過(guò)程進(jìn)至步驟S1509至S1513,如上所述方式來(lái)執(zhí)行。如果該表沒(méi)有相同的分割碼,不替換表名并且處理結(jié)束。回到圖14,一旦表名在步驟S1401中被替代,在步驟S1402中通過(guò)本領(lǐng)域技術(shù)人員熟知的技術(shù)為輔節(jié)點(diǎn)上使用的特定數(shù)據(jù)庫(kù)優(yōu)化該査詢(xún)。例如,可改變與1/0周期相關(guān)的CPU周期的成本設(shè)置,這樣可以更有效的地執(zhí)行査詢(xún)。然后,優(yōu)化的查詢(xún)?cè)诓襟ES1403中被傳送至輔節(jié)點(diǎn)。當(dāng)輔節(jié)點(diǎn)故障時(shí),查詢(xún)被發(fā)送至包括其他輔節(jié)點(diǎn)在內(nèi)的該故障輔節(jié)點(diǎn)的合適的故障備援伙伴,下面將詳細(xì)說(shuō)明。每個(gè)輔節(jié)點(diǎn)的輔管理軟件34接收并且處理來(lái)自該負(fù)責(zé)主節(jié)點(diǎn)的査詢(xún)。圖16示出當(dāng)新査詢(xún)被接收時(shí)由輔管理軟件執(zhí)行步驟的流程圖。注意在一些情況中,査詢(xún)可以在不需要輔管理軟件干預(yù)的情況下由輔節(jié)點(diǎn)上的DBMS來(lái)直接執(zhí)行。當(dāng)從主節(jié)點(diǎn)上接收到新的査詢(xún)時(shí),輔查詢(xún)軟件34在步驟S1600判定該查詢(xún)是否必須為在該輔節(jié)點(diǎn)使用的DBMS做轉(zhuǎn)換。本發(fā)明的系統(tǒng)設(shè)計(jì)不需要在系統(tǒng)輔節(jié)點(diǎn)級(jí)使用專(zhuān)門(mén)的DBMS。該特征降低了系統(tǒng)成本和系統(tǒng)實(shí)現(xiàn)的時(shí)間,因?yàn)榭梢栽谳o節(jié)點(diǎn)上使用現(xiàn)有的DBMS。如果需要轉(zhuǎn)換,在步驟S1601為特定的DBMS來(lái)轉(zhuǎn)換査詢(xún)。在步驟S1602判定是否需要執(zhí)行任何優(yōu)化,以便在特定DBMS中運(yùn)行該查詢(xún)。如果需要優(yōu)化,則在步驟S1603優(yōu)化該査詢(xún)。類(lèi)似于在主節(jié)點(diǎn)級(jí)執(zhí)行的處理,對(duì)照査詢(xún)高速緩存來(lái)檢查新查詢(xún)以確定該查詢(xún)是否已經(jīng)相對(duì)該數(shù)據(jù)庫(kù)運(yùn)行并且該查詢(xún)中引用的表沒(méi)有發(fā)生此期間內(nèi)的改變。輔管理軟件34為故障備援表和為分配給特定輔節(jié)點(diǎn)的本地表維護(hù)査詢(xún)高速緩存。某些DBMS產(chǎn)品包含自帶的查詢(xún)高速緩存。如果運(yùn)行在輔節(jié)點(diǎn)的DBMS維持査詢(xún)高速緩存,輔管理軟件34無(wú)需檢査或維持其自己的查詢(xún)高速緩存。與主節(jié)點(diǎn)級(jí)維持的査詢(xún)高速緩存一道,本發(fā)明提供了兩級(jí)查詢(xún)高速緩存,通過(guò)防止査詢(xún)過(guò)程中不必要的重復(fù)來(lái)提高系統(tǒng)的性能。在步驟S1604,對(duì)照査詢(xún)高速緩存比較所接收的査詢(xún)。如果在該査詢(xún)高速緩存中找到該査詢(xún),在步驟S1605從査詢(xún)高速緩存中檢出該結(jié)果集。如果在查詢(xún)高速緩存中沒(méi)有找到該査詢(xún),在步驟S1606把該查詢(xún)傳送至DBMS來(lái)運(yùn)行。一旦得到結(jié)果集,輔管理軟件34在步驟S1607判定在將結(jié)果集(一個(gè)或多個(gè))返回至主節(jié)點(diǎn)之前是否需要對(duì)結(jié)果集(一個(gè)或多個(gè))做后處理。若需要后處理,則在步驟S1608執(zhí)行后處理。最后,在步驟S1609把結(jié)果集(一個(gè)或多個(gè))返回發(fā)出該査詢(xún)的主節(jié)點(diǎn)。再次回到圖14,位于主節(jié)點(diǎn)上的結(jié)果分析軟件28從各個(gè)用來(lái)處理該査詢(xún)的輔節(jié)點(diǎn)接收結(jié)果集。在步驟S1404,結(jié)果集分析軟件28在所接受到的結(jié)果集上執(zhí)行后處理。后處理包括但不局限于把結(jié)果集組合成的單一的結(jié)果集,在該結(jié)果集內(nèi)組織各結(jié)果,將結(jié)果集格式化成與提交該査詢(xún)的外部主機(jī)系統(tǒng)相兼容的格式。圖17示出依據(jù)該發(fā)明的一個(gè)實(shí)施例中多步查詢(xún)處理的流程圖。在步驟S1701中,該査詢(xún)被分裂成兩個(gè)或更多個(gè)輔查詢(xún)。將這些査詢(xún)分裂成多個(gè)將在各輔節(jié)點(diǎn)上串行運(yùn)行的輔査詢(xún)消除了在輔節(jié)點(diǎn)之間傳輸數(shù)據(jù)以處理原始查詢(xún)的需求,并提高了運(yùn)行這些査詢(xún)的系統(tǒng)效率。多步査詢(xún)依賴(lài)運(yùn)行該査詢(xún)的主節(jié)點(diǎn)上臨時(shí)表的使用。這些臨時(shí)表存儲(chǔ)通過(guò)運(yùn)行各個(gè)輔查詢(xún)而產(chǎn)生的中間結(jié)果集。臨時(shí)表被用來(lái)積累來(lái)自每一輔査詢(xún)的結(jié)果集。另外,臨時(shí)表可被發(fā)送至輔節(jié)點(diǎn)來(lái)運(yùn)行后續(xù)的輔査詢(xún),該輔査詢(xún)?cè)谳o節(jié)點(diǎn)上聯(lián)結(jié)臨時(shí)表與本地表。與在數(shù)據(jù)庫(kù)系統(tǒng)中主節(jié)點(diǎn)和輔節(jié)點(diǎn)上使用的査詢(xún)高速緩存相似,每個(gè)主節(jié)點(diǎn)維持臨時(shí)表高速緩存,用來(lái)存儲(chǔ)臨時(shí)表的副本,這些副本是為由該主節(jié)點(diǎn)在該主節(jié)點(diǎn)的DBMS31中執(zhí)行的輔査詢(xún)而生成的。當(dāng)執(zhí)行輔査詢(xún)時(shí),在步驟S1702對(duì)照臨時(shí)表高速緩存檢査該輔査詢(xún)來(lái)判定該特定輔査詢(xún)是否已經(jīng)被運(yùn)行并且臨時(shí)表所依賴(lài)的下層表沒(méi)有此期間內(nèi)的改變。如果在臨時(shí)表高速緩存中沒(méi)有匹配,在步驟S1703建立對(duì)于該輔查詢(xún)的臨時(shí)表。然后在步驟S1704至S1707運(yùn)行輔査詢(xún)并處理結(jié)果。在這些步驟中執(zhí)行的動(dòng)作同圖14中步驟S1401至S1404所執(zhí)行的動(dòng)作相對(duì)應(yīng),因而不再贅述。一旦輔査詢(xún)被處理或者對(duì)輔查詢(xún)的匹配在臨時(shí)表高速緩存中發(fā)現(xiàn),主節(jié)點(diǎn)在步驟S1708判定是否還有其他剩余的輔査詢(xún)。如果還有另外的輔査詢(xún)待運(yùn)行,在步驟S1709判定后續(xù)的輔査詢(xún)是否需要臨時(shí)表來(lái)處理。如果在輔節(jié)點(diǎn)上要求臨時(shí)表,則在步驟S1710把臨時(shí)表發(fā)送至該輔節(jié)點(diǎn),并且該處理返回至步驟S1702。如果臨時(shí)表未被要求,該處理直接回到步驟S1702用于下一個(gè)輔査詢(xún)。如圖13所示,一旦從外部主機(jī)系統(tǒng)接收的査詢(xún)被執(zhí)行和處理,或作為單步査詢(xún)或作為多步査詢(xún),最終的結(jié)果集在步驟S1309返回外部主機(jī)系統(tǒng)。本發(fā)明的數(shù)據(jù)庫(kù)系統(tǒng)中每一主節(jié)點(diǎn)與系統(tǒng)管理軟件32具有接口以監(jiān)視數(shù)據(jù)庫(kù)系統(tǒng)中其他節(jié)點(diǎn)的狀態(tài)。適用的系統(tǒng)管理軟件包括IPMI(智能平臺(tái)管理接口)和英特爾的SystemManager。當(dāng)接收到主節(jié)點(diǎn)故障的通知,流管理軟件20向管理控制臺(tái)35發(fā)送系統(tǒng)狀態(tài)信息,指示主節(jié)點(diǎn)的故障。系統(tǒng)管理員使用管理控制臺(tái)35來(lái)追蹤數(shù)據(jù)庫(kù)系統(tǒng)的狀態(tài),并識(shí)別需要修復(fù)或替換的故障節(jié)點(diǎn),以此來(lái)維持系統(tǒng)性能。一旦管理控制臺(tái)35被告知主節(jié)點(diǎn)故障,流管理軟件20執(zhí)行主節(jié)點(diǎn)故障備援處理。圖18示出數(shù)據(jù)庫(kù)系統(tǒng)中主節(jié)點(diǎn)發(fā)生故障時(shí)由流管理軟件20執(zhí)行的故障備援處理的流程圖。對(duì)于由該故障主節(jié)點(diǎn)管理的每個(gè)流執(zhí)行圖18示出的處理。在步驟S1800中,主節(jié)點(diǎn)判定它是否應(yīng)為該故障主節(jié)點(diǎn)的特定流負(fù)責(zé)。根據(jù)本發(fā)明的一個(gè)實(shí)施例,這種判定是在數(shù)據(jù)庫(kù)系統(tǒng)中可工作主節(jié)點(diǎn)之間通過(guò)使用相同的負(fù)載平衡方法做出的,該方法用于處理數(shù)據(jù)庫(kù)系統(tǒng)接受的新流。然而本領(lǐng)域技術(shù)人員所知道的其他方法也可用來(lái)做這種判定。如果該主節(jié)點(diǎn)判定它對(duì)該特定流負(fù)責(zé),則該主節(jié)點(diǎn)在步驟S1801中通知其他主節(jié)點(diǎn)它正在控制該流。一旦主節(jié)點(diǎn)對(duì)流行使控制,來(lái)自該流的每個(gè)未完成語(yǔ)句由該主節(jié)點(diǎn)接管。在步驟S1802,通過(guò)使用眾所周知的事務(wù)管理技術(shù)來(lái)回滾未完成的語(yǔ)句。之后,在步驟S1803中重新執(zhí)行該語(yǔ)句。這樣,每個(gè)由故障主節(jié)點(diǎn)控制的流被可工作主節(jié)點(diǎn)接管,由此來(lái)保證數(shù)據(jù)庫(kù)系統(tǒng)的運(yùn)行。一旦故障主節(jié)點(diǎn)被恢復(fù)或替換,則它就可用于處理數(shù)據(jù)庫(kù)系統(tǒng)所接收的新流。除了監(jiān)視數(shù)據(jù)庫(kù)系統(tǒng)中其他主節(jié)點(diǎn)以外,系統(tǒng)管理軟件32還監(jiān)視系統(tǒng)中每一個(gè)輔節(jié)點(diǎn)。圖19示出數(shù)據(jù)庫(kù)系統(tǒng)中輔節(jié)點(diǎn)故障時(shí)所執(zhí)行處理的流程圖。在輔節(jié)點(diǎn)發(fā)生故障時(shí),在步驟S1900把該故障通知給流管理軟件20。流管理軟件20通過(guò)管理控制臺(tái)35通知系統(tǒng)管理員該節(jié)點(diǎn)故障。對(duì)每個(gè)涉及該故障節(jié)點(diǎn)的未完成事務(wù),流管理軟件20使用替換該故障輔節(jié)點(diǎn)的相應(yīng)故障備援伙伴(一個(gè)或多個(gè))在步驟S1901回滾該未完成事務(wù)并在步驟S1902重新執(zhí)行該事務(wù)。在故障的輔節(jié)點(diǎn)被恢復(fù)或替換的期間,主節(jié)點(diǎn)在正常工作的輔節(jié)點(diǎn)及相應(yīng)的故障備援伙伴輔節(jié)點(diǎn)上執(zhí)行査詢(xún)。這樣,數(shù)據(jù)庫(kù)系統(tǒng)的運(yùn)行在輔節(jié)點(diǎn)發(fā)生故障時(shí)也能得到保障。一旦該輔節(jié)點(diǎn)被恢復(fù)或替換,主節(jié)點(diǎn)回到正常査詢(xún)處理中。本發(fā)明的另外實(shí)施例包括了使用分層的主節(jié)點(diǎn)配置來(lái)管理大量輔節(jié)點(diǎn)。在這種配置中,由被劃分到多個(gè)層的主節(jié)點(diǎn)來(lái)執(zhí)行查詢(xún)以提高性能。除此之外,一些在輔節(jié)點(diǎn)級(jí)的執(zhí)行處理可被轉(zhuǎn)移到主節(jié)點(diǎn)級(jí)。其他的實(shí)施例包括使用用于數(shù)據(jù)庫(kù)系統(tǒng)中輔節(jié)點(diǎn)的共享存儲(chǔ)系統(tǒng)來(lái)代替上述直接連接的存儲(chǔ)裝置。故障備援?dāng)?shù)據(jù)可以存儲(chǔ)在共享的存儲(chǔ)裝置中,這樣使得任何可用輔節(jié)點(diǎn)可以為故障節(jié)點(diǎn)執(zhí)行故障備援任務(wù)。上述超無(wú)共享并行數(shù)據(jù)庫(kù)系統(tǒng)與傳統(tǒng)無(wú)共享并行數(shù)據(jù)庫(kù)系統(tǒng)相比有顯著優(yōu)點(diǎn)。首先,本發(fā)明的數(shù)據(jù)庫(kù)系統(tǒng)避免了查詢(xún)扭曲和對(duì)數(shù)據(jù)庫(kù)系統(tǒng)性能上的其他不利影響。其次,跨數(shù)據(jù)庫(kù)系統(tǒng)中各輔節(jié)點(diǎn)的分割與分布是自動(dòng)完成的。這可以提高系統(tǒng)性能,而不增加系統(tǒng)管理的復(fù)雜性。第三,用來(lái)緩存査詢(xún)結(jié)果的兩級(jí)高速緩存系統(tǒng)避免了多次處理相同查詢(xún)的不必要重復(fù)。最后,數(shù)據(jù)庫(kù)故障備援處理可在節(jié)點(diǎn)發(fā)生故障時(shí)維持系統(tǒng)操作。以上說(shuō)明旨在描述本發(fā)明的優(yōu)選實(shí)施例。然而以上敘述的例子并不用于限制本發(fā)明的范圍。本發(fā)明由權(quán)利要求書(shū)來(lái)闡明。應(yīng)該理解,在不背離本發(fā)明的精神和范圍的前提下,所說(shuō)明的例子還可以有各種改型。權(quán)利要求1.一種并行數(shù)據(jù)庫(kù)系統(tǒng)包括主節(jié)點(diǎn);多個(gè)輔節(jié)點(diǎn);用于跨所述多個(gè)輔節(jié)點(diǎn)分布數(shù)據(jù)庫(kù)的裝置,所述數(shù)據(jù)庫(kù)包括事實(shí)表和多個(gè)維度表,其中該事實(shí)表和第一維度表跨所述多個(gè)輔節(jié)點(diǎn)分割,其中該數(shù)據(jù)庫(kù)的所有其他維度表在所述多個(gè)輔節(jié)點(diǎn)中每一個(gè)上重復(fù),而且其中具有最小長(zhǎng)度的可達(dá)多個(gè)的其他維度表也跨所述多個(gè)輔節(jié)點(diǎn)分割。2.根據(jù)權(quán)利要求l所述的并行數(shù)據(jù)庫(kù)系統(tǒng),其中所述可達(dá)多個(gè)的其他維度表按行分割。3.根據(jù)權(quán)利要求l所述的并行數(shù)據(jù)庫(kù)系統(tǒng),其中所述可達(dá)多個(gè)的其他維度表按列分割。4.根據(jù)權(quán)利要求l所述的并行數(shù)據(jù)庫(kù)系統(tǒng),其中所述可達(dá)多個(gè)的其他維度表按列和行分割。5.根據(jù)權(quán)利要求l所述的并行數(shù)據(jù)庫(kù)系統(tǒng),其中所述事實(shí)表和第一維度表按行分割。6.根據(jù)權(quán)利要求5所述的并行數(shù)據(jù)庫(kù)系統(tǒng),其中所述事實(shí)表和第一維度表按公共碼做哈希分割。7.根據(jù)權(quán)利要求5所述的并行數(shù)據(jù)庫(kù)系統(tǒng),其中所述事實(shí)表和第一維度表按列分割。8.根據(jù)權(quán)利要求l所述的并行數(shù)據(jù)庫(kù)系統(tǒng),其中該數(shù)據(jù)庫(kù)的表跨所述多個(gè)輔節(jié)點(diǎn)按日期分割。9.根據(jù)權(quán)利要求l所述的并行數(shù)據(jù)庫(kù)系統(tǒng),其中所述分割裝置跨所述多個(gè)輔節(jié)點(diǎn)自動(dòng)分割和分布數(shù)據(jù)庫(kù)表。10.根據(jù)權(quán)利要求1所述的并行數(shù)據(jù)庫(kù)系統(tǒng),進(jìn)一步包括用于相對(duì)于該數(shù)據(jù)庫(kù)把査詢(xún)轉(zhuǎn)換成至少一個(gè)子?xùn)嗽?xún)的裝置,所述子?xùn)嗽?xún)可由所述并行數(shù)據(jù)庫(kù)執(zhí)行且不需要在所述輔節(jié)點(diǎn)之間傳輸數(shù)據(jù)。11.根據(jù)權(quán)利要求IO所述的并行數(shù)據(jù)庫(kù)系統(tǒng),進(jìn)一步包括用于高速緩存所述并行數(shù)據(jù)庫(kù)所產(chǎn)生的查詢(xún)結(jié)果的裝置。12.根據(jù)權(quán)利要求11所述的并行數(shù)據(jù)庫(kù)系統(tǒng),其中所述主節(jié)點(diǎn)包括用于高速緩存由所述主節(jié)點(diǎn)產(chǎn)生的查詢(xún)結(jié)果的裝置。13.根據(jù)權(quán)利要求12所述的并行數(shù)據(jù)庫(kù)系統(tǒng),其中所述多個(gè)輔節(jié)點(diǎn)的每個(gè)包括用于高速緩存由相應(yīng)輔節(jié)點(diǎn)產(chǎn)生的子查詢(xún)結(jié)果的裝置。14.根據(jù)權(quán)利要求1所述的并行數(shù)據(jù)庫(kù)系統(tǒng),其中對(duì)所述多個(gè)輔節(jié)點(diǎn)的每個(gè),存儲(chǔ)在相應(yīng)輔節(jié)點(diǎn)的數(shù)據(jù)集的副本也存儲(chǔ)在所述多個(gè)輔節(jié)點(diǎn)中被分配給該相應(yīng)輔節(jié)點(diǎn)作為故障備援伙伴的另外輔節(jié)點(diǎn)。15.根據(jù)權(quán)利要求14所述的并行數(shù)據(jù)庫(kù)系統(tǒng),其中需要由故障輔節(jié)點(diǎn)執(zhí)行的子?xùn)嗽?xún)由該故障輔節(jié)點(diǎn)的故障備援伙伴來(lái)執(zhí)行。16.—種用于在并行數(shù)據(jù)庫(kù)系統(tǒng)中管理數(shù)據(jù)庫(kù)的方法,該數(shù)據(jù)庫(kù)包括事實(shí)表和多個(gè)維度表,所述方法包括步驟識(shí)別該數(shù)據(jù)庫(kù)中的事實(shí)表和第一維度表;跨多個(gè)輔節(jié)點(diǎn)分割該事實(shí)表和該第一維度表;在該多個(gè)輔節(jié)點(diǎn)的每一個(gè)上重復(fù)其他維度表的每一個(gè),以及跨該多個(gè)輔節(jié)點(diǎn)分割具有最小長(zhǎng)度的可達(dá)多個(gè)的其他維度表。17.根據(jù)權(quán)利要求16所述的方法,其中所述可達(dá)多個(gè)的其他維度表按行來(lái)分割。18.根據(jù)權(quán)利要求16所述的方法,其中所述可達(dá)多個(gè)的其他維度表按列來(lái)分割。19.根據(jù)權(quán)利要求16所述的方法,其中所述可達(dá)多個(gè)的其他維度表按行和列來(lái)分割。20.根據(jù)權(quán)利要求16所述的方法,其中所述事實(shí)表和第一維度表按行分割。21.根據(jù)權(quán)利要求20所述的方法,其中所述事實(shí)表和第一維度表按公共碼做哈希分割。22.根據(jù)權(quán)利要求20所述的方法,其中所述事實(shí)表和第一維度表按列分割。23.根據(jù)權(quán)利要求16所述的方法,進(jìn)一步包括跨多個(gè)輔節(jié)點(diǎn)根據(jù)曰期分割數(shù)據(jù)庫(kù)表。24.根據(jù)權(quán)利要求16所述的方法,進(jìn)一步包括相對(duì)于該數(shù)據(jù)庫(kù)將查詢(xún)轉(zhuǎn)換成至少一個(gè)子?xùn)嗽?xún),該子查詢(xún)可由該并行數(shù)據(jù)庫(kù)系統(tǒng)執(zhí)行并且不需要在輔節(jié)點(diǎn)之間傳輸數(shù)據(jù)。25.根據(jù)權(quán)利要求24所述的方法,進(jìn)一步包括在主節(jié)點(diǎn)高速緩存査詢(xún)結(jié)果。26.根據(jù)權(quán)利要求25所述的方法,進(jìn)一步包括在相應(yīng)輔節(jié)點(diǎn)高速緩存所述至少一個(gè)子?xùn)嗽?xún)的結(jié)果。27.根據(jù)權(quán)利要求16所述的方法,進(jìn)一步包括把來(lái)自輔節(jié)點(diǎn)的數(shù)據(jù)集副本存儲(chǔ)在分配給該輔節(jié)點(diǎn)的故障備援伙伴上。28.根據(jù)權(quán)利要求27所述的方法,進(jìn)一步包括在故障輔節(jié)點(diǎn)的故障備援伙伴上執(zhí)行要由該故障輔節(jié)點(diǎn)執(zhí)行的子?xùn)嗽?xún)。29.存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上的計(jì)算機(jī)可執(zhí)行處理步驟,所述處理步驟用來(lái)執(zhí)行權(quán)利要求16至28中任何一項(xiàng)所述的方法。全文摘要一種超無(wú)共享并行數(shù)據(jù)庫(kù),包含至少一個(gè)主節(jié)點(diǎn)和多個(gè)輔節(jié)點(diǎn)。包含至少一個(gè)事實(shí)表和多個(gè)維度表的數(shù)據(jù)庫(kù)在數(shù)據(jù)庫(kù)系統(tǒng)中跨各輔節(jié)點(diǎn)分割與分布,這樣,可以在不需要在輔節(jié)點(diǎn)之間傳輸數(shù)據(jù)的情況下并行處理查詢(xún)。數(shù)據(jù)庫(kù)的事實(shí)表和第一維度表跨各輔節(jié)點(diǎn)分割。數(shù)據(jù)庫(kù)的其他維度表在每個(gè)輔節(jié)點(diǎn)上重復(fù),而且這些其他維度表中的至少一個(gè)跨各輔節(jié)點(diǎn)分布。文檔編號(hào)G06F17/00GK101120340SQ200580005494公開(kāi)日2008年2月6日申請(qǐng)日期2005年2月17日優(yōu)先權(quán)日2004年2月21日發(fā)明者斯圖亞特·弗羅斯特申請(qǐng)人:數(shù)據(jù)迅捷股份有限公司