首页> 中国专利> 在数据中心中使用的用于进行数据格式转换的系统

在数据中心中使用的用于进行数据格式转换的系统

摘要

在各种实施例中,一种设备可以被用来实现各种功能。在一些实施例中,设备可以与DBMS服务器一起使用。设备可以生成请求,而DBMS服务器可以生成结果。设备可以将结果转换为不同的格式,以返回到对应于请求的请求者。在其他实施例中,设备可以与计算机系统,该计算机系统被配置为执行诸如内容管理系统、文件系统等等之类的其他后端应用程序一起使用。在其他实施例中,设备可以从多个服务器中的第一服务器接收第一输出数据,第一输出将作为第一输入数据提供到多个服务器中的第二服务器。设备可以被配置为将第一输出数据转换为第一标记语言格式,并将第一标记语言格式转换为第二格式。

著录项

  • 公开/公告号CN1906609A

    专利类型发明专利

  • 公开/公告日2007-01-31

    原文格式PDF

  • 申请/专利权人 英特尔公司;

    申请/专利号CN200480034558.6

  • 发明设计人 卡利姆普蒂·V·拉玛奥;

    申请日2004-10-22

  • 分类号

  • 代理机构中国国际贸易促进委员会专利商标事务所;

  • 代理人付建军

  • 地址 美国加利福尼亚

  • 入库时间 2023-12-17 18:12:30

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-10-12

    未缴年费专利权终止 IPC(主分类):G06F17/30 授权公告日:20120509 终止日期:20171022 申请日:20041022

    专利权的终止

  • 2012-05-09

    授权

    授权

  • 2007-03-28

    实质审查的生效

    实质审查的生效

  • 2007-01-31

    公开

    公开

说明书

技术领域

本发明涉及处理和转换诸如可扩展标记语言(XML)、标准化通用标记语言(SGML)、超文本标记语言(HTML)之类的结构化文档,以及数据中心中的数据库和/或文件系统中的非结构化数据和文档的领域。

背景技术

随着网络变得无所不在,数据中心已经作为对计算世界的重要服务而涌现出来。一般而言,数据中心可以包括向用户提供应用程序服务的各种服务器,包括对可以在数据中心中维护的各种数据库,诸如内容管理服务、文件系统服务之类的其他应用程序服务的访问。

令人遗憾的是,各种应用程序以不同的格式和/或以不同于用户所希望的格式的格式来生成数据。此外,不同的用户可能希望有不同的数据格式。相应地,应用程序服务器、Web服务器和/或用户的计算机系统可能常常需要在各种格式之间进行转换。转换软件消耗了计算资源,降低了服务器在处理它们最初被设计处理的任务的效率。此外,当使用数据中心的服务时用户遇到的延迟可能会增大。

发明内容

在一些实施例中,提供了与执行数据库管理系统DBMS的计算机系统一起使用的设备和方法。该设备被配置为生成请求。计算机系统连接到该设备以接收请求,DBMS被配置为在一个或多个数据库中的至少一个数据库中处理请求。计算机系统被配置为以第一格式向设备返回请求的结果。设备被配置为将结果转换为第二格式,以返回到对应于请求的请求者。还提供了包括该设备和计算机系统的设备。在其他实施例中,设备可以与计算机系统,该计算机系统被配置为执行诸如内容管理系统、文件系统等等之类的其他后端应用程序一起使用。

在其他实施例中,设备和方法可以与多个服务器一起使用。设备连接到多个服务器,并可以从多个服务器中的第一服务器接收第一输出数据。第一输出将作为第一输入数据提供到多个服务器中的第二服务器,其中,第一输出数据采用不同于由第二服务器针对第一输入数据所使用的第二格式的第一格式。设备被配置为将第一输出数据转换为第一标记语言格式,并将第一标记语言格式转换为第二格式。还提供了包括该设备和多个计算机系统的设备。

在其他实施例中,设备可以实现数据中心或其他计算设施中的其他功能。例如,设备可以实现呈现引擎、XML路由器、防火墙(例如,病毒检测)等等。

附图说明

下面的详细描述参考了简要描述的附图。

图1是设备的一个实施例的方框图。

图2是图1所示的文档处理器的一个实施例的方框图。

图3是包括一个或多个设备数据中心的一个实施例的方框图。

图4是被用作数据库代理的设备的一个实施例的方框图。

图5是说明了图4所示的设备的一个实施例所使用的默认输出格式的一个实施例的图表。

图6是说明了图4所示的设备的一个实施例所使用的默认输出格式的第二个实施例的图表。

图7是说明被用作数据库代理的设备的第二个实施例的方框图。

图8是说明被用作呈现引擎说明设备的一个实施例的方框图。

图9是说明被用作数据集成交换机的设备的一个实施例的方框图。

图10是说明通过可扩展标记语言(XML)构造将源数据转换为目标数据的一个实施例的方框图。

图11是对源数据进行操作以生成目标数据的设备的一个实施例的部分的方框图。

图12是被用作XML路由器的设备的一个实施例的方框图。

图13是说明了作为病毒检测器的设备的一个实施例的操作的流程图。

尽管本发明可进行各种修改,并且还可采用其他的形式,但是,本发明的各具体实施例均以结合附图的举例的方式说明,并将在以下的说明书中进行详细描述。然而,应该理解,图形和详细描述不将本发明限制于所说明的特定形式,相反,本发明涵盖不偏离所附的权利要求所定义的本发明的精神和范围的所有修改方案、等效内容和替代方案。

具体实施方式

设备概述

