复杂事件处理中对于参数化的查询/视图的支持的制作方法

文档序号:6362193阅读:167来源:国知局
专利名称:复杂事件处理中对于参数化的查询/视图的支持的制作方法
技术领域
本发明的实施例涉及数据处理系统,更具体地涉及关于具有时间语义的流数据的系统和应用。
背景技术
通常,复杂事件处理(CEP)是实时聚集来自分布式的基于消息的系统、数据库和应用的信息并且动态地应用规则以辨别否则将被忽视的模式和趋势的方法。这为公司提供跨高度复杂的、分布式、和互异的IT环境识别并且甚至预期由表面上无关的事件所代表的例外和机会的能力。CEP可以用来近实时地以高速流数据关联、聚集、丰富、和检测模式。而且,持续查询语言(CQL)语句用来处理包括事件的事件流。事件流可能被认为是〈tuple, timestamp〉对的序列,其中元组(tuple)是指数据部分。流可以具有多个元组并且时间戳(timestamp)可以定义在事件流中元组的次序。Oracle 复杂事件处理(OCEP)用来处理这样的事件流。此外,CEP应用可以具有多个查询和视图,其然后由处理器执行。任何真实世界的应用可以由数百个仅仅在像范围参数这样的特定值方面不同的查询和视图组成。在这样的情况下维护数百个查询和视图可能成为可怕的事情,因为基本查询或视图的微小的变化将导致影响数百个相关的查询和视图。使用参数化或通配符(wildcard)占位符(placeholder)的形式帮助应用开发者编写类似的查询和视图,其仅仅在小的标准方面不同。在一个实施例中,允许用户放置通配符占位符,然后其能在运行时利用值绑定。可以将参数化的查询或视图看作模板,然后其能用于不同的值。这为用户提供编写单个CQL语句的能力,该单个CQL语句可以在内部生成用于绑定中提供的不同值的多个CQL语句的。例如:SELECT symbol, AVG(price)AS average, NASDAQ AS marketFROM StockTick t RETAIN ALL EVENTSWHERE symbol=0RCLSELECT symbol, AVG(price)AS average, NYSE AS marketFROM StockTick t RETAIN ALL EVENTSWHERE symbol=JPMSELECT symbol, AVG(price)AS average, NYSE AS market
FROM StockTick t RETAIN ALL EVENTSWHERE symbol=WFC应当注意到以上查询在项目列表中的恒定值或者在WHERE条件下的恒定值方面不同。如果有数百个这样的查询,则任何商业用户可能必须编写数百个这样的查询和视图。因此,出于这些和其它原因,在本领域的改进是必要的。

发明内容
本发明的实施例包括利用CEP字符串替换将绑定变量替换为为绑定变量提供的参数集合,而不做任何种类型检查等。这不同于常规的数据库之处在于绑定变量也必须通过类型检查等。因此,在CEP上下文中的绑定变量提供更灵活的并且因此更强大的解决方案,其允许用户插入任意的谓词。因此,在CEP环境中的绑定变量可以是无类型的。本发明包括在复杂事件处理(CEP)中提供参数化的查询的方法。该方法包括提供包括一个或多个绑定变量的查询模板、提供对应于一个或多个绑定变量的参数集合、以及解析查询模板以确定一个或多个绑定变量的位置。该方法还包括扫描提供的参数集合以确定哪些参数集合将被绑定到一个或多个绑定变量、绑定被确定绑定到该参数集合的一个或多个绑定变量、以及利用对应的参数集合替换绑定的一个或多个绑定变量。该方法还包括建立确定的一个或多个绑定变量的位置的地图。利用对应的参数集合替换绑定的一个或多个绑定变量包括利用确定的一个或多个绑定变量的位置来将绑定的参数集合放置在查询模板内。提供对应于一个或多个绑定变量的参数集合或者静态或者动态地执行。在进一步的实施例中,提供对应于一个或多个绑定变量的参数集合通过利用在查询模板的部署时的配置文件来静态地执行,以及提供对应于一个或多个绑定变量的参数集合通过利用模块管理解决方案来动态地执行。该配置文件包括以下中的一个或多个:应用关联、处理器关联、查询规则、查询模板、参数集合、或绑定。该方法还包括基于包括替换一个或多个绑定变量的参数集合的查询模板实例化新查询、实例化该新查询、并且将新查询注入到CEP服务器。此外,该方法包括基于该新查询,建立查询执行计划、将该查询执行计划作为连续查询增加到运行时环境中、并且执行连续查询。该方法还包括确定对应于相同的绑定变量的多个参数集合,并且实例化对于与相同的绑定变量对应的多个参数集合的每一个的单独的新查询。在另一个实施例中,描述了用于在复杂事件处理(CEP)中提供参数化的查询的系统。该系统包括存储器和与存储器耦合的处理器。存储器在其上存储有指令集合,其在由处理器执行时,使得处理器确定出现在用于处理事件流的参数化的查询中的占位符、确定用于占位符的参数、通过用该参数替换占位符来从参数化的查询生成查询、生成该查询;并且处理事件流。系统还包括包括CQL引擎的CEP服务器。该CQL引擎实例化CEP应用。该系统还包括与CEP服务器通信的观察器。该观察器被配置为显示来自于处理的事件流的结果信
肩、O在进一步的实施例中,描述了计算机可读介质。计算机可读介质包括用于提供包括一个或多个绑定变量的查询模板、提供对应于一个或多个绑定变量的参数集合、以及解析查询模板以确定一个或多个绑定变量的位置的指令。计算机可读介质还包括用于扫描提供的参数集合以确定哪些参数集合将被绑定到一个或多个绑定变量、绑定被确定绑定到该参数集合的一个或多个绑定变量、以及利用对应的参数集合替换绑定的一个或多个绑定变量的指令。计算机可读介质还包括用于确定新的参数集合被指定用于绑定、识别在指定新的参数集合之前已经使用参数集合实例化的查询、删除在指定新的参数集合之前已经使用参数集合实例化的查询、以及利用新的用于运行期系统的参数集合实例化查询的指令。计算机可读介质还包括用于将参数集合转换为字符串、检查参数集合的字符串以确定参数集合的形式、将确定的参数集合的类型与对应的绑定变量的类型进行比较、以及响应于确定的参数集合的类型匹配对应的绑定变量的类型来验证参数集合的指令。对应的绑定变量和参数集合的类型可以包括以下中的一个或多个:整数(INT)、浮点数(FLOAT)、长整型(LONG)、大数字型(BI⑶ECIMAL)、双精度型(DOUBLE)、和字符串(STRING)。


