在附接的高性能并行计算机上执行计算机密集型数据库用户定义的程序的制作方法

文档序号:6478315阅读:305来源:国知局
专利名称:在附接的高性能并行计算机上执行计算机密集型数据库用户定义的程序的制作方法
技术领域
本发明总体上涉及数据库处理的性能增强,尤其涉及用于通过在附接的高性能并 行计算机(HPC)系统上分配和执行查询工作流的计算密集型部分,来加速计算密集型数据 库查询的系统和方法。
背景技术
本发明涉及用于通过在附接的高性能并行计算机(HPC)系统上分配和执行查询 工作流的相关计算密集型部分,来加速数据库查询的系统和方法。

发明内容
本发明是出于观察到以下而得到动机传统上已经应用于事务处理、在线分析 和数据仓库的商业数据库,正日益应用于存储、查询和分析各种复杂数据类型(诸如文 本、图像和多媒体)。商业数据库还正日益应用于处理来自科学仪器的原始事件流,或 者应用于存储来自高性能计算机仿真的未处理结果集合(参见J. Becla和D. L. Wong的 “Lessons Learned From Managing a Petabyte”,Conference OnInnovative Data Systems Research,Asilomar CA (2005))。对数据库中存储为复杂数据类型的这种原始数据的相关分析,经常超出简单的归 档和检索,而包括某些计算密集型操作和数据转换,其在关于这种数据的各种外部应用上 通常很有用,诸如高级语义查询和搜索、基于内容的索引、复杂数据建模、数据挖掘分析和 计算机辅助设计。可将这些计算密集型操作和数据转换实现为数据库扩展器内的嵌入式程 序,该嵌入式程序包括通过这些复杂数据类型的用户定义的存储过程或者用户定义的函数 的集合,这提供了原始的复杂数据类型到适用于复杂外部应用的表示的必要转换。由此,这 些嵌入式数据库扩展器(可以由本领域技术专家来实现)通过利用熟悉的面向集合或者基 于SQL的语法和用于调用转换的查询接口,来向外部应用开发人员提供用于在他们的应用 中使用这些复杂数据类型的有关功能和转换。此外,在向客户端应用传输数据之前,通过借 助于提供原始数据更为压缩的表示,或者通过对数据库服务器自身上的原始数据进行实质 上的预过滤,嵌入式用户定义程序的使用通常减少将原始数据从数据库服务器跨越网络向 客户端应用移动的开销。最终,嵌入式用户定义程序的使用通过向不需要拷贝或者与外部 应用共享的原始数据提供“类似对象”接口,从而更易于确保数据库中原始数据的私有性、 完整性和一致性。然而,尽管上文给出了诸多优势,但是在数据库服务器上执行计算密集型用户定 义的程序的相关联的处理需求可能是非常大的,并且在常规数据库性能基准中、或者在通 用数据库服务器系统的硬件平台的设计和尺寸中,当前很少解决此方面的问题。大型商业数据库系统通常驻留在共享存储器多处理器上,或者在网络集群的计算 机平台上。在这些平台上,基础并行性通常仅对协调执行由查询优化器生成的并行查询计划的数据库控制器软件开放,并且与此同时,此基础并行性通常不对任何应用软件或者嵌 入式用户定义的程序开放。在某些情况下,用户定义函数的执行可以隐含借助由查询优化 器生成的并行查询计划,以便利用多线程或者数据分区并行性来调度查询执行。然而,商业 数据库经常强加默认约束或者甚至明确不允许以此方式隐含并行执行许多种用户定义的 函数。例如,对于并行执行的默认限制经常应用于如下用户定义的函数使用暂存器来存储 重复的函数调用之间的信息的函数、执行外部动作(诸如,文件输入-输出操作)的函数、 或者涉及非确定性执行(即,其中函数对于相同的输入可以返回不同的输出值,例如随机 数生成器)的函数,或者用于在每个函数调用返回多行值的用户定义的表函数(有关特定 商业数据库中的这些默认限制的详细描述,参见D. Chamberlin,“AComplete Guide to DB2 Universal Database,,,Morgan-Kaufman, SanFrancisco, 1998,第 6 章)。此夕卜,在隐含并行 执行中保留“安全”序列语义的特定情况下,虽然程序员可以撤销这些默认限制,但是即使 应用可能能够以更高级别粒度来利用并行性,可以用于执行这些用户定义程序的并行性级 别也受到在数据库平台中预配置的参数的限制,这些参数指定共享存储器平台上线程的最 大数量、或者分布式集群平台中数据分区或处理器的最大数量。此外,虽然这些数据库配置 参数可以设定为由基础硬件平台支持的最大值,但即使在此范围内,对于每个单独数据库 应用的最佳并行粒度仍将依赖于如下因素的复杂相互作用这些因素涉及在每个应用中并 行协调、同步、负载平衡和数据移动的级别,因此不太可能存在一种对于在数据库服务器上 运行的所有应用均为最佳的全局设置。最终,在此情况下,即使对于单一的应用,超越现有 硬件并行性所施加的限制而提高数据库性能,将需要对整个数据库平台进行全面且昂贵的 升级。总之,因此现有商业数据库系统对于查询处理引擎和数据库控制器仅开放基础控 制或数据并行性。这些数据库系统不提供用于以下目的的特定应用程序接口(API)用于 编写通用、并行、用户定义存储的过程和用户定义的函数;或者在数据库平台的预配置限制 内、或者扩展超出数据库平台预配置限制,用于基于不同情况对单独应用的可扩展性能进 行调整。在较通用的数据库服务器平台内,基于使用专用硬件加速器,针对改进数据 库查询处理性能给出了许多提议。例如,K. C. Lee, Τ. M. Hickey和V. W. Mak的"VLSI Accelerators for Large DatabaseSystems,,,IEEE Micro, vol. 11, pp. 8-20 (1991)收集 来自数据库查询工作负荷的概要分析统计数据以标识最昂贵的操作,并且提议使用磁盘存 储接口与CPU之间的数据路径中的专用VLSI硬件过滤器,用于处理这些特定操作(其中 包括联想搜索和聚合操作)。在 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)中,也主张类似的思想。对于面向文本的数据库应用,尤其是针对 字符串和模式匹配的硬件加速器的使用,在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 中进行了描述。此方案 的更新进展是“主动盘”技术,其利用正在逐渐取代在磁盘控制器接口处的定制设计电路 的通用微处理器(E.Riedel、C. Faloutsos、G. A. Gibson 和 D. Nagle 的 “Active DisksforLarge-scale Data Processing", IEEE Computer,Vol. 34,pp. 68-74,2001)。在此方案中, 某些查询处理工作负荷(一般在数据库服务器的主CPU上执行)被分担到在磁盘控制器接 口的这些单独微处理器。此方案通常用于商业数据库中使用的多磁盘系统,在存储接口处 探求更高的并行度,以便实现实质的预过滤,并减少经由用于许多数据库查询的存储系统 互联而向主CPU传输的数据量。对于可以用此方法进行分担的工作负荷的性质存在诸多限 制,尤其是由于单独的磁盘控制器彼此之间无法通信,因而分担任务局限于对其相应的数 据流进行简单数据过滤和转换操作。总之,虽然使用嵌入式硬件加速器对于简单数据类型 的简单谓词处理可能非常有效,但是整体方案对于需要并行同步和通信的更复杂的操作而 言,仍然缺少灵活性和可编程性。上文描述促成了本发明的需求,由此可以在单独且不同的HPC平台上而不是在性 能受限的数据库服务器上执行计算密集型的并行用户定义的程序。如早先提到的,此方案 的主要性能限制是在数据库服务器与HPC平台之间移动数据的开销,即使对于极为长期的 计算,在HPC平台上的计算性能增益可能显著地抵消或者分摊这些数据传输的开销。关于 此方案的一个问题是,普通数据库用户可能需要某些专门技术,以便在HPC平台上执行所 需程序。此外,此方法难以利用这些并行用户定义的程序,来在SQL框架中构造复杂的数据 库查询,因为这需要用户使用特定且非自动的方案,来对外部HPC平台上必要的计算密集 型操作执行明确的调度。因此,本发明是基于将此外部HPC平台用作对数据库平台的后端计算服务器(以 便在查询执行过程中,应用终端用户实质上与此HPC平台的使用分离,这不同于先前段落 中所描述的前端配置)。尽管这不能消除在数据库服务器与后端HPC平台之间移动数据和 结果的性能损失,但是在此方案中可以使用各种数据高速缓存策略来确保与在由专业程序 员对数据移动和管理进行明确管理和优化的等效前端客户端实现中相同的性能级别。此 外,本发明中的数据移动是在包括数据库服务器和后端并行计算机系统的严密控制的系统 环境中进行,因而使得易于引用数据库逻辑来确保数据的完整性和一致性,或者易于使用 专用硬件和协议来改进数据库服务器与后端HPC平台之间的数据传输性能。本发明的“研 发者”所需的专业技术是用于对后端HPC系统上的计算服务进行编程和安装,而一旦完成, 至于涉及客户端应用或者终端用户,整个查询执行继而如同已在数据库服务器本身上执行 等效的嵌入式用户定义程序一样进行。总之,履行查询所需的各种步骤,包括所需的数据移 动、计算密集型操作的分担和结果的返回,全都以自动方式进行,而不需要任何显式的用户 调度或者同步。因此,本发明所采用的方法不会影响能够在一般的SQL查询处理框架中构 造复杂数据库查询的重要能力,而无关于是否使用分担用户定义的程序(将在下文描述的 本发明的特定实施方式中论述这种示例)。本发明的适用性可以应用于若干应用领域,并且特别是考虑生物信息学和生命科 学领域,下文所描述的本发明的特定实施方式便以该领域为主。在此所考虑的这种特定实施方式用在DNA和蛋白质序列数据库中用于序列相似 度和比对所使用的算法中。近年来,基因和蛋白质序列的数据量急剧增长并且这种数据目 前使用各种格式存储于各种数据存储库中,该数据存储库包括商业关系数据库以及专用非 关系数据库。生物信息学的基本任务是,将新的序列或者序列片断与现有的序列存储库中 的序列子集进行比较,以便检测序列的相似度或者同族关系。继而,将所得匹配与严密匹配序列上的其他科学数据和元数据进行组合(诸如构造和结构细节、实验性数据、功能性注 解等),以便为新序列的生物学或者基因学的进一步研究提供信息。由于此过程中的许多步 骤需要信息的集成和聚合,因此如果可以从SQL查询接口访问全部这种序列数据和元数据 以及序列匹配算法,则对此任务是极大的帮助。实现这一点的一个方案(通常称作提取/转 换/加载方案)是,将相关序列库从原始数据格式导入至商业关系数据库,这将需要为存储 原始序列库和元数据的每个专用数据格式定制加载器脚本。另一种备选方案,如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中所描述,将序列数据保留在其原始数据存储库中,而是在主要 的前端数据库服务器上提供此异质数据源集合的抽象视图或者联合视图,并且利用这种主 要前端数据库上的嵌入式包装函数集合,来提供要在主要数据库与后端异质数据源集合之 间交换的输入查询和查询结果的必要映射。这两种一般备选方法还可以用来使用数据库服务器中的SQL查询接口,以 调用各种生物学序列匹配算法。例如,这些算法可以实现为嵌入式用户定义程序,如 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算法的描述。备选地,可以扩展上文描述的数据库包装方法,如 B. Eckman 禾口 D. Del Prete 的"Efficient Access to BLAST Using IBM DB2 Information Integrator”,IBM Healthcare and Life Science Publication,2004 所描述,用于在单独 BLAST服务器上启动必要的运算,还用于将结果映射回数据库服务器上的表。这两种方案在 实现细节上有实质差别,但是二者实质上提供了一些重要的能力,即,使用数据库SQL查询 接口来访问和查询一个或者多个包含生物学序列数据和元数据的数据源的能力,以及将诸 如BLAST的序列匹配算法整合至这些数据库查询的能力。这些能力给应用开发人员带来了 用来生成复杂查询的能力,诸如利用涉及序列元数据的谓词,来过滤序列的初始搜索空间, 和通过将从匹配算法返回的最佳序列与在其他相关数据存储库中的关于这些序列的信息 相联接,来对序列匹配结果进行后续处理。以这种方式,序列匹配算法的嵌入式实现提供了 如下应用能力可以自动、增强并且加速来自序列数据的新的科学发现过程。然而,上述两 个方法中任一都还没有以商业数据库中的常规方法进行开发,来支持这些序列匹配算法的 并行实现。值得考虑的是,在针对生物序列匹配和比对的并行算法开发的现有技术中,已经 在从专用加速器到多线程对称多处理系统、和到分布式存储器计算机的范围内的各种HPC 平台上实现了并行算法。从可扩展性的观点上看,分布式存储器平台是最受关注的,并且在这种情况下,已 经有两种主要的方案用于在生物学序列匹配算法中探求并行性。第一种方案称为数据库分割,该方案在计算节点集合上对序列的目标库进行 分区(优选地,使用足够的计算节点,以使得序列库的每个单独分区在该节点存储器 内)。此方法的并行可扩展性最终受限于用于将该库序列数据进行分布和在计算节点 的更大集合上收集结果的数据移动开销。可以在如下文献中找到用于实现此分布式存储器并行方案所需的性能优化的研究: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中找到用于优化并行磁盘1/0性能的扩展。第二种方案称为查询分割,该方案可以在存在一批类似但独立的查询时使用, 以便可以基于目标序列库同时地并行执行每个查询。因此,此目标序列库可以在分布 式存储器平台的多个节点上进行复制,如在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)所描述。此方 法受限于单独节点上的存储器,该独立节点可能不足以存储整个目标序列库,但是此特殊 困难可以通过使用数据库和查询分割的组合来克服,该组合是针对具有数千处理器的分布 式存储器并行计算机的最有效并且可扩展的方案,如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)中所 描述。据我们所知,BLAST (或者其他序列匹配算法)的并行实现没有考虑从SQL查询接 口使用这些算法以便支持数据集成和更大查询工作流的处理的问题。如先前提到的,将这 些并行程序直接实现为商业关系数据库中的嵌入式用户定义程序也是困难的,这是由于这 些程序广泛使用了消息传递和其他并行编程结构,而通常在数据库编程和运行时环境中不 支持这些并行编程结构。BLAST算法具有低计算复杂度(与将被匹配的两个输入序列字符串的大小大 致成线性),但是在生物信息学中存在其他搜索算法和匹配算法,这些算法具有输入 的大小的二阶或更高阶复杂度,诸如Needleman-Wunsch算法、Smith-Waterman算法、 Maximum-Likelihood(最大似然)匹配和Phylogenetic匹配(即,它们的复杂度至少 是两个输入序列字符串大小的乘积的量级;参见W. R. Pearson的“ProteiMequence comparison and Protein evolution,,,Intelligent Systems inMolecular Biology, 2001)。这些算法的计算需求比BLAST算法要大得多,因此这些算法的嵌入式用户定义程序 的性能将在数据库服务器上严格受限,该数据库服务器还同时处理其他工作负荷。然而,对 于这些算法,当相比于等效的BLAST实现时,从数据库服务器到外部HPC平台的数据传输开 销将是整个执行时间的较小部分。因此,本发明尤其适于这种情况,尤其是由于通过在后端 HPC平台上优化(诸如,内存数据结构和细粒度并行性)的使用而显著减少执行时间。可以成为本发明目标的另一生命科学应用集合是系统生物学领域,该领域对各种 生物网络(诸如,代谢途径、反应网络、基因调控网络)和蛋白质药物相互作用中的关系进 行研究。许多这些关系存储为图结构,并且可以基于这些图提出与生物学有关的查询,这些 图可以作为复杂的用户定义数据类型而存储在数据库中,或者备选地,作为较简单的数据 类型(包括节点、边和属性信息)集合上的聚合,而自动实体化。在下文中描述了针对这些图数据类型的系统生物图数据库扩展器,连同在这些数据类型上的相似度、搜索和推论的 图操作的合集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, 其中许多标准图操作(像图同构、子图匹配、连通分量、最短路径和生成树等)已经作为用 户定义的函数实现在此数据库扩展器中。针对非常大的图和计算量大的图算法,本发明可 以通过将这些用户定义的函数分担到附接的HPC平台来改进查询性能。商业关系数据库利用嵌入式用户定义程序,正逐渐用于存储、查询和分析复杂的 数据类型,并且已经认识到,在现有的商业数据库平台上执行计算量大的用户定义程序时, 存在许多性能抑制因素。因此,本发明涉及新颖的系统和方法,用于在分开并且独立的并行高性能计算系 统上执行多样数据库查询中的一个或多个查询的计算密集型部分。将此工作负荷从数据库 服务器向附接的HPC平台进行分配和远程执行,从而从提交数据库查询的应用终端用户的 角度来看,整个执行就好像此工作负荷是通过数据库服务器自身上的等效用户定义程序来 执行的,但是由于远程执行而具有更好的并行性能。由此,概言之,本发明公开了一种计算 机系统,包括商业数据库平台;附接的高性能计算(HPC)平台;以及具有组件集合的系统,用于将查询工作负荷的计算密集型部分和相应目标数据 表从数据库平台分配到附接的HPC平台,在HPC平台上执行此工作负荷,以及将这些结果返 回至数据库系统,其中这些结果被合并至原始用户查询的最终结果集合。数据库和HPC平台是具有常规系统和软件栈的标准“现成”产品,在本发明中通过 框架进行集成以用于查询分配、远程执行和结果收集。此框架还提供了“快捷方式”功能,用于直接经由web服务接口来调用HPC平台上 查询执行的计算密集型部分。已经认识到可能存在如下需求,在测试和开发期间以及在某 些基于web服务的应用中,需要直接使用此web服务功能以用于对数据库容纳数据发起基 于HPC的应用,而不必明确地通过数据库查询接口进行。然而,此web服务调用接口无法提 供数据库服务器上SQL查询接口的优势,该SQL查询接口可以用于复杂的查询处理,其中远 程执行的函数可作为某些数据库查询工作流中的中间步骤。通过参考附图,可以对本发明关于其结构和操作的细节得到最好的理解,其中相 似的参考标号表示相似的部分,在附图中