现在请参看图1,该图显示了设备10的一个实施例的方框图。在图1的实施例中,设备10可以包括网络接口电路12,诸如处理器14A和14B(可选)之类的一个或多个处理器,文档处理器16以及存储器18。网络接口电路12通过一个或多个网络连接而连接到一个或多个网络。各种计算机系统(图1中未显示)也可以连接到一个或多个网络。网络接口电路12也连接到处理器14A-14B。处理器连接到存储器18和文档处理器16,而文档处理器16还连接到存储器18。在所说明的实施例中,存储器18存储了样式表编译器20、架构编译器22、一个或多个符号表24、一个或多个分析时表达式树26、指令表30、空格表32、文档类型定义(DTD)表34、表达式列表36、模板列表38,各种文档处理器数据结构39,以及可选地,还包括其他软件28。

一般而言,设备10可以被配置为可以包括在数据中心中的其他计算机系统提供一个或多个服务。下面给出的各种示例可以包括数据库代理、呈现引擎、数据集成交换机、标记语言路由器,以及防火墙,虽然这些示例不是详尽的说明。设备10可以包括用于在某些情况下根据样式表所指定的转换,将输入文档转换为输出文档的硬件/软件。在某些情况下,由设备10所处理的各种服务可以使用转换功能来实现所希望的服务。设备10可以用来从数据中心中的服务器中卸载服务,允许服务器将更多资源专用于服务器被设计用于提供的服务。如这里所使用的,术语“设备”可以是指作为在网络上安装的单元销售的硬件和(可选地)软件的任何组合。设备通常可以被设计为用于安装在具有较小的(如果有的话)配置(与诸如服务器或个人计算机之类的通用计算机系统相比)的网络上,并通常可以以相对较小的支持即可操作。如果软件包括在设备中,则软件通常预先安装在设备中(虽然在一些实施例中,可以通过网络将软件升级程序下载到设备中,也可以将更多的软件安装到设备中)。在一些实施例中,管理员可以通过网络对设备进行访问(例如,可以提供Web浏览器界面)。

如这里所使用的,术语“文档”是指具有可用于对内容进行解释的对应的已定义的结构的任何内容。内容可以被高度结构化(如XML文档、HTML文档、pdf文档、字处理文档、数据库等等),也可以是简单得如纯文本文档(其结构可以是字符流)或数据(其结构可以是以特定顺序排列的一组数据项)。下面将描述的设备10的各种应用的示例可以提供文档内容,包括请求(例如,对数据库进行访问的请求)、数据或其他文档类型。

在某些情况下,设备10可以通过网络连接接收要应用于文档的样式表、要应用于文档的架构,和/或文档本身(带有将样式表/架构应用到文档的请求)。响应应用样式表的请求,设备10可以将样式表应用到文档,并生成待通过网络传输到请求者(或由请求者指定的另一个目标)的转换的文档。在一些实施例中,设备10还可以接收对文档进行分析的请求(例如,分析为诸如针对XML的简单应用程序编程接口(API)(SAX)或文档对象模型(DOM)之类的已定义的格式)。响应应用架构(或DTD)的请求,设备10可以根据架构或DTD对文档进行验证,并对请求者生成成功消息或失败消息(指出失败)。

在其它情况下,设备10可以接收请求,并可以包括其他软件28以对请求进行解释。设备10可以基于请求生成到其他网络设备(例如,服务器)的通信,还可以使用转换功能来帮助对请求进行处理。

在一个实施例中,转换功能可以为XML文档和对于转换的对应的XML样式表语言(XSLT)而优化。下面将给出与XML和XSLT样式表相关的其他细节。XSLT基于表达式的XPath语言。正在开发的另一种基于XPath的语言XQuery,也可以用于其他实施例中。更进一步,其他实施例也可以基于任何标记语言和对应的表达式语言。一般而言,“标记语言”是可以用来定义文档的内容的结构的任何语言。标记一般可以包括标识内容的各种标记,并可以提供有关内容的本质的信息。例如,XML可以定义元素标记,这些标记可以用来描述内容的结构。此外,元素可以包括各种属性,这些属性进一步对元素进行描述或提供关于内容的补充信息。

XML文档具有分层树形结构,其中,树的根将文档标识为一个整体,文档中的每个其它节点是根的后代。各种元素、属性以及文档内容构成了树的节点。元素定义了元素所包含的内容的结构。每一个元素都具有元素名称,元素使用开始标记和结束标记(两者都包括了元素名称)将内容分隔开。一个元素还可以具有其他元素作为子元素,子元素可以进一步定义内容的结构。此外,元素还可以包括属性(包括在开始标记中,跟在元素名称后),它们是提供关于元素或元素内容的结构的详细信息的名称/值对。XML文档还可以包括将被传递到应用程序的读取XML文档、注释等的处理指令。一般而言,文档的“节点”可以包括结构性定义(例如,XML中的元素和/或属性)和/或文档内容。在一个实施例中,节点可以包括元素、属性、处理指令、注释和文本。

XSLT样式表可以被视为一组模板。每一个模板都可以包括:(i)选择源文档的树形结构中的节点的表达式;以及(ii)为源文档的每一个匹配节点指定待实例化的输出文档的结构的对应的部分的正文。将样式表应用到源文档的操作可以包括试图查找源文档中的每一个节点的匹配模板,实例化输出文档的树中的匹配模板的正文。模板的正文可以包括一个或多个:(i)输出文档中的待实例化的文本内容;(ii)从匹配节点中选择待复制到输出文档中的内容;以及(iii)待求值的语句,在输出文档中语句被实例化的结果。概括起来,待实例化的内容和待求值的语句可以被称为要在与模板匹配的节点上执行的“操作”。模板的正文可以包括一个或多个“apply templates”语句,其中,包括选择一个或多个节点并使样式表中的模板应用于所选择的节点的表达式,如此有效地将模板嵌套起来。如果查找到与应用模板语句的匹配,则所产生的模板在包括应用模板语句的模板的实例化内被实例化。模板的正文中的其他语句还可以包括待与节点进行匹配的表达式(并可以在匹配节点中对语句进行求值)。尽管这里在一个示例中可以使用XSLT样式表,但是,一般而言,“样式表”可以包括用于将源文档转换为输出文档的任何规范。源文档和输出文档可以采用相同语言(例如,源文档和输出文档可以是不同的XML词汇表),也可以采用不同语言(例如,XML到PDF等等)。样式表的另一个示例可以是为HTML和/或XML Query定义的级联样式表。