图1是根据本发明的实施例的事件处理服务器的方框图。图2a_2c是根据本发明的实施例的在CEP中用于执行参数化的查询的流程图。图3是根据本发明的实施例的在CEP中用于执行参数化的查询的流程图。图4A-4D是根据本发明的实施例的在CEP中用于执行参数化的查询的方框图。图5A和5B是根据本发明的实施例的在CEP中用于执行参数化的查询的方框图。图6是根据本发明的实施例的在CEP中用于执行参数化的查询的用户界面。图7是根据本发明的实施例的可以使用的系统环境的简化方框图。图8是根据本发明的实施例的可以使用的计算机系统的简化方框图。
具体实施例方式在下面的描述中,为了解释的目的,阐述许多细节以便提供对本发明的各种实施例的理解。但是,本领域技术人员将显然可知在没有这些细节的情况下可以实践某些实施例。本发明的各方面包括为用户提供编写在某些特定值方面不同的CEP中的查询和/或视图的容易的方式的参数化方法。例如,上述查询可以具有可以充当模板的单个参数化的查询并且随后可以提供用于那些绑定的可能值,其在内部可以生成多个查询和视图。在下面的查询中:SELECT symbol, AVG(price)AS average,:1AS marketFROM StockTick[RANGE5SEC0NDS]WHERE symbol=:2:1和:2充当占位符。在部署时或者在运行时可以将不同的值绑定到这些占位符。此外,被配置为处理这样的查询的、与处理器组件相关联的配置文件可以看起来如下:<nl:config xmlns:nl="http://www:bea.com/iis/wlevs/config/application” xmlns:xsi=,,http://www.w3.0rg/2001/XMLSchema-1nstance',>
〈processor〉
<name>myProcessor</name>
<rales>
〈rule id=nMarketQueryfl><! [CDATAf
SELECT symbol, AVG(price) AS average,:1 AS market FROM SlockTick|RANGE 5 SECONDS |
WHERE symbol =:2 ]]></rule>
</rules>
<bindings>
〈binding id="MarketQuery">
<params id-'nasORCLQucry">NASDAQ, ORCL</params>
<parair]s id-!nyjPMQucryM>NYSEr JPM</params>
<params id-fny WFCQucr\;M>NYSE, WFC</params>
</binding>
</bindings>
〈/processor〉
</nl:config>在上述示例中,MarketQuery CQL查询包括两个占位符:一个在SELECT子句中,另一个在WHERE子句中。在此实施例中,在配置文件本身中也包括用于这些占位符的值(或也可以在运行时期间提供它们)。〈binding id= “MarketQuery”〉元素指定在运行时将传递给MarketQuery的参数集列表。利用单个〈params〉元素指定每个参数集。因为在参数化的查询中存在两个占位符,所以每个〈params〉元素指定由逗号分隔的两个值。在运行时,在占位符被替换为对应的参数值之后,之前的参数化的查询有效地分解为下列三个查询:SELECT symbol, AVG(price)AS average, NASDAQ AS marketFROM StockTick t RETAIN ALL EVENTSWHERE symbol=0RCL —查询名称将是 MaketQuery_nasORCLQuerySELECT symbol, AVG(price)AS average, NYSE AS marketFROM StockTick t RETAIN ALL EVENTS
WHERE symbol=JPM —查询名称将是 MarketQuery_nyJPMQuerySELECT symbol, AVG(price)AS average, NYSE AS marketFROM StockTick t RETAIN ALL EVENTSWHERE symbol=WFC —查询名称将是 MarketQuery_nyWFCQuery本发明的进一步的方面包括利用Java MBean API’ s以操作参数集。在一个实施例中,可以在部署时或者运行时从客户端添加参数化的查询和视图。此外,可以提供基于Java 管理扩展(JMX)架构的MBean API的以访问或修改对应于参数化的查询或视图的绑定。客户端可以调用MBean API以便进行它。在一个实施例中,可以提供下列MBean API以支持这样的绑定:处理器 ConfigMBean AP1:bindParameters(String preparedStatementld, String paramsld, StringparamsValue)—添加用于查询或视图的参数或绑定(preparedstatementid是查询或视图的id (标识符)),paramsld是param或绑定的标识符,paramsvalue是绑定的逗号分隔的值。replaceBoundParameters (String preparedStatementld, Stringparamsld, String newParamsValue)—代替用于查询或视图的现有参数,其中preparedStatementld 是查询或视图的 id, params id 是 param 名称并且 newparamsvalue 是新的逗号分隔的值。replaceAl IBoundParameters (String preparedStatementld, String []params Ids, String [] newParamValues)—代替用于查询或视图的多个参数。阵列params ids和newParamValues的大小应当相同即,它们应当具有一对一的映射。unbindParameters (String preparedStatementld, String paramsld)—删除或解除查询或视图的特定param或绑定。unbindAlIParameters (String preparedStatementld)—删除或解除对于规则的
所有绑定。String getBoundParameters (String preparedStatementld, Stringparamld)—获得用于特定查询或视图的参数值和参数名。String [] getAlIBoundParameters (String preparedStatementld)—获得用于查询或视图的所有参数或绑定值。int getNumberOfBoundParameters (String preparedStatementld)—获得绑定到查询或视图的参数的总数。处理器运彳T时MBeans AP1:Map<String, String>getAlIParamRules ()—返回存在于处理器中的所有参数化的查询和视图的地图。密钥是查询或视图标识符并且值是对应的语句。因此,本发明的实施例允许用户编写在部署或者运行时能被绑定到不同的绑定的单个参数化的查询或视图模板。用户可以提供新的绑定,该新的绑定将在内部生成新查询并且然后运行它。此查询和视图的模板版本提供有效的方式以增加和/或移动仅仅在某些常数方面不同的查询。此外,查询和视图的这样的参数化或模板风格提供非常用户友好的方式来动态地修改/增加/删除数百个查询。它提供用于编写CQL查询的用户友好的方式,并且在创建许多相似的规则方面提供使用的便利性并且提供对这样的规则的便利的管理。本发明的进一步的方面提供用于确定出现在用于处理事件流的参数化的查询中的占位符的技术。然后可以确定用于占位符的参数。这可以在部署时被提供(例如,在如上所示的配置文件中指定)或在运行时期间被提供。然后可以通过利用参数取代占位符来从参数化的查询生成查询。如果存在用于占位符的多个参数集合,则可以从单个参数化的查询生成多个查询。然后可以将由替换生成的查询提供到被配置为生成用于查询的可执行指令的CQL引擎。然后可以执行可执行指令来处理事件流。现在转向图1,显示可以合并本发明的实施例的系统100的简化方框图。如在图1中描述的,系统100包括被配置为处理一个或多个输入的数据或事件流104、106、和108的事件处理服务器102。可以从不同的源接收流104、106、和108,所述源包括数据库、文件、消息传送服务、各种应用、诸如各种类型的传感器(例如RFID传感器、温度传感器等)的设备、自动收报机等。服务器102可以经由基于推的机制或基于拉的机制或其他机制接收流。数据或事件流是实时的事件序列。在流中可以接收多个事件。因此能认为数据流是无界数据集的流。在一个实施例中,数据流是〈tuple, timestamp〉对的序列。tuple(元组)是指流的数据部分。tuple可以被认为类似于表中的行。在流中的元组具有图式(schema)ο流可以包括多个元组。Timestamp (时间戳)定义元组在数据流中的次序。在数据流中的时间戳可以反映应用的时间概念。例如,时间戳可以由接收事件流的系统上的应用设置。接收系统可以对于由应用配置的接收给事件加时间戳,例如,如果在用来定义事件流的结构的CREATE STREAM DDL中和用来使用应用时间或系统时间作为时间戳的机制中指定。在其他实施例中,与元组有关的时间戳可以对应于发送数据事件的应用的时间。时间戳是流的图式的一部分。在流中可以存在具有相同的时间戳的一个或多个元组。在流中的元组可以被视为一系列事件并且因此该数据流也被称为事件流。因此能够认为事件流包括一系列事件,每个事件具有关联的时间戳。例如,事件流可以包括一系列来自于传感器的诸如10°、15°、20°等和相关联的时间戳的温度读数。为了本申请的目的,可交替地使用术语“元组”和“事件”。系统100包括被配置为处理事件流的事件处理服务器102。事件处理服务器102可以接收一个或多个事件流。如图1所示,事件处理服务器102接收流104、106、和108。每个事件流包括一个或多个事件。在具体的时间点处由服务器102以序列接收流中的事件。服务器102被配置为对输入的流执行各种类型的处理。根据本发明的实施例,服务器102被配置为根据由服务器102接收的事件流中的事件检测输入的事件流中的模式。在一个实施例中,当服务器102接收事件之时,服务器102执行模式匹配,而不对被分析的流的事件做任何回溯处理。可以利用施加于输入的流的连续查询的类型执行模式匹配。服务器102也可以对输入的流执行其它类型的处理,诸如对输入对事件流运行其它连续查询,和其它操作。事件处理服务器的例子是来自Oracle 公司的Oracle复杂事件处理器。可替换地,MATCH_RECOGNIZE也可以用于执行模式匹配。在图1描述的实施例中,服务器102包括被配置为对于一个或多个事件流执行与模式匹配有关的处理的模式匹配模块110。如在图1中描述的,模式匹配模块110包括模式输入接口 112、类技术确定器113、自动发生器114、以及匹配器116。模式输入接口 112提供用于接收指定要在事件流中匹配的模式的信息的接口。模式输入接口 112可以提供允许输入指定要匹配的一个或多个模式的信息的图形用户接口、用于指定要匹配的模式的接口、或一些其它接口。可以由服务器102的用户指定要匹配的模式。也可以从其他源,例如从事件处理服务器102的其它组件或模块、或其它系统或应用,接收识别要匹配的模式的信息。在一个实施例中,利用正则表达式指定要被匹配的模式。正则表达式是表示要被匹配的模式的符号的字符串(也被称为相关名称或相关变量)。利用一个或多个符号建立正则表达式并且可以使用一个或多个算子。算子的例子包括但不局限于连接算子(例如,正则表达式中的符号之间的“AND”算子可以用来表示符号之间的AND关系),或算子(例如,垂直条‘ I ’在正则表达式中可以分开指不对于符号的OR条件的符号),一个或多个量词、分组算子(例如,由括号指示)等。量词的例子包括意指该量词与之相关的符号的零次或更多次出现的星号‘*’、意指该量词与之相关的符号的一次或多次出现的加号‘ + ’、意指该量词与之相关的符号的零次或一次出现的问号‘? ’、懒惰(reluctant)量词,等等。在IS0/IECJTCi/SC32 WG3:URC-nnn, ANSI NCITS H2-2006-nnn, July, 2007,Fred Zemke 等的“PatternMatching in Sequence of Rows (12)”中提供并且描述了包括用于正则表达式的相关的语法的、可以使用的算子和量词的例子,其全部内容通过引用而被合并于此以用于所有目的。过去,正则表达式已经主要用于查找字符串中的模式。在本发明的实施例中,正则表达式的能量用于在由事件处理服务器102接收的事件流中匹配模式。正则表达式提供简单的、简明的、和灵活的用于指定要被匹配的模式的方式。在图1描述的实施例中,事件处理服务器102可以接收指定要在一个或多个事件流中被匹配的正则表达式的模式信息118。在一个实施例中,可以利用模式匹配模块110的模式输入接口 112指定模式。可以利用不同的语言提供模式信息118。在一个实施例中,可以使用通常用于查询数据库的诸如SQL之类的编程语言。可以将扩展提供到SQL以表达要对于事件流匹配的模式。例如,模式信息118可以指定SQL查询,该SQL查询包括指定要在由事件处理服务器102接收的一个或多个事件流中被匹配的模式的正则表达式。Oracle支持在复杂事件处理(CEP)产品中的CQL语言(连续的查询语言)。CQL与具有用于流处理的扩展的SQL非常相似。被提出以便扩展SQL以经由正则表达式指定模式匹配的模式匹配构造(例如,在 IS0/IEC JTCi/SC32WG3:URC-nnn, ANSI NCITS H2-2006_nnn,July, 2007、Fred Zemke 等的 “Pattern Matching in Sequence of Rows (12)” 中描述的构造,其全部内容通过引用而被合并于此以用于所有目的)已被在CQL中采用,以扩展CQL,以指定堆事件流的模式匹配要求。通常,用于查询模式的模式匹配仅仅出现在单个输入流上。也可以在多个事件流上执行模式匹配,例如利用CQL。在一个实施例中,这可以通过首先执行所有相关的输入流的UNION (关联)来完成,其中在所有相关的输入流上进行模式匹配,其中结果定义与中间流对应的视图,并且可以在单个中间流上指定要匹配的模式。然后将模式匹配到包括在该视图中的全部流。接下来参考图2A,示出了根据本发明的实施例的在CEP中实现参数化的查询的方法200。在处理块205处,提供具有一个或多个绑定变量的查询模板。提供对应于绑定变量的(即,绑定变量将被绑定到的)参数集合(处理块210)。在一个实施例中,可以静态地(例如,经由配置文件,典型地在部署时进行)或在运行时动态地(例如,利用JMX或其它的机制)提供参数集合。因此,在运行期间使用利用JMX的动态供应,并且可以使用其来删除参数集合、提供新的参数集合等等。在处理块215,解析查询模板以确定绑定变量的位置。在一个实施例中,可以识别绑定变量,例如,通过:1、:2、:3、等等。查询内部的绑定变量的排序不必以1、2、3等等的次序。因此,可以建立确定的绑定变量的位置的地图(处理块220)。在处理块225处,可以扫描所提供的参数集合列表以确定要被绑定到对应的绑定变量的参数集合,然后可以发生绑定(处理块230)。在处理块235处,可以用参数集合替换
绑定变量。从图2A中的点‘A’移动到图2B中的点‘A’,示出了根据本发明的实施例的在CEP中实现参数化的查询的方法201。在决策块240处,确定是否存在用于相同的绑定变量集合
的多个参数集合。例如:
〈rule id=nMarketQueryn><![CDATA[
SELECT symbol, AVG(price) AS average,:1 AS market FROM StockTick [RANGE 5 SECONDS]
WHERE symbol =:2]]></rule>
</ruIes>
<bindings>
-binding id=,fMarketQuery">
<params id=,,nasORCLQueryM>NASDAQ5
ORCL</params>
<params id=MiiyJP\lQueryM>NYSE, JPM</params>
〈params id=,!nyWFCQiiery!'>NYSE, \VFC</params>这里存在三个参数集合。(每个用粗体表示)这里,如果:1,: 2,则绑定变量集合此外,如果确定参数集合的多个集合不对应于相同的绑定变量,则利用参数集合的集合生成单个新查询(处理块245)。如果确定为相同的绑定变量提供多个参数集合,则对于每个参数实例化单独的新查询(处理块250)。因此,在处理块255处,然后把实例化的查询注入到CEP服务器(将查询发送给CQL引擎)。CQL引擎然后建立查询执行计划(处理块260)并且将该查询作为连续查询增加到运行时环境(处理块265)。最后,在处理块270处,执行实例化的一个查询或多个查询。

