新四季網

超無共享並行資料庫的製作方法

2023-06-08 21:43:11 2


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

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