一般而言,在样式表中所使用的表达式可以包括节点标识符和/或节点的值,以及节点标识符上的指定节点标识符和/或值之间的父/子(或祖先/后代)关系的操作符。表达式还可以包括谓词,该谓词可以是用于与节点进行匹配的额外的条件。谓词是用关联的节点作为上下文节点(下面定义)进行求值的表达式,其中,表达式的结果为true(节点可以与表达式节点匹配)或者false(节点不与表达式匹配)。如此,表达式可以被视为待与文档的树进行匹配的节点的树。在XPath中,在XSLT中所使用的表达式语言可以在“context node”的上下文中对表达式进行求值(即,表达式可以相对于上下文节点,指定表达式中的节点名称作为上下文节点的祖先、后代、父母或子女以及与其他节点名称的关系)。如果通过对表达式的求值选择给定文档节点,则该给定文档节点可以满足表达式。即,表达式中的表达式节点标识符匹配了给定文档节点标识符或与表达式中所指定的给定文档节点具有相同关系的文档节点标识符,在表达式中所使用的任何值都等于与给定文档节点相关的对应值。如果一个文档节点满足给定表达式,则该文档节点也可以被称为给定表达式的“匹配节点”。在某些情况下,在本讨论的其余部分,区别表达式树中的节点与文档中的节点是有帮助的。如此,如果一个节点是表达式树的一部分,则该节点可以被称为“表达式节点”,如果一个节点是正在处理的文档的一部分,则该节点可以被称为“文档节点”。节点标识符可以包括名称(例如,元素名称、属性名称等等),也可以包括按类型标识节点的表达式构造,(例如,节点测试表达式可以与任何节点匹配,或者,文本测试表达式可以与任何文本节点匹配)。在某些情况下,名称可以属于具体的命名空间。在这样的情况下,节点标识符可以是与命名空间关联的名称。在XML中,命名空间提供了通过将元素和属性名称与由通用资源标识符(URI)所标识的命名空间名称关联来限定元素和属性名称的方法。如此,节点标识符可以是限定名(可选的命名空间前缀,后面是冒号,再后面是名称)。如这里所使用的名称(例如,元素名称,属性名称等等)可以包括限定名。

在所说明的实施例中,可以以如下方式执行将样式表应用到文档的操作。样式表编译器20可以包括在处理器14A-14B中的某一个处理器上执行的软件(即,多个指令),以将样式表编译为供文档处理器16使用的一个或多个数据结构和代码。文档处理器16可以将数据结构应用于源文档并生成输出文档。

具体来说,在一个实施例中,样式表编译器20可以向节点标识符分配序列号,以便可以由文档处理器通过比较数字,而不是节点标识符(将涉及字符串比较)来执行表达式求值。样式表编译器20可以将节点标识符与序列号的映射存储在符号表24中。此外,样式表编译器20还可以从样式表中提取表达式,并生成表达式树数据结构,供文档处理器用于进行表达式匹配(例如,分析时表达式树26)。更进一步,样式表编译器20还可以用为每一个匹配表达式执行的指令生成指令表30(在一个实施例中,也可以是待执行以对运行时谓词进行求值的指令)。指令表中的指令,当由文档处理器16执行时,可以导致执行被定义为当匹配表达式时执行的操作。在一些实施例中,指令可以包括待执行的操作(即,在指令和操作之间可以有一对一的对应关系)。在其他实施例中,至少一些操作可以通过执行两个或更多指令来实现。样式表编译器20还可以生成定义如何处理(例如,保留、剥离等等)源文档中的各种空格的空格表32,表达式列表36和模板列表38。

架构编译器22可以类似地包括在处理器14A-14B中的某一个处理器中执行的指令。架构编译器22可以编译架构或DTD以生成一个或多个符号表24(用序列号代替节点标识符)以及DTD表34。一般而言,DTD或架构可以包括允许的文档结构和必需的文档结构两种结构的定义。如此,文档的作者可以用DTD和/或架构来描述有效文档的必需的和允许的结构。在某些情况下,DTD或架构还可以包括属性的默认值。在一个实施例中,DTD/架构可以包括各种信息:用于代替文档中的实体引用的实体声明,给定元素的对于有效文档是必需的属性的属性,可以不必在文档的给定元素中指定的属性的属性默认值,文档的结构的要求(例如,某一子元素的必需的最小/最大/具体数量等等),以及文档的允许的结构的定义。DTD表34可以包括实体引用替换的表,必需的属性的表,属性默认值的表,以及标识允许的结构(如果适用的话,还有必需的结构)的骨架树。

文档处理器16可以包括用于对文档进行分析并将文档节点与分析时表达式树中的表达式节点进行匹配的硬件电路。即,用于对文档进行分析并将文档与表达式节点进行匹配的硬件电路,可以执行这些操作,而不执行任何软件指令。对于每一个表达式,硬件可以生成存储了匹配文档节点的分析的内容和指示的各种数据结构。然后,对于该给定表达式的每一个匹配文档节点上的给定表达式,硬件可以执行来自指令表30的指令,生成结果,然后,将这些结果组合起来,以产生输出文档。下面提供了一个实施例的其他细节。

