專利名稱:在附接的高性能并行計算機上執(zhí)行計算機密集型數(shù)據(jù)庫用戶定義的程序的制作方法
技術(shù)領域:
本發(fā)明總體上涉及數(shù)據(jù)庫處理的性能增強,尤其涉及用于通過在附接的高性能并 行計算機(HPC)系統(tǒng)上分配和執(zhí)行查詢工作流的計算密集型部分,來加速計算密集型數(shù)據(jù) 庫查詢的系統(tǒng)和方法。
背景技術(shù):
本發(fā)明涉及用于通過在附接的高性能并行計算機(HPC)系統(tǒng)上分配和執(zhí)行查詢 工作流的相關(guān)計算密集型部分,來加速數(shù)據(jù)庫查詢的系統(tǒng)和方法。
發(fā)明內(nèi)容
本發(fā)明是出于觀察到以下而得到動機傳統(tǒng)上已經(jīng)應用于事務處理、在線分析 和數(shù)據(jù)倉庫的商業(yè)數(shù)據(jù)庫,正日益應用于存儲、查詢和分析各種復雜數(shù)據(jù)類型(諸如文 本、圖像和多媒體)。商業(yè)數(shù)據(jù)庫還正日益應用于處理來自科學儀器的原始事件流,或 者應用于存儲來自高性能計算機仿真的未處理結(jié)果集合(參見J. Becla和D. L. Wong的 “Lessons Learned From Managing a Petabyte”,Conference OnInnovative Data Systems Research,Asilomar CA (2005))。對數(shù)據(jù)庫中存儲為復雜數(shù)據(jù)類型的這種原始數(shù)據(jù)的相關(guān)分析,經(jīng)常超出簡單的歸 檔和檢索,而包括某些計算密集型操作和數(shù)據(jù)轉(zhuǎn)換,其在關(guān)于這種數(shù)據(jù)的各種外部應用上 通常很有用,諸如高級語義查詢和搜索、基于內(nèi)容的索引、復雜數(shù)據(jù)建模、數(shù)據(jù)挖掘分析和 計算機輔助設計??蓪⑦@些計算密集型操作和數(shù)據(jù)轉(zhuǎn)換實現(xiàn)為數(shù)據(jù)庫擴展器內(nèi)的嵌入式程 序,該嵌入式程序包括通過這些復雜數(shù)據(jù)類型的用戶定義的存儲過程或者用戶定義的函數(shù) 的集合,這提供了原始的復雜數(shù)據(jù)類型到適用于復雜外部應用的表示的必要轉(zhuǎn)換。由此,這 些嵌入式數(shù)據(jù)庫擴展器(可以由本領域技術(shù)專家來實現(xiàn))通過利用熟悉的面向集合或者基 于SQL的語法和用于調(diào)用轉(zhuǎn)換的查詢接口,來向外部應用開發(fā)人員提供用于在他們的應用 中使用這些復雜數(shù)據(jù)類型的有關(guān)功能和轉(zhuǎn)換。此外,在向客戶端應用傳輸數(shù)據(jù)之前,通過借 助于提供原始數(shù)據(jù)更為壓縮的表示,或者通過對數(shù)據(jù)庫服務器自身上的原始數(shù)據(jù)進行實質(zhì) 上的預過濾,嵌入式用戶定義程序的使用通常減少將原始數(shù)據(jù)從數(shù)據(jù)庫服務器跨越網(wǎng)絡向 客戶端應用移動的開銷。最終,嵌入式用戶定義程序的使用通過向不需要拷貝或者與外部 應用共享的原始數(shù)據(jù)提供“類似對象”接口,從而更易于確保數(shù)據(jù)庫中原始數(shù)據(jù)的私有性、 完整性和一致性。然而,盡管上文給出了諸多優(yōu)勢,但是在數(shù)據(jù)庫服務器上執(zhí)行計算密集型用戶定 義的程序的相關(guān)聯(lián)的處理需求可能是非常大的,并且在常規(guī)數(shù)據(jù)庫性能基準中、或者在通 用數(shù)據(jù)庫服務器系統(tǒng)的硬件平臺的設計和尺寸中,當前很少解決此方面的問題。大型商業(yè)數(shù)據(jù)庫系統(tǒng)通常駐留在共享存儲器多處理器上,或者在網(wǎng)絡集群的計算 機平臺上。在這些平臺上,基礎并行性通常僅對協(xié)調(diào)執(zhí)行由查詢優(yōu)化器生成的并行查詢計劃的數(shù)據(jù)庫控制器軟件開放,并且與此同時,此基礎并行性通常不對任何應用軟件或者嵌 入式用戶定義的程序開放。在某些情況下,用戶定義函數(shù)的執(zhí)行可以隱含借助由查詢優(yōu)化 器生成的并行查詢計劃,以便利用多線程或者數(shù)據(jù)分區(qū)并行性來調(diào)度查詢執(zhí)行。然而,商業(yè) 數(shù)據(jù)庫經(jīng)常強加默認約束或者甚至明確不允許以此方式隱含并行執(zhí)行許多種用戶定義的 函數(shù)。例如,對于并行執(zhí)行的默認限制經(jīng)常應用于如下用戶定義的函數(shù)使用暫存器來存儲 重復的函數(shù)調(diào)用之間的信息的函數(shù)、執(zhí)行外部動作(諸如,文件輸入-輸出操作)的函數(shù)、 或者涉及非確定性執(zhí)行(即,其中函數(shù)對于相同的輸入可以返回不同的輸出值,例如隨機 數(shù)生成器)的函數(shù),或者用于在每個函數(shù)調(diào)用返回多行值的用戶定義的表函數(shù)(有關(guān)特定 商業(yè)數(shù)據(jù)庫中的這些默認限制的詳細描述,參見D. Chamberlin,“AComplete Guide to DB2 Universal Database,,,Morgan-Kaufman, SanFrancisco, 1998,第 6 章)。此夕卜,在隱含并行 執(zhí)行中保留“安全”序列語義的特定情況下,雖然程序員可以撤銷這些默認限制,但是即使 應用可能能夠以更高級別粒度來利用并行性,可以用于執(zhí)行這些用戶定義程序的并行性級 別也受到在數(shù)據(jù)庫平臺中預配置的參數(shù)的限制,這些參數(shù)指定共享存儲器平臺上線程的最 大數(shù)量、或者分布式集群平臺中數(shù)據(jù)分區(qū)或處理器的最大數(shù)量。此外,雖然這些數(shù)據(jù)庫配置 參數(shù)可以設定為由基礎硬件平臺支持的最大值,但即使在此范圍內(nèi),對于每個單獨數(shù)據(jù)庫 應用的最佳并行粒度仍將依賴于如下因素的復雜相互作用這些因素涉及在每個應用中并 行協(xié)調(diào)、同步、負載平衡和數(shù)據(jù)移動的級別,因此不太可能存在一種對于在數(shù)據(jù)庫服務器上 運行的所有應用均為最佳的全局設置。最終,在此情況下,即使對于單一的應用,超越現(xiàn)有 硬件并行性所施加的限制而提高數(shù)據(jù)庫性能,將需要對整個數(shù)據(jù)庫平臺進行全面且昂貴的 升級??傊虼爽F(xiàn)有商業(yè)數(shù)據(jù)庫系統(tǒng)對于查詢處理引擎和數(shù)據(jù)庫控制器僅開放基礎控 制或數(shù)據(jù)并行性。這些數(shù)據(jù)庫系統(tǒng)不提供用于以下目的的特定應用程序接口(API)用于 編寫通用、并行、用戶定義存儲的過程和用戶定義的函數(shù);或者在數(shù)據(jù)庫平臺的預配置限制 內(nèi)、或者擴展超出數(shù)據(jù)庫平臺預配置限制,用于基于不同情況對單獨應用的可擴展性能進 行調(diào)整。在較通用的數(shù)據(jù)庫服務器平臺內(nèi),基于使用專用硬件加速器,針對改進數(shù)據(jù) 庫查詢處理性能給出了許多提議。例如,K. C. Lee, Τ. M. Hickey和V. W. Mak的"VLSI Accelerators for Large DatabaseSystems,,,IEEE Micro, vol. 11, pp. 8-20 (1991)收集 來自數(shù)據(jù)庫查詢工作負荷的概要分析統(tǒng)計數(shù)據(jù)以標識最昂貴的操作,并且提議使用磁盤存 儲接口與CPU之間的數(shù)據(jù)路徑中的專用VLSI硬件過濾器,用于處理這些特定操作(其中 包括聯(lián)想搜索和聚合操作)。在 P. Faudemay 和 M. Mhiri 的 “An Associtive Accelerator for LargeDatabases,,(IEEE Micro, vol. 11, pp. 22—34)禾口 Μ· Abdelguerfi 禾口 k. K. Sood 的 "A Fine-Grain Architecture for Relational DatabaseAggregation Operations,,(IEEE Micro, vol. 11,pp. 35-43)中,也主張類似的思想。對于面向文本的數(shù)據(jù)庫應用,尤其是針對 字符串和模式匹配的硬件加速器的使用,在V. W. Mak,K. C. Lee和0. Frieder的“Exploiting Parallelism in Pattern Matching :An Information RetrievaIAppIication", ACM Transactions on Information Systems, Vol. 9, pp. 52-74,1991 中進行了描述。此方案 的更新進展是“主動盤”技術(shù),其利用正在逐漸取代在磁盤控制器接口處的定制設計電路 的通用微處理器(E.Riedel、C. Faloutsos、G. A. Gibson 和 D. Nagle 的 “Active DisksforLarge-scale Data Processing", IEEE Computer,Vol. 34,pp. 68-74,2001)。在此方案中, 某些查詢處理工作負荷(一般在數(shù)據(jù)庫服務器的主CPU上執(zhí)行)被分擔到在磁盤控制器接 口的這些單獨微處理器。此方案通常用于商業(yè)數(shù)據(jù)庫中使用的多磁盤系統(tǒng),在存儲接口處 探求更高的并行度,以便實現(xiàn)實質(zhì)的預過濾,并減少經(jīng)由用于許多數(shù)據(jù)庫查詢的存儲系統(tǒng) 互聯(lián)而向主CPU傳輸?shù)臄?shù)據(jù)量。對于可以用此方法進行分擔的工作負荷的性質(zhì)存在諸多限 制,尤其是由于單獨的磁盤控制器彼此之間無法通信,因而分擔任務局限于對其相應的數(shù) 據(jù)流進行簡單數(shù)據(jù)過濾和轉(zhuǎn)換操作??傊m然使用嵌入式硬件加速器對于簡單數(shù)據(jù)類型 的簡單謂詞處理可能非常有效,但是整體方案對于需要并行同步和通信的更復雜的操作而 言,仍然缺少靈活性和可編程性。上文描述促成了本發(fā)明的需求,由此可以在單獨且不同的HPC平臺上而不是在性 能受限的數(shù)據(jù)庫服務器上執(zhí)行計算密集型的并行用戶定義的程序。如早先提到的,此方案 的主要性能限制是在數(shù)據(jù)庫服務器與HPC平臺之間移動數(shù)據(jù)的開銷,即使對于極為長期的 計算,在HPC平臺上的計算性能增益可能顯著地抵消或者分攤這些數(shù)據(jù)傳輸?shù)拈_銷。關(guān)于 此方案的一個問題是,普通數(shù)據(jù)庫用戶可能需要某些專門技術(shù),以便在HPC平臺上執(zhí)行所 需程序。此外,此方法難以利用這些并行用戶定義的程序,來在SQL框架中構(gòu)造復雜的數(shù)據(jù) 庫查詢,因為這需要用戶使用特定且非自動的方案,來對外部HPC平臺上必要的計算密集 型操作執(zhí)行明確的調(diào)度。因此,本發(fā)明是基于將此外部HPC平臺用作對數(shù)據(jù)庫平臺的后端計算服務器(以 便在查詢執(zhí)行過程中,應用終端用戶實質(zhì)上與此HPC平臺的使用分離,這不同于先前段落 中所描述的前端配置)。盡管這不能消除在數(shù)據(jù)庫服務器與后端HPC平臺之間移動數(shù)據(jù)和 結(jié)果的性能損失,但是在此方案中可以使用各種數(shù)據(jù)高速緩存策略來確保與在由專業(yè)程序 員對數(shù)據(jù)移動和管理進行明確管理和優(yōu)化的等效前端客戶端實現(xiàn)中相同的性能級別。此 外,本發(fā)明中的數(shù)據(jù)移動是在包括數(shù)據(jù)庫服務器和后端并行計算機系統(tǒng)的嚴密控制的系統(tǒng) 環(huán)境中進行,因而使得易于引用數(shù)據(jù)庫邏輯來確保數(shù)據(jù)的完整性和一致性,或者易于使用 專用硬件和協(xié)議來改進數(shù)據(jù)庫服務器與后端HPC平臺之間的數(shù)據(jù)傳輸性能。本發(fā)明的“研 發(fā)者”所需的專業(yè)技術(shù)是用于對后端HPC系統(tǒng)上的計算服務進行編程和安裝,而一旦完成, 至于涉及客戶端應用或者終端用戶,整個查詢執(zhí)行繼而如同已在數(shù)據(jù)庫服務器本身上執(zhí)行 等效的嵌入式用戶定義程序一樣進行??傊男胁樵兯璧母鞣N步驟,包括所需的數(shù)據(jù)移 動、計算密集型操作的分擔和結(jié)果的返回,全都以自動方式進行,而不需要任何顯式的用戶 調(diào)度或者同步。因此,本發(fā)明所采用的方法不會影響能夠在一般的SQL查詢處理框架中構(gòu) 造復雜數(shù)據(jù)庫查詢的重要能力,而無關(guān)于是否使用分擔用戶定義的程序(將在下文描述的 本發(fā)明的特定實施方式中論述這種示例)。本發(fā)明的適用性可以應用于若干應用領域,并且特別是考慮生物信息學和生命科 學領域,下文所描述的本發(fā)明的特定實施方式便以該領域為主。在此所考慮的這種特定實施方式用在DNA和蛋白質(zhì)序列數(shù)據(jù)庫中用于序列相似 度和比對所使用的算法中。近年來,基因和蛋白質(zhì)序列的數(shù)據(jù)量急劇增長并且這種數(shù)據(jù)目 前使用各種格式存儲于各種數(shù)據(jù)存儲庫中,該數(shù)據(jù)存儲庫包括商業(yè)關(guān)系數(shù)據(jù)庫以及專用非 關(guān)系數(shù)據(jù)庫。生物信息學的基本任務是,將新的序列或者序列片斷與現(xiàn)有的序列存儲庫中 的序列子集進行比較,以便檢測序列的相似度或者同族關(guān)系。繼而,將所得匹配與嚴密匹配序列上的其他科學數(shù)據(jù)和元數(shù)據(jù)進行組合(諸如構(gòu)造和結(jié)構(gòu)細節(jié)、實驗性數(shù)據(jù)、功能性注 解等),以便為新序列的生物學或者基因?qū)W的進一步研究提供信息。由于此過程中的許多步 驟需要信息的集成和聚合,因此如果可以從SQL查詢接口訪問全部這種序列數(shù)據(jù)和元數(shù)據(jù) 以及序列匹配算法,則對此任務是極大的幫助。實現(xiàn)這一點的一個方案(通常稱作提取/轉(zhuǎn) 換/加載方案)是,將相關(guān)序列庫從原始數(shù)據(jù)格式導入至商業(yè)關(guān)系數(shù)據(jù)庫,這將需要為存儲 原始序列庫和元數(shù)據(jù)的每個專用數(shù)據(jù)格式定制加載器腳本。另一種備選方案,如L. M. Haas, P. Μ. Schwarzλ P. Kodali、Ε. KotlerΛ J. Ε. Rice 禾口 I C. Swope 的 “DiscoveryLink :A System for IntegratedAccess to Life Sciences Data Services”, IBM Systems Journal, Vol.40, pp. 489-511,2001中所描述,將序列數(shù)據(jù)保留在其原始數(shù)據(jù)存儲庫中,而是在主要 的前端數(shù)據(jù)庫服務器上提供此異質(zhì)數(shù)據(jù)源集合的抽象視圖或者聯(lián)合視圖,并且利用這種主 要前端數(shù)據(jù)庫上的嵌入式包裝函數(shù)集合,來提供要在主要數(shù)據(jù)庫與后端異質(zhì)數(shù)據(jù)源集合之 間交換的輸入查詢和查詢結(jié)果的必要映射。這兩種一般備選方法還可以用來使用數(shù)據(jù)庫服務器中的SQL查詢接口,以 調(diào)用各種生物學序列匹配算法。例如,這些算法可以實現(xiàn)為嵌入式用戶定義程序,如 S. M. Stephens、J. Y. Chen、Μ. G. Davidson、S. Thomas 禾口 B. Μ. Trute 的 “Oracle Database IOg :a platformfor BLAST search and Regular Expression pattern matching in lifesciences”,Nuclei Acids Research,Vol.33, Database issue,pp. D675-D679, 2005中對于特定的BLAST算法的描述。備選地,可以擴展上文描述的數(shù)據(jù)庫包裝方法,如 B. Eckman 禾口 D. Del Prete 的"Efficient Access to BLAST Using IBM DB2 Information Integrator”,IBM Healthcare and Life Science Publication,2004 所描述,用于在單獨 BLAST服務器上啟動必要的運算,還用于將結(jié)果映射回數(shù)據(jù)庫服務器上的表。這兩種方案在 實現(xiàn)細節(jié)上有實質(zhì)差別,但是二者實質(zhì)上提供了一些重要的能力,即,使用數(shù)據(jù)庫SQL查詢 接口來訪問和查詢一個或者多個包含生物學序列數(shù)據(jù)和元數(shù)據(jù)的數(shù)據(jù)源的能力,以及將諸 如BLAST的序列匹配算法整合至這些數(shù)據(jù)庫查詢的能力。這些能力給應用開發(fā)人員帶來了 用來生成復雜查詢的能力,諸如利用涉及序列元數(shù)據(jù)的謂詞,來過濾序列的初始搜索空間, 和通過將從匹配算法返回的最佳序列與在其他相關(guān)數(shù)據(jù)存儲庫中的關(guān)于這些序列的信息 相聯(lián)接,來對序列匹配結(jié)果進行后續(xù)處理。以這種方式,序列匹配算法的嵌入式實現(xiàn)提供了 如下應用能力可以自動、增強并且加速來自序列數(shù)據(jù)的新的科學發(fā)現(xiàn)過程。然而,上述兩 個方法中任一都還沒有以商業(yè)數(shù)據(jù)庫中的常規(guī)方法進行開發(fā),來支持這些序列匹配算法的 并行實現(xiàn)。值得考慮的是,在針對生物序列匹配和比對的并行算法開發(fā)的現(xiàn)有技術(shù)中,已經(jīng) 在從專用加速器到多線程對稱多處理系統(tǒng)、和到分布式存儲器計算機的范圍內(nèi)的各種HPC 平臺上實現(xiàn)了并行算法。從可擴展性的觀點上看,分布式存儲器平臺是最受關(guān)注的,并且在這種情況下,已 經(jīng)有兩種主要的方案用于在生物學序列匹配算法中探求并行性。第一種方案稱為數(shù)據(jù)庫分割,該方案在計算節(jié)點集合上對序列的目標庫進行 分區(qū)(優(yōu)選地,使用足夠的計算節(jié)點,以使得序列庫的每個單獨分區(qū)在該節(jié)點存儲器 內(nèi))。此方法的并行可擴展性最終受限于用于將該庫序列數(shù)據(jù)進行分布和在計算節(jié)點 的更大集合上收集結(jié)果的數(shù)據(jù)移動開銷。可以在如下文獻中找到用于實現(xiàn)此分布式存儲器并行方案所需的性能優(yōu)化的研究:A. Ε. Darling、L. Carey、W. Feng的“The Design, Implementation and Evaluation of mpiBLAST,,,Proceedings of the Clusterworld conference (2003);在H. Lin、X. Ma>P. Chandramohan、A. Geist禾口N. Samatova 的"Efficient data access forparallel blast", Proceedings of the International Parallel and DistributedProcessing Symposium, 2005中找到用于優(yōu)化并行磁盤1/0性能的擴展。第二種方案稱為查詢分割,該方案可以在存在一批類似但獨立的查詢時使用, 以便可以基于目標序列庫同時地并行執(zhí)行每個查詢。因此,此目標序列庫可以在分布 式存儲器平臺的多個節(jié)點上進行復制,如在R. C. Braun、K. T. Pedretti、T. L. Casavant、 Τ· E. Scheetz、C. L. Birkett 禾口 C.A.Roberts 的"Three Complementary Approaches toParallelization of Local BLAST Service on Workstation Clusters",(Proceedings of the 5th International Conference on Parallel ComputingTechnologies (PACT), Lecture Notes in Computer Science (LNCS),vol. 1662,pp. 271-282,1999)所描述。此方 法受限于單獨節(jié)點上的存儲器,該獨立節(jié)點可能不足以存儲整個目標序列庫,但是此特殊 困難可以通過使用數(shù)據(jù)庫和查詢分割的組合來克服,該組合是針對具有數(shù)千處理器的分布 式存儲器并行計算機的最有效并且可擴展的方案,如H. Rangwala, E. Lantz, R. Musselman, K. Pinnow、B. Smith 禾口 B. Wallenfelt 的"Massively Parallel BLAST for the Blue Gene/ V, HighAvailability and Performance Computing Workshop, Santa Fe NM(2005)中所 描述。據(jù)我們所知,BLAST (或者其他序列匹配算法)的并行實現(xiàn)沒有考慮從SQL查詢接 口使用這些算法以便支持數(shù)據(jù)集成和更大查詢工作流的處理的問題。如先前提到的,將這 些并行程序直接實現(xiàn)為商業(yè)關(guān)系數(shù)據(jù)庫中的嵌入式用戶定義程序也是困難的,這是由于這 些程序廣泛使用了消息傳遞和其他并行編程結(jié)構(gòu),而通常在數(shù)據(jù)庫編程和運行時環(huán)境中不 支持這些并行編程結(jié)構(gòu)。BLAST算法具有低計算復雜度(與將被匹配的兩個輸入序列字符串的大小大 致成線性),但是在生物信息學中存在其他搜索算法和匹配算法,這些算法具有輸入 的大小的二階或更高階復雜度,諸如Needleman-Wunsch算法、Smith-Waterman算法、 Maximum-Likelihood(最大似然)匹配和Phylogenetic匹配(即,它們的復雜度至少 是兩個輸入序列字符串大小的乘積的量級;參見W. R. Pearson的“ProteiMequence comparison and Protein evolution,,,Intelligent Systems inMolecular Biology, 2001)。這些算法的計算需求比BLAST算法要大得多,因此這些算法的嵌入式用戶定義程序 的性能將在數(shù)據(jù)庫服務器上嚴格受限,該數(shù)據(jù)庫服務器還同時處理其他工作負荷。然而,對 于這些算法,當相比于等效的BLAST實現(xiàn)時,從數(shù)據(jù)庫服務器到外部HPC平臺的數(shù)據(jù)傳輸開 銷將是整個執(zhí)行時間的較小部分。因此,本發(fā)明尤其適于這種情況,尤其是由于通過在后端 HPC平臺上優(yōu)化(諸如,內(nèi)存數(shù)據(jù)結(jié)構(gòu)和細粒度并行性)的使用而顯著減少執(zhí)行時間。可以成為本發(fā)明目標的另一生命科學應用集合是系統(tǒng)生物學領域,該領域?qū)Ω鞣N 生物網(wǎng)絡(諸如,代謝途徑、反應網(wǎng)絡、基因調(diào)控網(wǎng)絡)和蛋白質(zhì)藥物相互作用中的關(guān)系進 行研究。許多這些關(guān)系存儲為圖結(jié)構(gòu),并且可以基于這些圖提出與生物學有關(guān)的查詢,這些 圖可以作為復雜的用戶定義數(shù)據(jù)類型而存儲在數(shù)據(jù)庫中,或者備選地,作為較簡單的數(shù)據(jù) 類型(包括節(jié)點、邊和屬性信息)集合上的聚合,而自動實體化。在下文中描述了針對這些圖數(shù)據(jù)類型的系統(tǒng)生物圖數(shù)據(jù)庫擴展器,連同在這些數(shù)據(jù)類型上的相似度、搜索和推論的 圖操作的合集B. A. Eckman 禾口 P. G. Brown 的 “Graph data management formolecular and cell biology”,IBM Journal of Research and Development,vol. 50,pp.545-560,2006, 其中許多標準圖操作(像圖同構(gòu)、子圖匹配、連通分量、最短路徑和生成樹等)已經(jīng)作為用 戶定義的函數(shù)實現(xiàn)在此數(shù)據(jù)庫擴展器中。針對非常大的圖和計算量大的圖算法,本發(fā)明可 以通過將這些用戶定義的函數(shù)分擔到附接的HPC平臺來改進查詢性能。商業(yè)關(guān)系數(shù)據(jù)庫利用嵌入式用戶定義程序,正逐漸用于存儲、查詢和分析復雜的 數(shù)據(jù)類型,并且已經(jīng)認識到,在現(xiàn)有的商業(yè)數(shù)據(jù)庫平臺上執(zhí)行計算量大的用戶定義程序時, 存在許多性能抑制因素。因此,本發(fā)明涉及新穎的系統(tǒng)和方法,用于在分開并且獨立的并行高性能計算系 統(tǒng)上執(zhí)行多樣數(shù)據(jù)庫查詢中的一個或多個查詢的計算密集型部分。將此工作負荷從數(shù)據(jù)庫 服務器向附接的HPC平臺進行分配和遠程執(zhí)行,從而從提交數(shù)據(jù)庫查詢的應用終端用戶的 角度來看,整個執(zhí)行就好像此工作負荷是通過數(shù)據(jù)庫服務器自身上的等效用戶定義程序來 執(zhí)行的,但是由于遠程執(zhí)行而具有更好的并行性能。由此,概言之,本發(fā)明公開了一種計算 機系統(tǒng),包括商業(yè)數(shù)據(jù)庫平臺;附接的高性能計算(HPC)平臺;以及具有組件集合的系統(tǒng),用于將查詢工作負荷的計算密集型部分和相應目標數(shù)據(jù) 表從數(shù)據(jù)庫平臺分配到附接的HPC平臺,在HPC平臺上執(zhí)行此工作負荷,以及將這些結(jié)果返 回至數(shù)據(jù)庫系統(tǒng),其中這些結(jié)果被合并至原始用戶查詢的最終結(jié)果集合。數(shù)據(jù)庫和HPC平臺是具有常規(guī)系統(tǒng)和軟件棧的標準“現(xiàn)成”產(chǎn)品,在本發(fā)明中通過 框架進行集成以用于查詢分配、遠程執(zhí)行和結(jié)果收集。此框架還提供了“快捷方式”功能,用于直接經(jīng)由web服務接口來調(diào)用HPC平臺上 查詢執(zhí)行的計算密集型部分。已經(jīng)認識到可能存在如下需求,在測試和開發(fā)期間以及在某 些基于web服務的應用中,需要直接使用此web服務功能以用于對數(shù)據(jù)庫容納數(shù)據(jù)發(fā)起基 于HPC的應用,而不必明確地通過數(shù)據(jù)庫查詢接口進行。然而,此web服務調(diào)用接口無法提 供數(shù)據(jù)庫服務器上SQL查詢接口的優(yōu)勢,該SQL查詢接口可以用于復雜的查詢處理,其中遠 程執(zhí)行的函數(shù)可作為某些數(shù)據(jù)庫查詢工作流中的中間步驟。通過參考附圖,可以對本發(fā)明關(guān)于其結(jié)構(gòu)和操作的細節(jié)得到最好的理解,其中相 似的參考標號表示相似的部分,在附圖中
圖1示意性示出了提出的發(fā)明,其中客戶端應用發(fā)出一個或多個SQL查詢,在附接 的高性能并行計算機(HPC)上分發(fā)且執(zhí)行查詢工作負荷的計算密集型部分,并將結(jié)果傳輸 回數(shù)據(jù)庫,用于最后整合至將要返回到客戶端應用的最終結(jié)果集;圖2示出了可以用于生成本發(fā)明的特定實施方式的本發(fā)明的各種組件,這些組件 以不同方式部署在數(shù)據(jù)庫服務器、并行計算機的主機節(jié)點和并行計算機本身之上;圖3示出了查詢執(zhí)行的階段I中所涉及的步驟,其中將負責執(zhí)行所需分擔的數(shù)據(jù) 庫查詢的應用服務安裝在并行計算機中的計算節(jié)點集合(稱為應用服務節(jié)點)上;
圖4示出了查詢執(zhí)行的階段II中所涉及的步驟,其中將查詢中所使用的目標數(shù)據(jù) 庫拷貝到來自階段I的應用服務節(jié)點的子集(此節(jié)點子集在下面稱為活動查詢分區(qū));圖5示出了查詢執(zhí)行的階段III中所涉及的步驟,其中相關(guān)查詢參數(shù)被傳遞至來 自階段II的適當活動查詢分區(qū),并且收集結(jié)果,并將其返回到調(diào)用數(shù)據(jù)庫函數(shù)或者數(shù)據(jù)庫 服務器中的結(jié)果表;以及圖6示出了下文考慮的本發(fā)明的特定實施方式中的查詢請求示例,該查詢請求被 發(fā)送到數(shù)據(jù)庫服務器,用于(使用遠程并行計算機上的Smith-Waterman算法的并行性)將 給定的序列與數(shù)據(jù)庫服務器中所存儲序列的特定目標庫進行匹配,并且隨同遠程執(zhí)行之后 返回的結(jié)果而拷貝至活動查詢分區(qū)。
具體實施例方式本發(fā)明總體上涉及將計算密集型的用戶定義的操作從數(shù)據(jù)庫服務器分擔至附接 的高性能并行計算機。給出下文描述是為了使本領域的普通技術(shù)人員能夠執(zhí)行和使用本發(fā) 明,并且下文描述是在專利申請及其要求的上下文中提供的。對優(yōu)選實施方式的各種修改 和這里所描述的通用原理和特征對于本領域技術(shù)人員而言將是易見的。因此,本發(fā)明不限 于所示的實施方式,而是遵循這里所描述的原理和特征的最寬泛的范圍。為了詳細描述本發(fā)明的特征,現(xiàn)在參考下文結(jié)合附圖進行的論述。圖1(標號10-16)是所提出的發(fā)明的高層示意圖,其中在步驟1中,客戶端應用發(fā) 出SQL查詢,其包括一個或多個計算密集型操作。查詢工作負荷的某些或者全部計算密集 型部分通??梢宰鳛閿?shù)據(jù)庫服務器上的嵌入式用戶定義程序來實現(xiàn),然而在步驟2中代替 的是,在附接的高性能并行計算機上分擔和執(zhí)行該查詢工作負荷執(zhí)行。將來自這些被分擔 計算的每一個的結(jié)果集合傳回到數(shù)據(jù)庫,以用于在步驟3中進行任何進一步的處理,包括 用于整合至結(jié)果集合可能需要的任何處理,該結(jié)果集合在步驟4中被最終返回到客戶端應 用。圖1中示出了本發(fā)明的兩個基本方面。第一,將計算密集型工作負荷分擔到附接的并 行計算機,對于單一查詢調(diào)用或者相同目標數(shù)據(jù)庫表的多個相關(guān)查詢調(diào)用而言,可以改進 數(shù)據(jù)庫服務器上的查詢性能和查詢響應時間。第二,借以獲得此性能改進的整個過程不需 要客戶端應用的顯著重寫,因為在后端并行計算機上執(zhí)行用戶定義程序是以相同的語義和 可靠性來進行的,就好像此用戶定義程序在數(shù)據(jù)庫服務器本身上執(zhí)行。然而,本發(fā)明向客戶 端應用提供如下能力,用于通過在數(shù)據(jù)庫服務器上使用SQL接口,來定制和優(yōu)化此分擔的 遠程執(zhí)行的某些方面。圖2(標號18-2 示意性示出了各種組件,這些組件可以是本發(fā)明的通用實施方 式或是特定實施方式的一部分。這些組件用于初始化附接的并行計算機上的服務,來準備 執(zhí)行未來的分擔計算,在需要時調(diào)度這些計算,以及收集并將結(jié)果回傳到數(shù)據(jù)庫服務器。通 常,這些獨立的組件部署在并行計算機本身上,或者另外部署在高性能并行計算機系統(tǒng)的 一個或者多個前端主機計算機上。本發(fā)明中的另一組件集合部署在數(shù)據(jù)庫服務器本身上, 并且包括用戶定義程序存根,該存根適當?shù)乩脴藴蕝f(xié)議(諸如,web服務或者JDBCCJava 數(shù)據(jù)庫連接性))來調(diào)用后端并行計算機上的相應服務。另外,數(shù)據(jù)庫服務器提供如下各種 臨時表,可以用于存儲給定查詢工作流中的中間結(jié)果或者最終結(jié)果。對于HPC并行平臺本 身,本發(fā)明的主要組件是運行在每個并行計算節(jié)點上的服務包裝器,該服務包裝器封裝用于執(zhí)行并行任務的節(jié)點上的真實服務。此服務包裝器負責與前端主機上的其他組件進行通 信,用于執(zhí)行整體調(diào)度和同步。服務包裝器還以如下形式存儲適當?shù)哪繕藬?shù)據(jù)庫表或者實 體化視圖的不同子分區(qū),該形式可以由基礎節(jié)點服務利用簡單編程接口來有效地訪問,以 便檢索每個子分區(qū)中的所需表的行(或者每個這種數(shù)據(jù)庫表的行中的字段值的子集)。如這里所描述的,前端主機計算機包括本發(fā)明的許多重要組件,包括-服務部署模塊,其負責將應用服務加載到并行機器節(jié)點的所需子集上;-服務節(jié)點分配器組件,其保持活動分區(qū)上的狀態(tài),或者其上已經(jīng)部署了應用服務 的并行計算機節(jié)點的集合;-查詢分配器組件,其結(jié)合服務節(jié)點分配器為特定服務調(diào)用申請并行機器上節(jié)點 的子集,并且如果目標數(shù)據(jù)庫表或者實體化視圖未改變,則該查詢分配器組件能夠重分配 即將在相同查詢分區(qū)上的查詢(從而,避免再次將目標表數(shù)據(jù)從數(shù)據(jù)庫拷貝到并行計算機 的開銷);-結(jié)果收集器組件,其從并行機器上的獨立計算節(jié)點聚合結(jié)果,并且這些結(jié)果可以 被返回到數(shù)據(jù)庫服務器上的調(diào)用服務函數(shù),或者這些結(jié)果可以被插入至數(shù)據(jù)庫服務器上的 預定義的臨時表;-數(shù)據(jù)庫中繼組件,其在本發(fā)明的特定實施方式中起作用,這是由于許多并行HPC 平臺不支持用于交互數(shù)據(jù)庫訪問的任何協(xié)議或者編程API。在這些情況下,此數(shù)據(jù)庫中繼組 件管理在數(shù)據(jù)庫服務器與并行計算機節(jié)點之間的數(shù)據(jù)傳輸,在向數(shù)據(jù)庫服務器傳輸數(shù)據(jù)和 從數(shù)據(jù)庫服務器傳輸數(shù)據(jù)所使用的I/O協(xié)議、與向并行計算機節(jié)點傳輸數(shù)據(jù)和從并行計算 機節(jié)點傳輸數(shù)據(jù)所使用的協(xié)議之間進行調(diào)解。圖3至圖5 (標號46-60)示出了本發(fā)明中所需步驟的序列,每個圖都對應在分擔 并行查詢執(zhí)行中的相繼階段。這里階段I表示應用的部署、階段II表示數(shù)據(jù)初始化、以及 階段III表示在HPC平臺上執(zhí)行分擔的任務,并將結(jié)果返回到數(shù)據(jù)庫服務器。圖3(標號對_3幻描述了部署階段或者階段I,其中在步驟1中,本應用服務特定 領域中的技術(shù)人員提供了所期望應用服務的特定軟件實現(xiàn),該軟件實現(xiàn)嵌入在將通用服務 封裝到應用服務的服務包裝器內(nèi),如下文進一步描述。在步驟2中,利用在并行計算機上獨 立計算節(jié)點的集合上執(zhí)行的適當并行庫和運行時環(huán)境,將此應用服務(連同服務包裝器) 編譯成針對并行計算機上獨立節(jié)點程序的二進制代碼。步驟3中,在確定此服務節(jié)點分配 器組件自從某些先前的實例化起沒有被初始化和運行之后,在并行計算機主機上啟動該服 務節(jié)點分配器組件。注意,步驟1-3由本領域技術(shù)人員來執(zhí)行,所述人員具有該應用的特定 背景和在并行計算機上執(zhí)行此應用的特定技能。步驟4中,作為應用工作流執(zhí)行的一部分, 從數(shù)據(jù)庫服務器接收特定請求,其中并行計算機主機上的程序加載器開啟并行計算機上給 定計算節(jié)點集合上的應用服務(這通常是針對并行二進制代碼的平臺特定加載器,諸如針 對基于MPI應用的MPIRUN,參見http://www-unix. mcs. anl. gov/mpi)。隨著應用服務被加 載到這些計算節(jié)點上,將控制轉(zhuǎn)移給服務包裝器,其發(fā)起消息以向主機計算機上的服務節(jié) 點分配器注冊節(jié)點。服務節(jié)點分配器保持了目錄和對于以這種方式部署的每個特定應用服 務是可用的計算節(jié)點的相關(guān)統(tǒng)計。圖4(標號34-44)描述了應用服務的數(shù)據(jù)初始化階段或者階段II,其中在步驟1 中,接收從數(shù)據(jù)庫服務器到查詢分區(qū)分配器組件的用于加載目標表的請求,其中在后續(xù)階段3中的將來的查詢請求將基于該目標表來運行??梢酝ㄟ^將來自數(shù)據(jù)庫服務器本身、或 者來自一些其他外部數(shù)據(jù)源(諸如ftp服務器)的各種源數(shù)據(jù)庫表進行組合,來獲得此目 標表,繼而該目標表被加載到在其上初始化并且運行應用服務的節(jié)點分區(qū)的子集上。步驟 2中,查詢分區(qū)分配器檢測是否存在通過此表加載的現(xiàn)有分區(qū),該現(xiàn)有分區(qū)正處于處理新的 查詢或者查詢集合的就緒狀態(tài)。如果找到這種分區(qū),但是因為另一查詢正在該分區(qū)上運行 而使得該分區(qū)不可用,則可使用已加載到該分區(qū)上的的目標表數(shù)據(jù),來克隆另一活動查詢 分區(qū)(以便在HPC平臺系統(tǒng)本身中以高速進行所有數(shù)據(jù)傳輸,而不是恢復到此數(shù)據(jù)的原始 數(shù)據(jù)庫,該恢復具有較高的通信開銷)。然而,如果沒有找到這種分區(qū),繼而查詢分區(qū)分配 器與服務節(jié)點分配器進行協(xié)商,用于分配自由應用服務節(jié)點的另一子集,并且創(chuàng)建新的活 動查詢分區(qū),如步驟3所示。此活動查詢分區(qū)的獨立應用服務節(jié)點上的服務包裝器繼而發(fā) 起單獨的數(shù)據(jù)傳輸請求,以便在步驟4中從數(shù)據(jù)庫服務器拷貝所需數(shù)據(jù)的互斥但完全窮盡 的行分區(qū),在步驟5中使用數(shù)據(jù)庫中繼組件,這里數(shù)據(jù)分區(qū)是如在步驟6中存儲在本地數(shù)據(jù) 高速緩存中(優(yōu)選地,在存儲器內(nèi)的數(shù)據(jù)高速緩存中,其位于應用服務的服務包裝器中)。 具體地,數(shù)據(jù)庫中繼組件可能正在并行計算機上或者并行計算機主機上運行,該數(shù)據(jù)庫中 繼組件用于在步驟5和6中的并行計算機的節(jié)點與中繼主機之間調(diào)解數(shù)據(jù)傳輸和通信協(xié)議 (其可以基于MPI消息傳遞或者UNIX套接字類型的通信協(xié)議),以及在步驟7中的中繼主 機與數(shù)據(jù)庫服務器之間調(diào)解數(shù)據(jù)傳輸和通信協(xié)議(其可以基于用于數(shù)據(jù)庫訪問的JDBC協(xié) 議)。計算節(jié)點上的應用服務包裝器從而向數(shù)據(jù)庫中繼組件傳送所需的SQL查詢函數(shù),該數(shù) 據(jù)庫中繼組件完成查詢,并且以適當?shù)谋硎拘问綄⒔Y(jié)果集合傳輸回到計算節(jié)點,用于存儲 到應用服務包裝器中所保持的數(shù)據(jù)高速緩存中。接下來,在如下描述的隨后查詢執(zhí)行階段 期間,僅需要從此本地數(shù)據(jù)高速緩存讀取此數(shù)據(jù),并且應用服務利用用于此目的的特定API 對此數(shù)據(jù)進行訪問。 圖6 (標號6 描述了查詢執(zhí)行階段或者階段III,其中在步驟1中,通過在數(shù)據(jù)庫 服務器上執(zhí)行的用戶定義函數(shù)而發(fā)起查詢請求。此查詢請求封裝了在并行計算機節(jié)點上運 行的應用服務所需的所有輸入?yún)?shù)值,包括用于執(zhí)行查詢的特定目標表。此查詢請求的端 點是運行在并行計算機前端主機上的應用服務主機組件。在步驟2中,此應用服務主機依 次將此查詢請求插入至步驟2中查詢分區(qū)分配器中所保持的隊列集合(為在上文階段2中 已經(jīng)分配并且分派特定目標表的每個分區(qū)保持單獨的隊列)。在步驟3中,查詢分區(qū)分配器 最終向適合的分區(qū)提交此查詢請求,并且在步驟4中等待作業(yè)完成,可以選擇生成作業(yè)狀 態(tài)代碼并將其返回到發(fā)布應用執(zhí)行請求的數(shù)據(jù)庫服務器中的用戶定義函數(shù)。查詢字符串本 身被拷貝到在活動查詢分區(qū)中每個節(jié)點的應用服務的服務包裝器中分配的存儲器緩沖區(qū)。 在步驟5中,將查詢結(jié)果(存儲在此分區(qū)中每個節(jié)點的應用服務的服務包裝器中的結(jié)果高 速緩存中)聚合到并行計算機主機上的結(jié)果收集組件中,并且接下來將該聚合的結(jié)果數(shù)據(jù) 返回到數(shù)據(jù)庫服務器上的始發(fā)用戶定義函數(shù),如步驟6所示。由于調(diào)用遠程執(zhí)行的始發(fā)用 戶定義函數(shù)是表用戶定義函數(shù),或者是嵌入在表用戶定義函數(shù)中,因此這些結(jié)果可以作為 復雜SQL查詢工作流的一部分而進一步進行處理,也就是說,基于結(jié)果列值執(zhí)行ORDER BY 或者GROUP BY操作,或者按照查詢執(zhí)行的全部工作流的需求,而將此結(jié)果表與其他數(shù)據(jù)表 進行聯(lián)接。備選地,每個節(jié)點上的應用服務包裝器還可以使用如階段II中的數(shù)據(jù)庫通信中 繼,來直接地將結(jié)果插回至數(shù)據(jù)庫上的特定結(jié)果表,如步驟7和步驟8所示(雖然在某些數(shù)據(jù)庫平臺上,通常阻止這種用戶定義表函數(shù)訪問數(shù)據(jù)庫表,但是如果遠程執(zhí)行的始發(fā)用戶 定義表函數(shù)被允許訪問此結(jié)果表以用于生成其自身的返回表值,則此方法可以是默認的)。特定
具體實施例方式針對特定的實施方式而描述了生物信息學序列匹配應用,其提供了計算密集 型算法的良好示例,該示例可以作為數(shù)據(jù)庫中用戶定義程序來實現(xiàn),并且從而可以從本 發(fā)明獲益。具體地,考慮FASTA包中的SSEARCH程序,(可從http//helix, nih. gov/ docs/gcg/ssearch. html 獲取),該程序提供了 Smith-Waterman 算法(T. F. Smith 和 M. S. Waterman 的"Comparison of Bio-sequences,,,Advances in AppliedMathematics Vol. 2,pp. 482-489(1981)) ,Jt^ff. R. Pearson ^"Comparison of methods for searching protein sequence databases,,,Protein Science, Vol. 4, pp. 1145-1160 (1995)中實現(xiàn)。 相比于其他序列匹配算法(諸如前文所述的BLAST),Smith-Waterman算法是更為計算密集 型的算法,但是得出高敏感度相似性匹配結(jié)果,并且可以用于在比較測試中針對甚至疏遠 相關(guān)的序列對而恢復匹配。在該特定實施方式中使用的商業(yè)數(shù)據(jù)庫服務器平臺是IBM DB29. 1版本(http:// www. ibm. com/software/data/db2),運行在雙核處理器上,CPU 為 Xeon 2. 4GHz 并具有 2GB RAM存儲和1000Mbit以太網(wǎng)接口。用于遠程執(zhí)行查詢工作負荷的計算密集型部分的HPC平臺包括包含1024個計 算節(jié)點的 IBM Blue Gene/L e-server 平臺(http://www. research, ibm.com/bluegene)的 單機架,每個計算節(jié)點包括兩個PowerPC 440處理器,該處理器在700MHz操作并且每個節(jié) 點具有512MB RAM存儲。雖然用于IBM Blue Gene/L的程序通常利用MPI消息傳遞庫進行 編寫,在此特定使用的Blue Gene/L平臺不需要任何通信庫,雖然本發(fā)明不排除這種庫的使 用。該通用方法可以通過本領域技術(shù)人員適用于其他并行計算機,并且例如,已經(jīng)在其他平 臺上實現(xiàn)并進行基準測試的SSEARCH算法的多線程或者共享存儲器版本也可以用于獲得 本發(fā)明的其他特定實施方式(例如,Y. Chen、J. Mak, C. Skawratananond和T_H. K. Tzeng的 "Scalability Comparison ofBioinformatics for Applications on AIX and Linux on IBM e-serverpSeries 690,,,http://www. redbooks. ibm. com/abstracts/redp3803. html, IBM Redbook,2004)。在配置用于實現(xiàn)本發(fā)明的數(shù)據(jù)庫平臺和HPC平臺的其他組合中,可能存在特定的 技術(shù)問題,然而這些技術(shù)問題可以由本領域技術(shù)人員來解決。對于在IBM DB2數(shù)據(jù)庫平臺 與IBM Blue Gene/L并行計算機平臺組合(以及知曉的商業(yè)數(shù)據(jù)庫與并行計算機平臺的其 他等價組合)的情況下,目前為止還沒有支持在數(shù)據(jù)庫服務器與并行計算機上的獨立計算 節(jié)點之間的通信的API或者程序。對于IBM Blue Gene/L,獨立計算節(jié)點是僅提供在完整的 獨立操作系統(tǒng)中可用服務的子集的無盤系統(tǒng)。因此,運行完全Linux操作系統(tǒng)并且通過局 域網(wǎng)連接到Blue Gene/L系統(tǒng)的單獨IBM P-series服務器可以用于容納本發(fā)明中的各種 組件,包括1)調(diào)度器組件,其包含了 Blue Gene/L計算節(jié)點分區(qū)的注冊表,這些分區(qū)可用于 查詢處理應用;2) web服務器組件,其支持從數(shù)據(jù)庫服務器發(fā)起的基于SOAP的web服務調(diào)用,用于 執(zhí)行查詢工作流的各種組件;
3)作業(yè)提交接口組件,用于保留并且開啟Blue Gene/L計算機的計算節(jié)點上的應 用;4)數(shù)據(jù)庫中繼組件,其保持了對于獨立Blue Gene/L計算節(jié)點的一個或者多個套 接字連接,并且負責執(zhí)行從這些套接字連接上的計算節(jié)點中繼的各種數(shù)據(jù)庫命令,并且向 發(fā)起數(shù)據(jù)庫查詢請求的計算節(jié)點傳回這些數(shù)據(jù)庫命令的結(jié)果集合或者實現(xiàn)代碼。利用簡單模式將相關(guān)FASTA序列數(shù)據(jù)庫導入至DB2關(guān)系數(shù)據(jù)庫中,由此對于每個 序列數(shù)據(jù)庫(例如,drosophila),表中存儲的數(shù)據(jù)分別包括列[id (整型)、名稱(字符串)、 描述(字符串)、序列(大對象)]。這里,id字段是連續(xù)記錄號,而名稱(其是NCBI標識 符)和描述字段剝離自FASTA格式的每個序列的頭部,利用腳本解析FASTA數(shù)據(jù)庫,并且將 其插入至相應的DB2表。具有14331行的Drosophila數(shù)據(jù)庫(包括Drosophila核苷酸數(shù) 據(jù)庫的蛋白質(zhì)編碼序列轉(zhuǎn)換)用于這里所描述的結(jié)果。Smith-Waterman 算法的實現(xiàn)是 FASTA 包中的 SSEARCH 程序(來自 http //helix, nih. gov/docs/gcg/ssearch. html),并且對于此傳統(tǒng)代碼進行改變以實現(xiàn)為并行計算機上 的應用服務,該改變是相當小的。修改主要入口以利用必要的端口和地址來啟動節(jié)點服務 包裝器,用于支持其連接至應用調(diào)度器(如圖3的步驟3所示)。此節(jié)點應用服務包裝器 (其包含用于保持目標庫序列的適當分區(qū)的子集和相應查詢結(jié)果集合,以及用于輸入查詢 序列的存儲器緩沖器),繼而負責向應用調(diào)度器注冊應用服務客戶端,執(zhí)行目標庫序列的緩 沖器更新,和針對每個新的查詢請求而對此目標庫運行SSEARCH算法。FASTA包已經(jīng)支持用 于讀取目標庫序列的文件和數(shù)據(jù)庫格式的擴展列表,以便用于從節(jié)點服務包裝器的暫存器 訪問數(shù)據(jù)的訪問功能可以簡單地作為另一輸入源而進行添加。因此,總之所需的通用組件,除了用于支持此特定實施方式的FASTA包應用,包括 計算節(jié)點服務包裝器功能,節(jié)點服務包裝器暫存器的訪問功能,和數(shù)據(jù)庫中繼組件,并且所 有這些組件通過類似于FASTA包中的SSEARCH的應用服務的廣泛的類而提供重用。圖6中給出了基于此特定實施方式的SQL查詢的示例。此查詢發(fā)起DB2用戶定義 表函數(shù)ssearch_call,其具有參數(shù)列表,包括目標序列庫、用于將要被匹配的輸入序列的描 述符字串、輸入序列自身和期望匹配的排名靠前的數(shù)量。當如所示出地從SQL查詢接口調(diào) 用時,在Blue Gene/L計算節(jié)點上執(zhí)行匹配和排名,并且如圖2中所示返回結(jié)果。將在本專 利的最終版本中提供加速和性能測量。雖然本發(fā)明已經(jīng)結(jié)合實施方式描述給出,但是本領域的普通技術(shù)人員之一將容易 地認識到可以存在實施方式的改變,并且這些改變將在本發(fā)明的精神和范圍內(nèi)。相應地,本 領域的普通技術(shù)人員之一可以在不脫離附加權(quán)利要求的精神和范圍的情況下做出許多修 改。
權(quán)利要求
1.一種計算機系統(tǒng),包括(i)高性能并行計算(HPC)平臺;( )通用數(shù)據(jù)庫平臺;(iii)用于分配計算密集型用戶定義工作負荷和相應數(shù)據(jù)視圖來在所述HPC平臺上執(zhí) 行的裝置,所述計算密集型用戶定義工作負荷和相應數(shù)據(jù)視圖形成針對在數(shù)據(jù)庫平臺上的 一個或者多個查詢的工作流的部分;以及同時(iv)用于將來自在所述HPC平臺上執(zhí)行的所述工作負荷的結(jié)果返回到所述數(shù)據(jù)庫平 臺的裝置,以便將這些結(jié)果合并到所述數(shù)據(jù)庫查詢的最終結(jié)果集合。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),其中當所述工作負荷包括單獨查詢、或者相似或者相 關(guān)查詢的序列、或者同時獨立查詢的集合時,所述高性能并行計算系統(tǒng)能夠在處理單元和 快速存儲器方面部署更多的計算資源,以便所分配的計算密集型工作負荷可以以高效的方 式執(zhí)行。
3.根據(jù)權(quán)利要求2所述的系統(tǒng),其中所述高性能并行計算系統(tǒng)支持針對共享的存儲器 或者分布式存儲器消息傳遞應用的并行執(zhí)行,從而支持通常不被數(shù)據(jù)庫嵌入式用戶定義程 序直接支持的編程模塊。
4.根據(jù)權(quán)利要求2所述的系統(tǒng),其中所述高性能并行計算系統(tǒng)可以利用其大的存儲器 可用性來在存儲器內(nèi)結(jié)構(gòu)中高速緩存表數(shù)據(jù)(相對于從磁盤系統(tǒng)將其讀出),用于更快的 計算處理,以及支持由在相同數(shù)據(jù)表上的查詢序列所生成的計算密集型工作負荷的序列得 以有效地執(zhí)行,而不需要針對每個新的查詢調(diào)用而在所述數(shù)據(jù)庫服務器與所述高性能并行 計算機系統(tǒng)之間進行進一步數(shù)據(jù)交換。
5.根據(jù)權(quán)利要求2所述的系統(tǒng),其中所述高性能并行計算系統(tǒng)能夠創(chuàng)建所述數(shù)據(jù)庫數(shù) 據(jù)的快速復本,以便由所述數(shù)據(jù)庫服務器上的同時、獨立、并行的查詢的相應集合引起的同 時、獨立、計算密集型工作負荷的集合可被有效地執(zhí)行,沒有由于需要回到所述數(shù)據(jù)庫服務 器以獲取所述相同數(shù)據(jù)表的額外拷貝而需要的大量通信開銷。
全文摘要
本發(fā)明涉及一種在附接的高性能、并行計算平臺上分配和執(zhí)行數(shù)據(jù)庫查詢工作流的計算密集型部分的系統(tǒng)和方法。用于在數(shù)據(jù)庫平臺與執(zhí)行工作負荷的高性能計算平臺之間移動所需數(shù)據(jù)和結(jié)果的性能開銷可以如下分攤在并行計算平臺上通過精細粒度的并行性和優(yōu)異的硬件性能,來加速計算密集型運算;使用并行計算平臺上的存儲器內(nèi)的數(shù)據(jù)結(jié)構(gòu),來高速緩存針對相同數(shù)據(jù)的時間滯后查詢序列之間的數(shù)據(jù)集合,以便可以在沒有進一步的數(shù)據(jù)傳輸開銷的情況下處理這些查詢;通過復制并行計算平臺中的數(shù)據(jù),以便可以利用高性能計算平臺的單獨并行分區(qū),來同時處理針對相同目標數(shù)據(jù)集合的多個獨立查詢。
文檔編號G06F7/00GK102089741SQ200880106809
公開日2011年6月8日 申請日期2008年8月14日 優(yōu)先權(quán)日2007年9月17日
發(fā)明者M·科赫特, R·納塔拉詹 申請人:國際商業(yè)機器公司