图1示意性示出了提出的发明,其中客户端应用发出一个或多个SQL查询,在附接 的高性能并行计算机(HPC)上分发且执行查询工作负荷的计算密集型部分,并将结果传输 回数据库,用于最后整合至将要返回到客户端应用的最终结果集;图2示出了可以用于生成本发明的特定实施方式的本发明的各种组件,这些组件 以不同方式部署在数据库服务器、并行计算机的主机节点和并行计算机本身之上;图3示出了查询执行的阶段I中所涉及的步骤,其中将负责执行所需分担的数据 库查询的应用服务安装在并行计算机中的计算节点集合(称为应用服务节点)上;
图4示出了查询执行的阶段II中所涉及的步骤,其中将查询中所使用的目标数据 库拷贝到来自阶段I的应用服务节点的子集(此节点子集在下面称为活动查询分区);图5示出了查询执行的阶段III中所涉及的步骤,其中相关查询参数被传递至来 自阶段II的适当活动查询分区,并且收集结果,并将其返回到调用数据库函数或者数据库 服务器中的结果表;以及图6示出了下文考虑的本发明的特定实施方式中的查询请求示例,该查询请求被 发送到数据库服务器,用于(使用远程并行计算机上的Smith-Waterman算法的并行性)将 给定的序列与数据库服务器中所存储序列的特定目标库进行匹配,并且随同远程执行之后 返回的结果而拷贝至活动查询分区。
具体实施例方式本发明总体上涉及将计算密集型的用户定义的操作从数据库服务器分担至附接 的高性能并行计算机。给出下文描述是为了使本领域的普通技术人员能够执行和使用本发 明,并且下文描述是在专利申请及其要求的上下文中提供的。对优选实施方式的各种修改 和这里所描述的通用原理和特征对于本领域技术人员而言将是易见的。因此,本发明不限 于所示的实施方式,而是遵循这里所描述的原理和特征的最宽泛的范围。为了详细描述本发明的特征,现在参考下文结合附图进行的论述。图1(标号10-16)是所提出的发明的高层示意图,其中在步骤1中,客户端应用发 出SQL查询,其包括一个或多个计算密集型操作。查询工作负荷的某些或者全部计算密集 型部分通常可以作为数据库服务器上的嵌入式用户定义程序来实现,然而在步骤2中代替 的是,在附接的高性能并行计算机上分担和执行该查询工作负荷执行。将来自这些被分担 计算的每一个的结果集合传回到数据库,以用于在步骤3中进行任何进一步的处理,包括 用于整合至结果集合可能需要的任何处理,该结果集合在步骤4中被最终返回到客户端应 用。图1中示出了本发明的两个基本方面。第一,将计算密集型工作负荷分担到附接的并 行计算机,对于单一查询调用或者相同目标数据库表的多个相关查询调用而言,可以改进 数据库服务器上的查询性能和查询响应时间。第二,借以获得此性能改进的整个过程不需 要客户端应用的显著重写,因为在后端并行计算机上执行用户定义程序是以相同的语义和 可靠性来进行的,就好像此用户定义程序在数据库服务器本身上执行。然而,本发明向客户 端应用提供如下能力,用于通过在数据库服务器上使用SQL接口,来定制和优化此分担的 远程执行的某些方面。图2(标号18-2 示意性示出了各种组件,这些组件可以是本发明的通用实施方 式或是特定实施方式的一部分。这些组件用于初始化附接的并行计算机上的服务,来准备 执行未来的分担计算,在需要时调度这些计算,以及收集并将结果回传到数据库服务器。通 常,这些独立的组件部署在并行计算机本身上,或者另外部署在高性能并行计算机系统的 一个或者多个前端主机计算机上。本发明中的另一组件集合部署在数据库服务器本身上, 并且包括用户定义程序存根,该存根适当地利用标准协议(诸如,web服务或者JDBCCJava 数据库连接性))来调用后端并行计算机上的相应服务。另外,数据库服务器提供如下各种 临时表,可以用于存储给定查询工作流中的中间结果或者最终结果。对于HPC并行平台本 身,本发明的主要组件是运行在每个并行计算节点上的服务包装器,该服务包装器封装用于执行并行任务的节点上的真实服务。此服务包装器负责与前端主机上的其他组件进行通 信,用于执行整体调度和同步。服务包装器还以如下形式存储适当的目标数据库表或者实 体化视图的不同子分区,该形式可以由基础节点服务利用简单编程接口来有效地访问,以 便检索每个子分区中的所需表的行(或者每个这种数据库表的行中的字段值的子集)。如这里所描述的,前端主机计算机包括本发明的许多重要组件,包括-服务部署模块,其负责将应用服务加载到并行机器节点的所需子集上;-服务节点分配器组件,其保持活动分区上的状态,或者其上已经部署了应用服务 的并行计算机节点的集合;-查询分配器组件,其结合服务节点分配器为特定服务调用申请并行机器上节点 的子集,并且如果目标数据库表或者实体化视图未改变,则该查询分配器组件能够重分配 即将在相同查询分区上的查询(从而,避免再次将目标表数据从数据库拷贝到并行计算机 的开销);-结果收集器组件,其从并行机器上的独立计算节点聚合结果,并且这些结果可以 被返回到数据库服务器上的调用服务函数,或者这些结果可以被插入至数据库服务器上的 预定义的临时表;-数据库中继组件,其在本发明的特定实施方式中起作用,这是由于许多并行HPC 平台不支持用于交互数据库访问的任何协议或者编程API。在这些情况下,此数据库中继组 件管理在数据库服务器与并行计算机节点之间的数据传输,在向数据库服务器传输数据和 从数据库服务器传输数据所使用的I/O协议、与向并行计算机节点传输数据和从并行计算 机节点传输数据所使用的协议之间进行调解。图3至图5 (标号46-60)示出了本发明中所需步骤的序列,每个图都对应在分担 并行查询执行中的相继阶段。这里阶段I表示应用的部署、阶段II表示数据初始化、以及 阶段III表示在HPC平台上执行分担的任务,并将结果返回到数据库服务器。图3(标号对_3幻描述了部署阶段或者阶段I,其中在步骤1中,本应用服务特定 领域中的技术人员提供了所期望应用服务的特定软件实现,该软件实现嵌入在将通用服务 封装到应用服务的服务包装器内,如下文进一步描述。在步骤2中,利用在并行计算机上独 立计算节点的集合上执行的适当并行库和运行时环境,将此应用服务(连同服务包装器) 编译成针对并行计算机上独立节点程序的二进制代码。步骤3中,在确定此服务节点分配 器组件自从某些先前的实例化起没有被初始化和运行之后,在并行计算机主机上启动该服 务节点分配器组件。注意,步骤1-3由本领域技术人员来执行,所述人员具有该应用的特定 背景和在并行计算机上执行此应用的特定技能。步骤4中,作为应用工作流执行的一部分, 从数据库服务器接收特定请求,其中并行计算机主机上的程序加载器开启并行计算机上给 定计算节点集合上的应用服务(这通常是针对并行二进制代码的平台特定加载器,诸如针 对基于MPI应用的MPIRUN,参见http://www-unix. mcs. anl. gov/mpi)。随着应用服务被加 载到这些计算节点上,将控制转移给服务包装器,其发起消息以向主机计算机上的服务节 点分配器注册节点。服务节点分配器保持了目录和对于以这种方式部署的每个特定应用服 务是可用的计算节点的相关统计。图4(标号34-44)描述了应用服务的数据初始化阶段或者阶段II,其中在步骤1 中,接收从数据库服务器到查询分区分配器组件的用于加载目标表的请求,其中在后续阶段3中的将来的查询请求将基于该目标表来运行。可以通过将来自数据库服务器本身、或 者来自一些其他外部数据源(诸如ftp服务器)的各种源数据库表进行组合,来获得此目 标表,继而该目标表被加载到在其上初始化并且运行应用服务的节点分区的子集上。步骤 2中,查询分区分配器检测是否存在通过此表加载的现有分区,该现有分区正处于处理新的 查询或者查询集合的就绪状态。如果找到这种分区,但是因为另一查询正在该分区上运行 而使得该分区不可用,则可使用已加载到该分区上的的目标表数据,来克隆另一活动查询 分区(以便在HPC平台系统本身中以高速进行所有数据传输,而不是恢复到此数据的原始 数据库,该恢复具有较高的通信开销)。然而,如果没有找到这种分区,继而查询分区分配 器与服务节点分配器进行协商,用于分配自由应用服务节点的另一子集,并且创建新的活 动查询分区,如步骤3所示。此活动查询分区的独立应用服务节点上的服务包装器继而发 起单独的数据传输请求,以便在步骤4中从数据库服务器拷贝所需数据的互斥但完全穷尽 的行分区,在步骤5中使用数据库中继组件,这里数据分区是如在步骤6中存储在本地数据 高速缓存中(优选地,在存储器内的数据高速缓存中,其位于应用服务的服务包装器中)。 具体地,数据库中继组件可能正在并行计算机上或者并行计算机主机上运行,该数据库中 继组件用于在步骤5和6中的并行计算机的节点与中继主机之间调解数据传输和通信协议 (其可以基于MPI消息传递或者UNIX套接字类型的通信协议),以及在步骤7中的中继主 机与数据库服务器之间调解数据传输和通信协议(其可以基于用于数据库访问的JDBC协 议)。计算节点上的应用服务包装器从而向数据库中继组件传送所需的SQL查询函数,该数 据库中继组件完成查询,并且以适当的表示形式将结果集合传输回到计算节点,用于存储 到应用服务包装器中所保持的数据高速缓存中。接下来,在如下描述的随后查询执行阶段 期间,仅需要从此本地数据高速缓存读取此数据,并且应用服务利用用于此目的的特定API 对此数据进行访问。 图6 (标号6 描述了查询执行阶段或者阶段III,其中在步骤1中,通过在数据库 服务器上执行的用户定义函数而发起查询请求。此查询请求封装了在并行计算机节点上运 行的应用服务所需的所有输入参数值,包括用于执行查询的特定目标表。此查询请求的端 点是运行在并行计算机前端主机上的应用服务主机组件。在步骤2中,此应用服务主机依 次将此查询请求插入至步骤2中查询分区分配器中所保持的队列集合(为在上文阶段2中 已经分配并且分派特定目标表的每个分区保持单独的队列)。在步骤3中,查询分区分配器 最终向适合的分区提交此查询请求,并且在步骤4中等待作业完成,可以选择生成作业状 态代码并将其返回到发布应用执行请求的数据库服务器中的用户定义函数。查询字符串本 身被拷贝到在活动查询分区中每个节点的应用服务的服务包装器中分配的存储器缓冲区。 在步骤5中,将查询结果(存储在此分区中每个节点的应用服务的服务包装器中的结果高 速缓存中)聚合到并行计算机主机上的结果收集组件中,并且接下来将该聚合的结果数据 返回到数据库服务器上的始发用户定义函数,如步骤6所示。由于调用远程执行的始发用 户定义函数是表用户定义函数,或者是嵌入在表用户定义函数中,因此这些结果可以作为 复杂SQL查询工作流的一部分而进一步进行处理,也就是说,基于结果列值执行ORDER BY 或者GROUP BY操作,或者按照查询执行的全部工作流的需求,而将此结果表与其他数据表 进行联接。备选地,每个节点上的应用服务包装器还可以使用如阶段II中的数据库通信中 继,来直接地将结果插回至数据库上的特定结果表,如步骤7和步骤8所示(虽然在某些数据库平台上,通常阻止这种用户定义表函数访问数据库表,但是如果远程执行的始发用户 定义表函数被允许访问此结果表以用于生成其自身的返回表值,则此方法可以是默认的)。特定
具体实施例方式针对特定的实施方式而描述了生物信息学序列匹配应用,其提供了计算密集 型算法的良好示例,该示例可以作为数据库中用户定义程序来实现,并且从而可以从本 发明获益。具体地,考虑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)中实现。 相比于其他序列匹配算法(诸如前文所述的BLAST),Smith-Waterman算法是更为计算密集 型的算法,但是得出高敏感度相似性匹配结果,并且可以用于在比较测试中针对甚至疏远 相关的序列对而恢复匹配。在该特定实施方式中使用的商业数据库服务器平台是IBM DB29. 1版本(http:// www. ibm. com/software/data/db2),运行在双核处理器上,CPU 为 Xeon 2. 4GHz 并具有 2GB RAM存储和1000Mbit以太网接口。用于远程执行查询工作负荷的计算密集型部分的HPC平台包括包含1024个计 算节点的 IBM Blue Gene/L e-server 平台(http://www. research, ibm.com/bluegene)的 单机架,每个计算节点包括两个PowerPC 440处理器,该处理器在700MHz操作并且每个节 点具有512MB RAM存储。虽然用于IBM Blue Gene/L的程序通常利用MPI消息传递库进行 编写,在此特定使用的Blue Gene/L平台不需要任何通信库,虽然本发明不排除这种库的使 用。该通用方法可以通过本领域技术人员适用于其他并行计算机,并且例如,已经在其他平 台上实现并进行基准测试的SSEARCH算法的多线程或者共享存储器版本也可以用于获得 本发明的其他特定实施方式(例如,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)。在配置用于实现本发明的数据库平台和HPC平台的其他组合中,可能存在特定的 技术问题,然而这些技术问题可以由本领域技术人员来解决。对于在IBM DB2数据库平台 与IBM Blue Gene/L并行计算机平台组合(以及知晓的商业数据库与并行计算机平台的其 他等价组合)的情况下,目前为止还没有支持在数据库服务器与并行计算机上的独立计算 节点之间的通信的API或者程序。对于IBM Blue Gene/L,独立计算节点是仅提供在完整的 独立操作系统中可用服务的子集的无盘系统。因此,运行完全Linux操作系统并且通过局 域网连接到Blue Gene/L系统的单独IBM P-series服务器可以用于容纳本发明中的各种 组件,包括1)调度器组件,其包含了 Blue Gene/L计算节点分区的注册表,这些分区可用于 查询处理应用;2) web服务器组件,其支持从数据库服务器发起的基于SOAP的web服务调用,用于 执行查询工作流的各种组件;
3)作业提交接口组件,用于保留并且开启Blue Gene/L计算机的计算节点上的应 用;4)数据库中继组件,其保持了对于独立Blue Gene/L计算节点的一个或者多个套 接字连接,并且负责执行从这些套接字连接上的计算节点中继的各种数据库命令,并且向 发起数据库查询请求的计算节点传回这些数据库命令的结果集合或者实现代码。利用简单模式将相关FASTA序列数据库导入至DB2关系数据库中,由此对于每个 序列数据库(例如,drosophila),表中存储的数据分别包括列[id (整型)、名称(字符串)、 描述(字符串)、序列(大对象)]。这里,id字段是连续记录号,而名称(其是NCBI标识 符)和描述字段剥离自FASTA格式的每个序列的头部,利用脚本解析FASTA数据库,并且将 其插入至相应的DB2表。具有14331行的Drosophila数据库(包括Drosophila核苷酸数 据库的蛋白质编码序列转换)用于这里所描述的结果。Smith-Waterman 算法的实现是 FASTA 包中的 SSEARCH 程序(来自 http //helix, nih. gov/docs/gcg/ssearch. html),并且对于此传统代码进行改变以实现为并行计算机上 的应用服务,该改变是相当小的。修改主要入口以利用必要的端口和地址来启动节点服务 包装器,用于支持其连接至应用调度器(如图3的步骤3所示)。此节点应用服务包装器 (其包含用于保持目标库序列的适当分区的子集和相应查询结果集合,以及用于输入查询 序列的存储器缓冲器),继而负责向应用调度器注册应用服务客户端,执行目标库序列的缓 冲器更新,和针对每个新的查询请求而对此目标库运行SSEARCH算法。FASTA包已经支持用 于读取目标库序列的文件和数据库格式的扩展列表,以便用于从节点服务包装器的暂存器 访问数据的访问功能可以简单地作为另一输入源而进行添加。因此,总之所需的通用组件,除了用于支持此特定实施方式的FASTA包应用,包括 计算节点服务包装器功能,节点服务包装器暂存器的访问功能,和数据库中继组件,并且所 有这些组件通过类似于FASTA包中的SSEARCH的应用服务的广泛的类而提供重用。图6中给出了基于此特定实施方式的SQL查询的示例。此查询发起DB2用户定义 表函数ssearch_call,其具有参数列表,包括目标序列库、用于将要被匹配的输入序列的描 述符字串、输入序列自身和期望匹配的排名靠前的数量。当如所示出地从SQL查询接口调 用时,在Blue Gene/L计算节点上执行匹配和排名,并且如图2中所示返回结果。将在本专 利的最终版本中提供加速和性能测量。虽然本发明已经结合实施方式描述给出,但是本领域的普通技术人员之一将容易 地认识到可以存在实施方式的改变,并且这些改变将在本发明的精神和范围内。相应地,本 领域的普通技术人员之一可以在不脱离附加权利要求的精神和范围的情况下做出许多修 改。
权利要求
1.一种计算机系统,包括(i)高性能并行计算(HPC)平台;( )通用数据库平台;(iii)用于分配计算密集型用户定义工作负荷和相应数据视图来在所述HPC平台上执 行的装置,所述计算密集型用户定义工作负荷和相应数据视图形成针对在数据库平台上的 一个或者多个查询的工作流的部分;以及同时(iv)用于将来自在所述HPC平台上执行的所述工作负荷的结果返回到所述数据库平 台的装置,以便将这些结果合并到所述数据库查询的最终结果集合。
2.根据权利要求1所述的系统,其中当所述工作负荷包括单独查询、或者相似或者相 关查询的序列、或者同时独立查询的集合时,所述高性能并行计算系统能够在处理单元和 快速存储器方面部署更多的计算资源,以便所分配的计算密集型工作负荷可以以高效的方 式执行。
3.根据权利要求2所述的系统,其中所述高性能并行计算系统支持针对共享的存储器 或者分布式存储器消息传递应用的并行执行,从而支持通常不被数据库嵌入式用户定义程 序直接支持的编程模块。
4.根据权利要求2所述的系统,其中所述高性能并行计算系统可以利用其大的存储器 可用性来在存储器内结构中高速缓存表数据(相对于从磁盘系统将其读出),用于更快的 计算处理,以及支持由在相同数据表上的查询序列所生成的计算密集型工作负荷的序列得 以有效地执行,而不需要针对每个新的查询调用而在所述数据库服务器与所述高性能并行 计算机系统之间进行进一步数据交换。
5.根据权利要求2所述的系统,其中所述高性能并行计算系统能够创建所述数据库数 据的快速复本,以便由所述数据库服务器上的同时、独立、并行的查询的相应集合引起的同 时、独立、计算密集型工作负荷的集合可被有效地执行,没有由于需要回到所述数据库服务 器以获取所述相同数据表的额外拷贝而需要的大量通信开销。
全文摘要
本发明涉及一种在附接的高性能、并行计算平台上分配和执行数据库查询工作流的计算密集型部分的系统和方法。用于在数据库平台与执行工作负荷的高性能计算平台之间移动所需数据和结果的性能开销可以如下分摊在并行计算平台上通过精细粒度的并行性和优异的硬件性能,来加速计算密集型运算;使用并行计算平台上的存储器内的数据结构,来高速缓存针对相同数据的时间滞后查询序列之间的数据集合,以便可以在没有进一步的数据传输开销的情况下处理这些查询;通过复制并行计算平台中的数据,以便可以利用高性能计算平台的单独并行分区,来同时处理针对相同目标数据集合的多个独立查询。
文档编号G06F7/00GK102089741SQ200880106809
公开日2011年6月8日 申请日期2008年8月14日 优先权日2007年9月17日
发明者M·科赫特, R·纳塔拉詹 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1