如上所述,在所说明的实施例中,以软件实现样式表编译器20和架构编译器22,以硬件实现文档处理器16。在一些实施例中,当发出转换请求并提供文档时,设备10的性能的关键因素可以是对文档的处理。即,在很多情况下,与正在处理的文档数量相比,样式表和/或架构可以相对不太频繁地改变。在改变样式表(改变为更新的样式表或不同的样式表)之前,一个给定样式表可以应用于多个文档(例如,至少大约数十个文档)。对于架构和将向其应用架构的文档,类似的关系也成立。相应地,从样式表/架构(使用软件)将相对不变的信息捕获到可以有效地通过专用的自定义硬件访问的数据结构中,可以提供高性能的解决方案。此外,在一些实施例中,以硬件进行样式表/架构编译,可以提供实现不同的样式表/架构语言和/或实现语言规范改变的灵活性,而不需要改变自定义硬件。例如,XSLT、XPath和XML架构仍在发展,将来会向这些语言中添加新的功能。可以使编译器处理这些新的功能。可以预先提供要使用的样式表/架构,如此,编译样式表/架构的时间可以不那么要求严格了。然而,在其他实施例中,样式表编译器20和架构编译器22中的某一种或两者都可以以硬件来实现,也可以以硬件和软件的组合来实现。

网络接口电路12可以处理网络连接上的低级别的电子方面的和协议方面的细节内容,并可以将接收到的数据包传递到处理器14A-14B进行处理。可以使用任何网络类型。例如,在一些实施例中,网络连接可以是千兆以太网连接。可以依照要求提供一个以上的连接,以达到给定的带宽级别和/或在网络连接中提供冗余。

处理器14A-14B可以包括任何处理器类型。例如,在一个实施例中,处理器14A-14B可以是PowerPC网络处理器。在其他实施例中,处理器14A-14B可以实现其他指令集体系结构,如ARM、英特尔的IA-32,MIPS等等。

可以使用任何互连来将处理器14A-14B、文档处理器16以及存储器18连接起来。除了处理器14A-14B和文档处理器16两者与存储器18建立的连接之外,处理器14A-14B还可以连接到文档处理器16。例如,在一个实施例中,处理器14A-14B可以使用一个或多个外围组件互连快速(PCI-X)总线连接到文档处理器16。

值得注意的是,在某些情况下,DTD、架构或样式表可以嵌入在文档中(要么直接要么作为指向架构或样式表的指针)。在这样的情况下,可以从文档提取DTD、架构或样式表,并按为单独提供的架构或样式表描述的方式进行处理。

存储器18可以包括任何易失性或非易失性存储器类型。例如,存储器18可以包括一个或多个RAM(例如,SDRAM、RDRAM、SRAM等等),诸如闪速存储器或电池供电的RAM之类的非易失性存储器,诸如磁盘或CD-ROM之类的磁性或光存储器等等。存储器18可以包括可单独地访问的多个存储器(例如,只能让处理器14A-14B访问的一个分区或多个分区,以及只能让文档处理器16访问的另一个分区或多个分区)。

图1说明了存储在存储器18中的样式表编译器20、架构编译器22,以及其他软件28。一般而言,样式表编译器20、架构编译器22,和/或其他软件28可以在任何计算机可访问的介质上编码。一般而言,计算机可访问的介质可以包括可供计算机访问的任何介质,用来向计算机提供指令和/或数据。例如,计算机可访问的介质可以包括诸如磁性或光学介质之类的存储介质,例如,磁盘(固定或可移动)、CD-ROM或DVD-ROM,易失性或非易失性存储器介质,如RAM(例如,SDRAM、RDRAM、SRAM等等),ROM、闪速存储器等等,以及通过传输介质可访问的介质,或通过诸如网络和/或无线链路之类的通信介质传输的诸如电的、电磁的信号或数字信号。

在一些实施例中,计算机可访问的介质可以包括在单独的计算机系统中,这种计算机系统可以执行样式表编译器20和/或架构编译器22以执行编译。由编译而产生的数据结构/代码可以传递到设备10(例如,通过网络连接传递到设备10)。

值得注意的是,尽管这里的描述可以包括其中样式表应用于文档的示例,但是,其他示例也可以包括将多个样式表应用到文档(依照要求,并行地或串行地),以及将样式表应用到多个文档(依照要求,并行地,具有上下文切换或者串行地)的情况。

下面请参考图2,显示了文档处理器16的一个实施例的方框图。在图2的实施例中,文档处理器16包括分析器电路40、表达式处理器42、转换引擎44、输出生成器46,以及验证器电路48。分析器电路40连接到表达式处理器42和输出生成器46。表达式处理器42连接到转换引擎44,而转换引擎44连接到输出生成器46。验证器48连接到输出生成器46。图2中的单元可以彼此直接连接(例如,使用单元之间的信号线),也可以通过存储器18进行连接(例如,源单元可以将待传递到目标单元的信息写入到存储器18中,目标单元可以从存储器18中读取信息)或采用两种方式连接。

分析器电路40可以接收文档,并对文档进行分析,为表达式处理器42和验证器电路48标识事件,也可以用被分析的内容生成数据结构。如果文档处理器16根据样式表转换文档,则被分析的内容可以存储在存储器18中的数据结构中,供转换引擎44使用。或者,如果文档将只被分析,则分析器电路40可以给输出生成器46提供被分析的内容,以便以SAX或DOM格式输出。分析器电路40也可以通过存储器18给输出生成器46提供被分析的内容。

在一个实施例中,分析器电路40可以从存储器18中对符号表24、DTD表34,以及空格表32进行访问。分析器电路40对文档进行分析,并生成与检测到的文档节点相关的事件。具体来说,分析器电路40将文档中的节点标识符转换为符号表24中的对应的序列号,并作为事件的一部分将序列号传输到表达式处理器42(和验证器电路48)。此外,分析器电路40为转换引擎44生成被分析的内容表,该表存储了文档的被分析的内容。