现在转到图2C,示出了根据本发明的实施例的在CEP中实现参数化的查询的方法202。在处理块275处,可以对于绑定参数指定新参数(而不是旧参数)。在这样的条件下,识别已经利用旧参数实例化的查询(处理块280)。因此,从运行环境中删除利用旧参数识别的查询(处理块285)。在处理块290处,实例化利用用于运行时系统的新的参数集合的查询。可以利用相邻参数集合进行如上所述的处理。例如,如果已经创建了绑定变量位置地图,则可以不需要重复到此位置的步骤-处理可以在扫描新的参数集合并且然后执行替换之处继续。本质上,退出查询被代替为利用新的参数集合的新的实例化的查询。此外,可以将参数集合绑到包括查询模板的规则。在一个实施例中,视图定义(使用例如CQL进行)也可以使用绑定变量。在连续查询的背景下的参数化、“参数化的查询”或“查询模板”包括具有至少一个绑定变量的查询。现在转到图3,示出了用于描述根据本发明的实施例的CQL和商业查询生命周期的方法300。在方块305a处创建IT角色,其 包括项目列表、参数集合、和条件305b。此外,在块305c处,创建IT用户/商业用户分析师合作规则。在块310处,参数化查询和视图。例如,可以生成自然语言+0...1参数化的查询+0...η参数化的视图、和自动视图/查询、依赖跟踪310a。在块315处,创建用于商业分析师角色315a的商业模板。在块315b处,经由超链接等实例化新查询。因此,在块320处创建商业查询。然后,商业用户角色将查询视为单个逻辑操作320a,并且能够修改CQL查询和视图320b,以返回到CQL查询和视图305。图4A包括被永久地绑定到硬编码的值的示例查询405。图4B包括参数化的查询410、绑定415、和商业规则420,以及图4C包括模板425、参数化的视图430、和参数化的查询435。此外,图4D包括参数化的视图和查询440、模板445、和商业查询450。一个使用图4A-4D中的信息的示例如下:Filterl:(eVentName=EI, path=Pl, statName=countValue)Factl:(具有 eventName=El, path=Pl 的输入事件的 countValue)Conditionl:Factl〈1000Triggerl:Conditionl在最后30分钟发生2次或更多次。另一个示例如下:Filterl: (eVentName=EI, path like ‘*P1*,,statName=count)Factl:(具有 eventName=El 和 paths like的输入事件的 countValue)Conditionl:Factl〈1000Triggerl: Conditionl在每个不同的路径上在最后30分钟发生2次或更多次。因此,对于事件名E1、路径P1、和统计量countValue,这些查询在30分钟内2次或更多次地返回指定的统计量的和,以及指定的统计量的和小于1000的时间。现在转到图5A,示出了根据本发明的实施例的在CEP中用于实现参数化的查询的系统500。在一个实施例中,系统500可以包括CEP服务器505,CEP服务器505包括CQL引擎510和配置文件520。此外,CEP服务器505与观察器525通信。在一个实施例中,CQL引擎510 —起执行所有的查询。用于CQL引擎510的执行计划包括连接在一起的节点的集合-所有查询是执行计划的一部分并且因此是不独立的。因此,CEP字符串替换用来用为绑定变量提供的参数集合代替绑定变量,而不做任何种类型的检查等等。这不同于常规的数据库,其中绑定变量也必须通过类型检查等等。因此,在CEP上下文中的绑定变量提供更灵活的和从而更强大的解决方案,并且允许用户插入任意谓语。因此,在CEP环境中的绑定变量可以是无类型的。CQL引擎510被设置为实现多个CEP应用515a、515b、至515η。例如,可以编写多个CEP应用,每个进行不同的处理、并且它们全部能够被部署在相同的CEP服务器505上。CEP服务器505然后包括CQL引擎510并且可以具有多个部署的CEP应用(515a、515b、至515η)。观察器525是商业用户可以通过其提供参数集合的接口。而且,配置文件520与应用内的处理器有关。可以在任何时间、在部署时、在部署之前、或在部署之后创建配置文件520。然后,当CEP应用(515a、515b、或515η)在运行时间环境中时,它可以具有识别查询模板(即,具有绑定变量的查询)和要替换绑定变量的参数集合的配置文件520。图5Β示出了配置文件520的一个实施例。配置文件520可以包括文件与之关联的应用的识别520a、处理器的识别520b、规则的识别520c、查询模板520d、参数集合的识别520e、和绑定520f。可以使用配置文件的其他实施例。接下来参考图6,显示在CEP中用于参数化的查询的用户界面的实施例600。这样的用户界面的优点包括帮助改善需要以提供简单的使用。大多数商业用户不想编写查询。例如,CQL对非程序员来说是难以理解的,因此在CEP情况下,查询将由IT部门的某些人在理解商业用户的需要之后设计,并且该查询可以包括绑定变量。然后查询以易读的格式呈献给商业用户(例如,以商业用户容易理解的查询的英文版本)。该英文版本可以包括在运行时绑定到实际值的绑定参数集合(其可以经由URL链接显示)。在运行时,利用提供的将要替换绑定变量的参数值实例化新查询,并且然后将该实例化的查询注入到用于执行的CEP系统。这对用户提供使用的便利。商业用户不必关注低层CQL。图7是示出了依照本发明的实施例的可以使用的系统环境700的组件的简化方块图。如图所示,系统环境700包括一个或多个客户端计算设备702、704、706、708,其被配置为操作诸如网络浏览器、专有客户端(例如,Oracle形式)等的客户端应用。在各个实施例中,客户端计算设备702、704、706、和708可以与事件处理系统712交互。客户端计算设备702、704、706、708可以是通用的个人计算机(包括,例如,运行各种版本的Microsoft Windows和/或Apple Macintosh操作系统的个人计算机和/或膝上型计算机)、蜂窝电话机或PDA (运行诸如Microsoft Windows Mobile之类的软件并且能够进行互联网、电子邮件、SMS、Blackberry、或其他的通信协议)、和/或运行任何各种商业可用的像UNIX或UNIX的操作系统的工作站计算机(包括但不限于GNU/Linux操作系统的种类)。可替换地,客户端计算设备702、704、706、和708可以是任何其它电子设备,诸如薄的客户端计算机、能够互联网的游戏系统、和/或个人消息设备、能够通过网络(例如,下面描述的网络710)进行通信。尽管示出了具有四个客户端计算设备的示范性的系统环境700,但是可以支持任何数目的客户端计算设备。诸如具有传感器的设备之类的其它设备等等可以与系统712交互。系统环境700可以包括网络710。网络710可以是任何类型的为本领域技术人员所熟知的网络,其可以支持利用各种商业可用的协议中的任何一个的数据通信,所述协议包括但不限于TCP/IP、SNA、IPX、AppleTalk、等等。仅仅通过举例方式,网络710可以是局域网(LAN),诸如以太网、令牌环网和/或类似的网;广域网;虚拟网络,包括但不限于虚拟专用网络(VPN);互联网;内部网;外部网;公用交换电话网(PSTN);红外线网络;无线网络(例如,在IEEE802.11协议套、在本领域中已知的蓝牙协议、和/或任何其它无线协议下操作的网络);和/或这些和/或其它网络的任何组合。
系统712可以包括一个或多个可以是通用计算机、专用服务器计算机(例如,包括PC服务器、UNIX服务器、中范围服务器、大型计算机、安装在机架上的服务器等等)、服务器田、服务器群集、或任何其它合适的配置和/或组合的服务器计算机。在各个实施例中,系统712可以被适配为运行在本申请中描述的一个或多个服务或软件应用。系统712可以运行包括上述讨论中的任何一个的操作系统,以及任何市场上可买到的服务器操作系统。系统712也可以运行各种附加的服务器应用和/或中层应用中的任何一个,包括HTTP服务器、FTP服务器、CGI服务器、Java服务器、数据库服务器等等。示范性数据库服务器包括但不限于从Oracle、微软、Sybase、IBM等等可买到的那些数据库服务器。系统环境700也可以包括一个或多个数据库714和716。数据库714和716可以存在于各种位置。举例来说,一个或多个数据库714和716可以驻留于系统712的本地存储介质上(和/或驻留在系统712中)。可替换地,数据库714和716可以远离系统712,并且经由基于网络的或专用连接与系统712通信。在一个实施例集合中,数据库714和716可以驻留在本领域技术人员所熟知的存储区域网(SAN)中。同样地,可以根据情况将任何用于执行归因于系统712的功能的必需文件本地地和/或远离地存储在系统712上。在一个实施例集合中,数据库714和716可以包括关系数据库,诸如OraclelOg和llg,其被适配为响应于SQL格式的命令要求存储、更新和检索数据。图8是依照本发明的实施例可以使用的计算机系统800的简化块图。例如,在图1中系统800可以用来实现事件处理服务器102。显示计算机系统800包括可以经由总线824电子地耦接的硬件元件。该硬件元件可以包括一个或多个中央处理器(CPU) 802、一个或多个输入设备804 (例如,鼠标、键盘、等等)和一个或多个输出设备806 (例如、显示设备、打印机、等等)。计算机系统800也可以包括一个或多个存储设备808。举例来说,存储设备808可以包括诸如磁盘驱动器、光存储设备之类的设备,和诸如随机存取存储器(RAM)和/或只读存储器(ROM)之类的固态存储设备,其可以是可编程的、可闪速更新的等等。计算机系统800另外可以包括计算机可读存储介质阅读器812、通信子系统814(例如,调制解调器、网卡(无线或有线的)、红外线通信装置等等)和可以包括如上描述的RAM和ROM设备的工作存储器818。在某些实施例中,计算机系统800也可以包括处理加速单元816,其可以包括数字信号处理器(DSP)、专用的处理器等。计算机可读存储介质阅读器812此外可以被连接到计算机可读存储介质810,一起(并且可选地,与存储设备808结合)包括地表示远离的、本地的、固定的、和/或可移除的存储设备加用于暂时和/或更永久地包含计算机可读信息的存储介质。通信子系统814可以准许与网络710和/或任何其他的如上参考系统环境700所述的计算机交换数据。计算机系统800也可以包括显示为当前位于工作存储器818内的软件元件,包括操作系统820和/或诸如应用(其可以是客户端应用、浏览器、中层应用、RDBMS、等等)之类的其他代码822。在一个示范实施例中,工作存储器818可以包括可执行的代码和被用来处理事件并且执行如上所述的数据盒有关的处理的相关数据结构(诸如缓存)。应该理解计算机系统800的替换实施例可以具有与上述的许多偏离。例如,在硬件、软件(包括可移植软件,诸如小程序之类)或两者中也可能使用定制的硬件和/或可能执行特定的元件。此外,可以采用与诸如网络输入/输出设备之类的其他的计算机设备的连接。
用于包含代码或部分代码的存储介质和计算机可读介质可以包括任何适当的在本领域已知或使用的介质,包括存储介质和传播介质,诸如但不限于在任何用于存储和/或信息传输的方法或技术中实现的易失性和非易失性、可移动的和不可移动的介质,诸如计算机可读指令、数据结构、程序模块、或其他的数据,包括RAM、R0M、EEPR0M、闪速存储器或其他的存储技术,CD-ROM、数字可视化盘(DVD)或其他的光存储器、磁盒、磁带、磁盘存储器或其他的磁存储器,或任何其他可用于存储或发送所期望的信息并且可以由计算机访问的介质。尽管已经描述了本发明的具体的实施例,但是各种修改、变更、可替换结构、和等效物也涵盖在本发明范的范围内。本发明的实施例不局限于某一具体的数据处理环境内的操作,但是可以在多个数据处理环境内自由地操作。另外,尽管已经利用具体的一系列的处理和步骤描述了本发明的实施例,但是本领域设计人员来说应该清楚,本发明的范围不局限于所描述的系列的处理和步骤。此外,虽然已经利用具体的硬件和软件的组合描述了本发明的实施例,但是应该承认其他的硬件和软件的组合也在本发明的范围内。可以仅仅在硬件中、或仅仅在软件中、或利用它们的组合执行本发明的实施例。因此,以例示而不是限制的意义上考虑说明书和附图。然而,显然在不脱离在权利要求阐述的宽泛的精神和范围的情况下,可以做出增加、替换、删除、及其他修改和变化。
权利要求
1.一种在复杂事件处理CEP中提供参数化的查询的方法,该方法包括: 提供包括一个或多个绑定变量的查询模板; 提供与所述一个或多个绑定变量对应的参数集合; 解析该查询模板以确定所述一个或多个绑定变量的位置; 扫描提供的参数集合以确定所述参数集合中的哪些将被绑定到所述一个或多个绑定变量; 绑定被确定绑定到所述参数集合的所述一个或多个绑定变量;以及 用对应的参数集合替换所述绑定的一个或多个绑定变量。
2.如权利要求1中所述的在CEP中提供参数化的查询的方法,还包括建立确定的一个或多个绑定变量的位置的地图。
3.如权利要求2中所述的在CEP中提供参数化的查询的方法,其中用对应的参数集合替换所述一个或多个绑定变量还包括:利用确定的一个或多个绑定变量的位置的地图将绑定的参数集合放置在查询模板内。
4.如权利要求1中所述的在CEP中提供参数化的查询的方法,其中提供与一个或多个绑定变量对应的参数集合是静态地或者动态地执行的。
5.如权利要求4中所述的在CEP中提供参数化的查询的方法,其中提供与一个或多个绑定变量对应的参数集合通过使用在查询模板的部署时的配置文件来静态地执行的。
6.如权利要求4中所述的在CEP中提供参数化的查询的方法,其中提供与一个或多个绑定变量对应的参数集合是通过利用模块管理解决方案来动态地执行的。
7.如权利要求5中所述的在CEP中提供参数化的查询的方法,其中所述配置文件包括以下中的一个或多个:应用关联、处理器关联、查询规则、查询模板、参数集合、或绑定。
8.如权利要求1中所述的在CEP中提供参数化的查询的方法,还包括:基于包括替换所述一个或多个绑定变量的参数集合的查询模板来实例化新的查询。
9.如在权利要求8中所述的在CEP中提供参数化的查询的方法,还包括: 实例化所述新的查询;以及 将所述新的查询注入到CEP服务器中。
10.如在权利要求9中所述的在CEP中提供参数化的查询的方法,还包括: 基于所述新的查询,建立查询执行计划; 将查询执行计划作为连续查询增加到运行时环境;以及 执行该连续查询。
11.如在权利要求1中所述的在CEP中提供参数化的查询的方法,还包括: 确定多个参数集合对应于相同的绑定变量;以及 对于对应于相同的绑定变量的所述多个参数集合的每一个实例化单独的新的查询。
12.用于在复杂事件处理(CEP)中提供参数化的查询的系统,该系统包括: 存储器;以及 与存储器耦接的处理器,其中存储器在其上存储有指令集,所述指令集在被处理器执行时使得处理器: 确定出现在用于处理事件流的参数化的查询中的占位符; 确定用于该占位符的参数;以及通过用该参数替换该占位符来由该参数化的查询生成查询。
13.如权利要求12中所述的用于在CEP中提供参数化的查询的系统,其中当所述指令集进一步被处理器执行时使得处理器: 生成该查询;以及 处理该事件流。
14.如在权利要求13 中所述的用于在CEP中提供参数化的查询的系统,还包括: 包括CQL引擎的CEP服务器,其中CQL引擎实例化多个CEP应用;以及 与CEP服务器通信的观察器,其中该观察器被配置为显示来自于处理的事件流的结果信息。
15.一种在其上存储有指令集的计算机可读介质,所述指令集在被计算机执行时使得处理器: 提供包括一个或多个绑定变量的查询模板; 提供与所述一个或多个绑定变量对应的参数集合; 解析该查询模板以确定所述一个或多个绑定变量的位置; 扫描提供的参数集合以确定所述参数集合中的哪些将被绑定到所述一个或多个绑定变量; 绑定被确定绑定到所述参数集合的所述一个或多个绑定变量;以及 用对应的参数集合替换所述绑定的一个或多个绑定变量。
16.如权利要求15所述的计算机可读介质,其中当所述指令集进一步被计算机执行时使得计算机确定新的参数集合被指定用于绑定。
17.如权利要求16所述的计算机可读介质,其中当所述指令集进一步被计算机执行时使得计算机: 识别在被指定新的参数集合之前已经使用参数集合实例化的查询;以及 删除在被指定新的参数集合之前已经使用参数集合实例化的查询。
18.如权利要求17所述的计算机可读介质,其中当所述指令集进一步被计算机执行时使得计算机使用用于运行时系统的新的参数集合实例化查询。
19.如权利要求15所述的计算机可读介质,其中当所述指令集进一步被计算机执行时使得计算机: 将参数集合转换成字符串; 检查参数集合的字符串以确定参数集合的形式; 将确定的参数集合的类型与对应的绑定变量的类型进行比较;以及 响应于确定的参数集合的类型匹配对应的绑定变量的类型,验证该参数集合。
20.如权利要求19所述的计算机可读介质,其中对应的绑定变量和参数集合的类型包括以下中的一个或多个:整数型、浮点数、长整型、大数字型、双精度型、和字符串型。
全文摘要
本发明包括一种在复杂事件处理CEP中提供参数化的查询的方法。该方法包括提供包括一个或多个绑定变量的查询模板;提供与所述一个或多个绑定变量对应的参数集合;解析该查询模板以确定所述一个或多个绑定变量的位置;扫描提供的参数集合以确定所述参数集合中的那些将被绑定到所述一个或多个绑定变量;绑定被确定绑定到所述参数集合的所述一个或多个绑定变量;以及用对应的参数集合替换所述绑定的一个或多个绑定变量。该方法还包括将参数化的查询的所有信息注入到系统中,并且一个模板/参数化的查询被配置为全部运行它们。
文档编号G06F17/30GK103189866SQ201180053021
公开日2013年7月3日 申请日期2011年9月16日 优先权日2011年9月16日
发明者P·杰恩, V·舒克拉, A·斯里尼瓦桑, A·德卡斯托阿尔维, E·希奥 申请人:甲骨文国际公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1