表达式处理器42从分析器电路40接收事件(标识从文档分析的文档节点),并将由分析器电路40标识的文档节点对照分析时表达式树26进行比较。表达式处理器42将每一个表达式的匹配文档节点的列表输出到转换引擎44。转换引擎44接收由分析器电路40生成的被分析的内容的数据结构和匹配文档节点的列表,并执行来自指令表30的对应的指令,以为输出文档生成结果。转换引擎44还可以对任何运行时表达式进行求值,并从模板和表达式匹配列表中消除不满足运行时表达式的文档节点。在一些实施例中,每一个指令都可以独立于其他指令,如此,可以以任何顺序执行。输出生成器46可以按顺序将结果重新组合起来,并可以将输出文档写入到存储器18中(也可以将输出文档发送到处理器14A-14B,而不经过存储器18)。处理器14A-14B可以执行软件,以读取输出文档,并将输出文档传输到请求者。

在一个特定实施例中,分析器电路40可以内联地接收文档,并且分析器电路40也可以内联地将事件传输到表达式处理器42。即,随着文档的某些部分被(例如,被处理器14A)接收和重新组合,处理器14A将文档的一部分传递到分析器电路40。如此,在处理器14A接收到整个文档之前,分析器电路40可以开始进行分析。类似地,在标识事件时,事件被传递到表达式处理器42。另一方面,被分析的内容表和模板/表达式匹配列表被通过存储器18传递(由到转换引擎44的通信上方的虚线椭圆表示)。

验证器电路48还可以接收由分析器电路40发送的事件,并可以应用架构/DTD(如骨架树和DTD表34所表示的),并可以判断文档是否有效,如架构中所指出的。如果文档有效,则验证器电路48可以生成成功消息,以传输到输出生成器46。如果文档无效,则验证器电路48可以生成失败消息(并指出失败的理由),并可以将失败消息传输到输出生成器46。输出生成器46可以将消息存储到存储器18中(并且处理器14A-14B可以随后将消息传输到请求者)。

数据中心概述

现在请参看图3,该图显示了说明其中设备10可以用于各种目的数据中心的一个实施例的方框图。数据中心可以连接到因特网或任何其他所希望的网络(例如,局域网(LAN)、城域网(MAN)、广域网(WAN)、无线网络等等,或上述网络的任何组合)。数据中心可以包括防火墙50(在一些实施例中,可以包括设备10的一个或多个实例)、一个或多个路由器52(在一些实施例中,可以包括一个或多个设备10的一个或多个实例)、诸如Web服务器54A-54B之类的Web服务器、一个或多个数据集成交换机56(在一些实施例中,可以包括设备10的一个或多个实例)、诸如应用程序服务器58A-58B之类的应用程序服务器、数据库代理60(在一些实施例中,可以包括设备10的一个或多个实例),以及运行关系数据库管理系统(RDBMS)的服务器62。

图3所示的连接可以是逻辑的。即,图3中显示了各种逻辑通信路径。如此,防火墙50可以在逻辑上连接到路由器52,而路由器52可以在逻辑上连接到Web服务器54A-54B(潜在地,连接到应用程序服务器58A-58B)。数据集成交换机56可以在逻辑上连接到Web服务器54A-54B和应用程序服务器58A-58B。应用程序服务器54A可以在逻辑上连接到数据库代理60,而该数据库代理60又在逻辑上连接到RDBMS服务器62。图3所示的各种设备可以在物理上连接到网络(例如,LAN、WAN、MAN、无线网络等等,或其组合),可以连接到在地理位置上靠近的或在地理位置上分散的多个单独的网络。示范性网络可以包括以太网、令牌环网等等。

防火墙50可以保护数据中心免受未经授权的访问/来自因特网或其他网络的攻击。在一些实施例中,可以在防火墙50内实现设备10,以检测被提供到数据中心的文档中的病毒。下面将参考图13描述示范性实施例。

路由器52可以接收穿过防火墙的数据包,并可以在数据中心内将数据包路由到适当的接收器(例如,Web服务器、应用程序服务器等等)。在一些实施例中,设备10可以被用作XML路由器,路由XML数据包。下面将参考图12描述示范性实施例。

诸如Web服务器54A-54B之类的Web服务器一般可以负责响应来自外部网络(例如,因特网或其他网络)的对Web内容的请求提供Web内容(例如,Web页面)。在某些情况下,如果Web内容的一部分是从应用程序(如RDBMS)提取的,则Web服务器可以与应用程序服务器进行通信。

诸如应用程序服务器58A-58B之类的应用程序服务器被配置为提供应用程序服务。一般而言,应用程序服务器在数据中心中的后端应用程序(例如,RDBMS、内容管理系统、文件系统等等)和发出请求的用户(例如,从因特网或其他网络)之间提供了接口。

如上所述,在某些情况下,Web服务器54A-54B可以与应用程序服务器58A-58B进行通信,反之亦然。然而,在某些情况下,由一个服务器输出的并发往另一个服务器的数据的格式可能不与该另一个服务器预期的格式匹配。数据集成交换机56可以用来将由源服务器输出的数据格式转换为目标服务器所需的格式。在一些实施例中,设备10可以被用作数据集成交换机56。下面将参考图9-11讨论示范性实施例。

一般而言,如这里所使用的,“服务器”可以包括计算机系统,该计算机系统可以包括用于提供分配给服务器的服务的软件。

所显示的实施例中的应用程序服务器58A被配置为向RDBMS服务器62提供应用程序接口。然而,在某些情况下,应用程序服务器58A可以被配置为以不同于RDBMS服务器62被配置为通信的方式与RDBMS服务器62进行通信。例如,应用程序服务器58A可以将数据库视为XML,而数据库可以具有关系数据格式。在另一个实施例中,数据库可以存储XML对象,其中,对象的内容是对应用程序有意义的数据,但是,应用程序服务器58A可以数据的关系数据格式化输出(例如,记录,每一个记录都具有多个信息列或信息字段)或其他格式。

数据库代理60可以作为“前端”包括到RDBMS服务器62。数据库代理60可以以应用程序服务器58A预期的方式与应用程序服务器58A进行通信,并可以以RDBMS服务器62预期的方式与RDBMS服务器62进行通信。如此,数据库代理60可以将通信从一种格式转换为另一种格式。在一些实施例中,设备10可以被用作数据库代理60。下面将描述参考图4-7示范性实施例。

RDBMS服务器62执行RDBMS。尽管所显示的实施例可以实现关系数据库(其中,记录存储在各种相关的表中,基于不同的字段,搜索数据库以查找具体记录的过程具有灵活性),但是,如果希望,其他实施例可以实现非关系数据库(例如,平面文件数据库)。示范性RDBMS可以包括诸如Oracle、DB2、等等之类的结构化查询语言(SQL)数据库。一般而言,如这里所使用的,数据库管理系统(DBMS)可以包括允许向数据库中输入数据,允许搜索数据库,组织数据库中的数据等等的软件。RDBMS是关系数据库的DBMS软件。

在其他实施例中,服务器可以执行内容管理系统(该内容管理系统可以管理由多个用户对内容的访问和更新,其中,内容可以包括软件源代码、文档,或任何其他数据文件),文件系统等等,代理60可以被用作类似于数据库代理的前端。

值得注意的是,尽管在图3中的各种位置显示了设备10,但是,依照要求,各种实施例可以在一个或多个所显示的位置中的任何位置实现设备10。此外,尽管是在数据中心的上下文中显示图3中的设备10的应用程序,但是,每一个应用程序都可以在数据中心的外面在其他环境中使用。

设备应用程序

下面请参考图4-13,比较详细地显示了设备10的各种应用程序。

图4显示了被用作RDBMS服务器62的数据库代理60的设备10的一个实施例。数据库代理60包括设备10,可选地,还可包括样式表70和72。设备10可以用于接收来自请求者的请求74(例如,从应用程序服务器58A),并可以被配置为向RDBMS服务器62生成对应的请求76。RDBMS服务器62可以以请求的结果78作出响应,设备10可以接收该结果78,并可以将其转换为应用程序服务器58A所希望的格式的结果80。可选地,输入样式表70和/或输出样式表72可以由设备10使用。

由设备10接收的请求可以是任何格式。例如,如果应用程序服务器58A将数据库视为XML数据库,则请求可以是XPath表达式。设备10可以将XPath表达式转换为SQL请求,可以将SQL请求传输到RDBMS服务器62。输入样式表70可以用于此转换。或者,软件28可以接收XPath表达式,并可以为每一个表达式生成对应的SQL语句。在其他实施例中,来自应用程序服务器的请求可以是样式表的形式,该样式表包含几个将应用于数据库的XPath表达式。在一些实施例中,可以作为请求74的一部分包括输入样式表70。

或者,请求可以是对数据库进行访问的一个或多个SQL语句。在此情况下,设备10可以将SQL语句传输到RDBMS服务器62。在一些这样的实施例中,来自DBMS服务器62的结果78仍可以由设备10转换为结果80的另一个所希望的格式。在其他实施例中,可以以另一种格式提供请求,输入样式表70可以用来将输入格式转换为一个或多个SQL语句。

设备10可以将SQL语句传输到RDBMS 62。例如,软件28可以被配置为传输语句,无论它们是从请求者直接接收到的还是被设备10由从请求者接收到的输入请求生成的。RDBMS服务器62对请求76进行处理,并以关系格式提供结果78。例如,结果78的格式可以表格形式:由SQL语句产生的记录的表。每一个记录都可以具有一组列或字段,如由RDBMS服务器62进行管理的数据库中所定义的。具体来说,至少一个列可以包含数据库的主键。一般而言,“键”可以是数据库的可以用来对数据进行排序的字段。“主键”可以是在数据库中的每一个记录中具有唯一值的键。在某些情况下,主键可以是记录中的一个列。在其它情况下,主键可以是记录中的两个或更多列的组合。

设备10可以将结果78从RDBMS 62的输出格式转换为结果80的所希望的格式。在一些实施例中,输出样式表72可以用来指定所希望的格式。在其他实施例中,设备10可以支持默认输出格式。例如,可以支持图5和6中所显示的默认XML格式。其他实施例可以支持任何标记语言的默认格式,或采用任何其他所希望的格式。

图5显示了每一个记录都在一个列中包括一个主键的情况下的默认格式82的一个实施例。对于此实施例,主键被映射到XML元素。记录的每一个列或字段都映射到元素的属性(例如,Attr1等于记录的列1中的值,Attr2等于记录的列2中的值,等等,直到AttrN等于记录的列N)。

图6显示了每一个记录都包括一个主键(该主键是两个或更多列的组合)的情况下的默认格式84的一个实施例。对于此实施例,创建了一个父元素。类似于图5的实施例,父元素可以包括记录中的每一个非主键列的属性。此外,父元素还可以包括子元素。每一个子元素都可以是主键的某一列。

在一些实施例中,设备10可以支持预先定义服务。每一个服务都可以加载到设备10上,并可以包括当调用服务时将被传输到RDBMS服务器62的SQL语句。服务可以指定使服务被调用的一个或多个触发条件,设备10可以监视触发条件以调用服务。或者,外部事件可以用来调用服务,或者可以由用户传输显式的调用。在某些情况下,服务也可以指定结果的接收者,该接收者可以被视为对数据库的访问的请求者。服务可以包括输出样式表72或输出结果格式的另一种规范。在一些实施例中,图1所示的软件28可以包括支持预先定义的服务的软件。

类似于图4的实施例的实施例可以被用作内容管理系统或文件系统的代理。

图7显示了被用作RDBMS服务器62的数据库代理60的设备10的第二个实施例。数据库代理60包括设备10,可选地,还可包括样式表70和72。类似于图4的实施例,设备10可以用于接收来自应用程序服务器58A的请求74,并生成对应的请求76(或者,可以使用设备10上的服务,代替接收请求74)。也类似于图4的实施例,RDBMS服务器62可以返回结果78,设备10可以将结果78转换为应用程序服务器58A所希望的结果80。可以可选地使用样式表70和72。在一些实施例中,可以使用上文参考图4所描述的预先定义的服务。

在图7的实施例中,在RDBMS服务器62中显示了数据库86,数据库存储了诸如XML对象88A-88B之类的XML对象。其他实施例可以包括其他标记语言对象。如这里所使用的,标记语言对象可以是完整的标记语言结构。每一个标记语言对象都可以依照要求包含一个记录、多个记录,或记录的一部分。数据库86可以作为记录或记录的列来存储XML对象。

相应地,结果78可以包括来自数据库86的一个或多个XML对象。输出样式表72可以指定将XML对象转换为结果80的所希望的结果格式。例如,所希望的格式可以是采用关系格式(例如,记录的表)的XML对象内部的记录。或者,格式不同于存储在数据库86中的格式的XML可以是所希望的格式。在其他实施例中,可以使用任何其他格式。

在一些实施例中,请求74可以包括要应用于数据库86的一个或多个SQL语句,以生成结果78,设备可以将SQL语句不作修改地传递到RDBMS服务器62。在一些实施例中,请求74可以包括样式表70和/或72中的某一个样式表或两者。

在其他实施例中,数据库86可以以关系形式存储XML数据(例如,各种元素和属性上的索引表等等),而不是作为数据库中的对象。数据库代理60仍可以在这样的实施例中用于从数据库86提供输出数据的转换。

图8说明了被用作呈现引擎90的设备10的一个实施例。呈现引擎90包括设备10和要应用于输入文档的一个或多个样式表92,以便生成输出文档。输入文档可以是任何格式,并且,输出文档也可以是任何格式。例如,格式可以包括:电子邮件;字处理器格式,如Microsoft Word;电子表格格式;可移植文档格式(PDF);各种标记语言格式,如SGML、HTML、XML等等;postscript格式;等等。

一般而言,呈现引擎90可以提取一个或多个输入文档的部分或全部,并从所提取的部分构建一个或多个输出文档。然后,输出文档被返回到请求者。在一些实施例中,可以用应用样式表92的请求来传输输入文档。在其他实施例中,请求和/或样式表可以标识文档(例如,利用统一资源定位器(URL)),设备10可以获取文档)。

在一些实施例中,类似于上文对数据库代理60的讨论,设备10可以支持加载到设备10的预先定义的服务。服务可以定义要应用的输入文档、输出文档,以及样式表。在一些实施例中,如果将生成一个以上的不同的输出文档,则呈现引擎90可以缓存输入文档,并单独地应用每一个样式表以生成对应的输出文档。

图9是显示了图3中所显示的数据中心的一部分的一个实施例的方框图。在图9中,显示了应用程序服务器58A-58D,以及使用设备10的数据集成交换机56。在其他实施例中,也可以包括诸如图3中的Web服务器54A-54B之类的Web服务器。

每一个应用程序服务器58A-58D可以被配置为以各种格式输出数据和输入数据。例如,应用程序服务器58A可以以格式1输出数据和输入数据。类似地,应用程序服务器58C可以以格式4输出数据和输入数据;应用程序服务器58D可以以格式5输出数据和输入数据。在某些情况下,一个给定应用程序服务器输出数据格式和输入数据格式可以不同(例如,应用程序服务器58B以格式2输出数据,并以格式3输入数据)。由各种应用程序服务器58A-58D所使用的格式可以彼此不同。如此,当应用程序服务器58A-58D输出将被作为输入数据提供到另一个应用程序服务器58A-58D的数据时,数据集成交换机56可以将数据从源应用程序服务器的输出格式转换为目标应用程序服务器的输入格式。

具体来说,设备10可以将输出格式转换为输入格式,并以XML作为中间格式。即,设备10可以将数据从源格式转换为XML,从XML转换为目标格式。对于每一次转换,可以使用一对样式表,一个从源格式转变成XML的样式表,另一个从XML转变成目标格式的样式表。

在一些实施例中,源数据可以包括一组以由源数据格式决定的方式排列的单独的数据项(例如,数据结构,或数据项的有序集合,或任何所希望的结构的文档,如:电子邮件;字处理器格式,如MicrosoftWord;电子表格格式;可移植文档格式(PDF);postscript格式;数据库格式;电子数据交换(EDI)格式;等等)。源-到-XML样式表可以应用于源数据项,以生成对应于源数据项的一个或多个XML构造,然后,XML构造可以应用于XML-到-目标样式表,以生成对应的目标数据项。可以独立于其他源数据项到XML构造的转换,来执行将XML-到-目标样式表应用到XML构造的操作。例如,在为至少某些其他源数据项生成XML构造之前,可以生成目标数据项。以另一种方式来看,在完成将源-到-XML样式表应用到所有源数据项之前,可以开始应用XML-到-目标样式表。

在一些实施例中,在通过第一样式表完成所有数据项之前将两个样式表应用到数据项,可以提高数据集成交换机56的吞吐量,并可以缩短当单个数据项在应用程序服务器58A-58D之间传输时的响应时间。

图10用图表显示了将源-到-XML样式表100应用到源数据项以生成XML构造,再向该XML构造应用XML-到-目标样式表102以生成目标数据项的一个实施例。

图11是文档处理器16(图2中的)的一部分的一个实施例,显示了数据集成交换机56的一个实施例中的数据流动方向。样式表100和102两者被分别编译为分析时表达式树(在图11中分别为PET1和PET2)和转换引擎44的指令表(在图11中分别为IT1和IT2)。

源数据被提供到分析器电路40,而该分析器电路40为表达式处理器42生成源事件。源事件可以标识源数据内的数据项。表达式处理器42将源事件应用到PET1,并为转换引擎44生成源-到-XML样式表100中的每一个源数据时间生成对应的匹配。转换引擎44执行来自IT1的指令,以生成对应于给定源数据项的XML构造。转换引擎44可以从XML构造生成XML构造事件,并可以将这些事件传递到表达式处理器42。表达式处理器42可以将XML构造事件应用到PET2,为XML-到-目标样式表102中的XML构造事件生成匹配。转换引擎44可以执行来自IT2的指令,以为输出生成器46生成输出数据。

在其他实施例中,转换引擎可以将XML构造应用到XML-到-目标样式表(例如,可以完全地以由转换引擎44执行的指令来实现XML-到-目标样式表)。在其他实施例中,XML构造可以从转换引擎44传递到分析器电路40,该分析器电路40可以对XML构造进行分析,以为表达式处理器42生成XML构造事件。在其他实施例中,软件28(图1)可以用来获取由转换引擎44输出的XML构造,并为表达式处理器42生成XML构造事件。

图12是被用作XML路由器110的设备10的一个实施例的方框图。例如,XML路由器110可以包括在图3所示的数据中心中的路由器52中。XML路由器110包括设备10和样式表112。

在XML路由器110中,设备接收输入的XML文档,并输出XML输出文档和路由标签或位置。路由标签标识了XML文档的目的地。例如,设备10上的软件28可以包括将路由标签转换为目的地IP地址的软件(例如,通过表查询),并且设备10可以将输出文档路由到目的地IP地址。或者,路由标签可以被路由器52用来查询目的地IP地址,路由器52可以将XML文档路由到目的地IP地址。在又一个方案中,路由标签可以是目的地IP地址。

样式表112可以包括一组要应用于输入文档的XPath表达式,其中一个XPath表达式可以与给定输入文档匹配。对应的路由标签可以根据样式表确定。例如,在所显示的实施例中,样式表112可以包括每一个表达式(例如,Exp1、Exp2等等)的模板,匹配属性等于该表达式。模板正文可以包括输出路由标签(例如,路由标签1、路由标签2等等)。可选地,样式表还可以包括在模板正文中。如果包括了样式表,则设备10可以将样式表应用到输入文档以生成输出文档。否则,可以作为输出文档保持不变地提供输入文档。在其他实施例中,可以无条件地应用转换样式表(即,不作为与哪一个表达式进行匹配的函数)。

下面请参考图13,该图是显示了当在防火墙(例如,防火墙50)中使用时设备10的一个实施例的操作的流程图。在此实施例中,设备10可以针对DTD/架构执行文档验证,也可以执行入侵检测(例如,病毒检测)。关于这一点,病毒可以包括病毒以及蠕虫,特洛伊木马软件等等。一般而言,病毒可以包括这样的软件:怀有对软件在其上面执行的计算机系统的邪恶目的(例如,破坏计算机系统上的数据或软件,减少其他软件可以使用的计算机系统资源),具有复制到其他计算机系统,或在计算机系统上执行并怀有针对另一个计算机系统的邪恶目的(例如,启动拒绝服务攻击)的软件。

与标准的病毒检测相比,XML文档可能为病毒检测带来更多的困难。在标准的病毒检测中,将传入的位流与已知病毒的位字符串的数据库进行比较,如果传入的位流的一部分与数据库匹配,则它被确定为病毒。而对于XML文档,病毒可以分布在XML文档中。例如,病毒的某些部分可以在不同的元素中。当元素被组合起来(例如,通过样式表对文档的处理)时,就产生了病毒。更进一步,病毒可以部分地包括在XML文档中,并部分地包括在对应的DTD/架构中(例如,在实体引用或属性默认值中)和/或要应用于XML文档的样式表。如此,上述没有一个包含隔离中的病毒,但是,通过利用DTD/架构和/或样式表来处理XML文档,可以创建病毒。另一种复杂情况,XML文档、DTD/架构,以及样式表可能在不同的时间到达,如此,使得分布到它们中的病毒难以检测到。攻击者甚至可以编写XML文档,当使用现有的有效DTD/架构和/或样式表来对这种XML文档进行处理时,就会产生病毒。

设备10可以在两步骤过程中解决产生病毒的情况。在第一个步骤中,可以根据需要使用DTD/架构对XML文档进行验证,并使用样式表进行转换。然后,可以在第二个步骤中再次将所产生的文档穿过设备10,在这种情况下,验证器48可以检查所产生的文档中的病毒。例如,如上所述,可以在病毒数据库内提供验证器48。在其他实施例中,可以应用粗糙的入侵检测级别(例如,可以检测来自一个或两个地址的通信)。

图13显示了两步骤过程。接收输入文档,(对照验证器48中的DTD/架构)检查有效性,并转换文档(使用DTD/架构和样式表)(方框120)。然后,如果将执行病毒检查(判断方框122,“是”支线),则将输出文档返回到验证器48以检查病毒(方框124)。如果检测到病毒(判断方框126,“是”支线),则设备10可以采取校正操作(方框128)。例如,可以作为校正操作删除病毒。或者,可以丢弃文档(不允许进入数据中心)或隔离在设备10中或别处,以便让管理员稍后审查。如果不执行病毒检查(判断方框122,“否”支线)或者没有检测到病毒(判断方框126,“否”支线),则可以允许文档进入数据中心(方框130)。

一旦完全理解了上述说明书,对于本领域技术人员来说,很显然,可以有很多变化和修改方案。下面的权利要求应被解释为包括所有这样的变化和修改方案。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号