CN101246486A - 用于改进的表达式处理的方法和装置 - Google Patents
用于改进的表达式处理的方法和装置 Download PDFInfo
- Publication number
- CN101246486A CN101246486A CN200810005453.8A CN200810005453A CN101246486A CN 101246486 A CN101246486 A CN 101246486A CN 200810005453 A CN200810005453 A CN 200810005453A CN 101246486 A CN101246486 A CN 101246486A
- Authority
- CN
- China
- Prior art keywords
- template
- evaluation
- parsing
- message
- expression
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
- Document Processing Apparatus (AREA)
Abstract
提供了用于改进的表达式处理的方法和装置,诸如用于有效处理通讯网络中的消息选择过滤器的方法和装置。在很多通讯系统中,消息选择过滤具有显著的处理开销。这包括在准备求值中解析和准备消息选择过滤器,以及求值本身。在包括解析和包括重复样式的表达式的准备处理的系统中(诸如在很多JMS环境中),为了得到改进的性能,可以对传统处理实施基于模板的简化。本发明使用所存储的解析模板来解析诸如所接收的数据处理指令之类的输入队列。解析被用于标识第一类型的表达式,然后可以通过使用与该类型的表达式关联的所存储的求值模板来暗中优化该第一类型的表达式。
Description
技术领域
本发明涉及用于改进的表达式(expression)处理的方法、装置和计算机程序,用于诸如有效处理通讯(messaging)网络中的消息选择过滤器。
背景技术
通常使用面向消息中间件(MOM)用于在可能在分布式、不同种类的网络中远程数据处理系统上运行的应用程序之间传递数据。该中间件可以遮蔽(shield)应用程序以避免大量的路由复杂性和大量的为了成功传递所需的格式转换,以及实现恢复特征和其他可靠性特征。
一个建立得很好的通讯模型是异步点对点通讯,在该异步点对点通讯中,最初由发送器应用将消息放置到由消息处理程序管理的队列上,该消息处理程序对于发送器而言是本地的。然后,由交互操作的信息处理程序使用消息头中的信息来跨越网络传递该消息,并将该消息放置到目标应用的输入队列上;然后,当准备好处理消息时,目标应用取回该消息。点对点通讯的优点是异步通信的不阻碍特性(在发生消息传递的同时,发送器和接收器都可以进行其他任务;当发送器发送消息时,不需要接收器是可用的;并且当目标接收器接收消息时,不要求发送器是可用的)。商业可用的异步点对点通讯产品的例子是来自IBM公司的WebSphere MQ家族的产品。对于通讯概念的介绍,读者参考IBM红皮书“IBM WebSphere MQ v6 Fundamentals”,IBM文件号SG24-7128-00,2005年12月。(IBM和WebSphere是国际商业机器公司的注册商标。)
另一个建立得很好的通讯模型是发布/订阅,在发布/订阅中,如果多个订户每个都登记了诸如具体消息的他有兴趣接收的发布物,则可以将发布的通讯到这多个订户。如果发布者将其发布物发送给发布/订阅消息代理,并且订户使用代理登记了他们的要求(一般指定感兴趣的主题,其中代理可以将这些感兴趣的主题与发布的消息头中的主题信息比较),则发布者和订阅者不需要彼此标识。与底层消息队列关联地使用一些发布/订阅消息代理。IBM公司的WebSphere中间件产品家族包括发布/订阅通讯产品,如在2006年12月的发布物“IBM WebSphere Message Broker Version6 Release0-Introduction”和2006年12月的“IBM WebSphere Message Broker Version6Release0-Publish/Subscribe”中所述的,这些文件是可从IBM公司获得的。
包括IBM公司的WebSphere产品家族中的产品在内的很多商业可获得的MOM产品实现Java消息服务(JMS)。JMS是定义了用于在MOM客户端之间发送消息所使用的API的(在由Sun Microsystem公司定义的Java公共处理下开发的)Java规范。JMS允许通过对消息属性和消息头信息进行过滤来选择消息。JMS允许在设置头和过滤器时的很大灵活性,因此JMS消息处理器(handler)需要能够支持这种灵活性。因为需要能够处理自定义(custom)消息头字段和过滤器,在JMS环境中还不能以优化格式来准备和保存过滤器表达式。部分地由于该原因,没有对典型的JMS实施方式优化成高性能,并且具体地,解析和准备新的过滤器表达式的任务对性能有负面影响。下面更详细说明。(Java是Sun Microsystem公司的注册商标。)
Philip Rousselle的“Implementing the JMS Publish/Subscribe API”,Dr.Dobb’s Journal,27卷,第4期,2002年4月,28-32页说明了消息过滤的管理是JMS发布/订阅中间件性能的重要因素。Rousselle描述了Presumo JMS设计,其集中于有效地管理大过滤器并优化消息选择过滤器求值(evaluation)。结果得到了递归的JMS过滤器解析器,其检测一组过滤器中的公共元素,并用使能有效求值的方式来组合过滤器表达式。但是,在很多使用JMS的情况下,过滤器求值步骤不是消息过滤处理中唯一重要的性能。可以将用于消息过滤而实施的典型处理划分成几个步骤,包括:
1.解析过滤器以提取对于消息过滤有用的信息;
2.准备用于有效过滤器求值的过滤器(例如,将其从类似SQL的语法转换成新的格式);
3.解析所接收的消息的消息头和消息属性;以及
4.比较所接收的消息的消息头/属性与过滤器,以标识匹配消息(称作对过滤器表达式求值)。
虽然Rousselle集中于发布/订阅解决方案中的求值步骤的效率(通过仔细的优化、包括组合/平行化来自不同订阅的过滤器来实现),但是本发明的发明人认为在过滤器解析步骤中和在消息选择处理的准备步骤中仍然存在效率改进的需要。这两个步骤通常对于JMS通讯性能非常重要,尤其是在系统中频繁出现新过滤器的某些点对点场合。在一个示例场合中,在很多运行的处理(或处理实例)之间共享队列,并且过滤器表达式被用于确定哪些处理来处理哪些消息。一个普通的例子是共享的答复(replyTo)队列,其中每个实例通过相关标识符(CorrelId)、或者通过一些实例标识符(InstanceId)来选择其答复消息。每个InstanceId或CorrelId需要新的过滤器。发明人还认识到对于更有效的解析和表达式的准备的需要是不限于JMS发布/订阅消息过滤器的更普遍的问题。
T.Takase、H.Miyashita、T.Suzumura和M.Tatsubori的“An Adaptive,Fast,and Safe XML Parser Based on Byte Sequences Memorization”,Proceedings ofthe 14th international conference on World Wide Web (WWW2005),692-701页,2005年5月10-14日,日本千叶,描述了基于样式(pattern)的解析XML文件的方法。解析器检测新的XML消息和先前接收的消息之间的差别,并仅对不同的部分进行语义解析。当处理XML文件时,解析器记下字节序列和有关的解析事件,并且解析器记下处理上下文(context),以便可以部分地解析不匹配的字节序列。这样可以提供更有效的解析,但是仍然不能解决典型的消息过滤处理的中一些无效性。
美国专利申请发布号20070016897(发明人S.Todd,转让给IBM公司)描述了服务请求的基于模板的有效解析、诸如使用XML的SOAP消息,并提取服务要求信息,以提供到服务调用的简化操作(shortcut)。用上述其他解决方案,这没有解决典型的消息过滤处理中的所有无效性。
发明内容
本发明的第一方面提供了用于数据处理系统中的表达式的改进处理的方法,包括步骤:
使用定义了第一类型的表达式的元素的解析模板,来解析数据处理指令,以标识包括了表达式参数值在内的所述第一类型的表达式的元素,其中,所述第一类型表达式可以被求值以控制条件数据处理操作;
选择以被优化用于求值的形式表示所述第一类型表达式的求值模板;
将由解析步骤所标识的参数值插入所述求值模板中,以生成优化的求值代码;以及
使用所述优化的求值代码来对所述表达式求值。
本发明使用所存储的解析模板来解析诸如所接收的数据处理指令的输入序列。优选地将解析模板保存在树结构中,在该树结构中,一组解析模板的元素每一个都与树的节点关联。比较输入序列与模板树,用于标识匹配的解析模板,并同时使用该匹配的解析模板来解析输入序列。例如,输入序列可以是指定需要被求值以控制条件数据处理操作的表达式的串或字节阵列或字节流。解析被用于标识第一类型的表达式,其中该第一类型的表达式然后可以通过使用与该类型的表达式关联的先前存储的求值模板来而被暗中优化。即,本发明的发明人已经认识到,可以比在已知系统中更全面地开发模板解析--从解析步骤推断信息以使能简化随后的准备步骤。
如本领域中已知的,准备步骤可以包括将表达式从原始的语法转换成可以被更有效求值的格式。例如,在JMS实施MOM产品中,可以由MOM产品的内部程序代码将对于新的JMS消息消费者所指定的过滤器表达式从原始的语法(其与SQL“where”分句类似)转换成被优化用于处理的格式。在替换的应用中,准备步骤可以包括从XQuery(XML队列语言)或从另一XML格式的询问语法转换到不同的格式。本发明通过选择表示了具有被优化用于求值的格式的所标识的表达式的、预先准备的模板,避免重复准备步骤。
这种解析步骤的简化和(多个)准备步骤的简化的组合降低了与处理表达式关联的执行开销。表达式可以是,例如,消息选择过滤器表达式或转换表达式。可以在点对点或发布/订阅通讯系统中实施消息选择过滤,其中订户和其他消息接收者可以指定过滤器表达式。例如,订户应用可以指定他们希望接收的消息的具体消息头或属性,并且不具有那些头或属性的消息将不会被传送到订户应用。过滤器的这种使用对于订户指定的消息主题的使用可以是附加的,或可以代替其。
本发明在JMS消息选择过滤处理中尤其有益,因为JMS不允许诸如预定的明确“准备”操作之类的完全预定的消息处理,并且因为使用XML和类似SQL条件表达式的JMS实施方式将遭受其过滤器表达式的无效求值,除非进行了优化(“准备”)步骤。如上所指出,JMS和XML提供了很大的灵活性,但是支持XML的这种灵活性和冗长特性可能引起大量性能问题。
本发明的实施例通过开发样式的重复来减轻这些问题。在很多通讯系统中,需要对诸如JMS消息选择过滤器表达式之类的表达式重复求值,并且可以通过识别这些表达式中的样式(即,重复的元素)来减少这种处理开销。还可以识别并开发所接收的消息的头和属性中的样式重复。对这种重复的开发包括生成、保存并再使用优化的表达式求值模板和消息解析模板。如果模板不匹配,则可以进行传统的解析和准备步骤,并且这种传统操作的结果可以被用于生成新模板。在这样的实施例中,不会出现处理不寻常过滤器和非预期的消息头的能力的固有损失,而当样式被重复时,还能够增加效率。
本发明的一个实施例包括解析包括要被重复执行的表达式在内的输入串,并以可以被用于表达式求值的优化形式来保存解析的结果。该优化形式可以是例如:(a)表达式树、(b)字节代码、或(c)机器代码。在JMS的情况下,串表达式是基于SQL92条件表达式语法的。这种表达式的基于模板的解析和优化可以与所接收的通信的基于模板的解析相结合,以提取与该表达式的求值有关的数据(例如,从JMS消息头和/或消息属性中提取信息)。
本发明的第二方面提供一种了数据处理装置,包括:
数据处理单元;
数据存储单元,用于存储一组模板;
基于模板的解析器,用于使用定义了第一类型的表达式的元素的所存储的解析模板,来控制所述数据处理单元以解析输入数据处理指令,以标识包括表达式参数值在内的所述第一类型的表达式的元素,其中,所述第一类型的表达式可以被求值以控制条件数据处理操作;
与所述基于模板的解析器关联的部件,用于选择以被优化用于求值的形式表示所述第一类型的表达式的所存储的求值模板;
用于将由所述解析步骤所标识的参数值插入所述求值模板以生成优化的求值代码的部件;
用于接收数据通信的部件;以及
用于使用所述优化的求值代码来对所述表达式求值、以控制与所接收的数据通信有关的条件数据处理操作的执行的部件。
在一个实施例中,基于模板的解析器比较数据处理指令与解析模板树。一组解析模板的元素每一个都与该树的节点关联。如果解析模板树包括匹配的解析模板,则基于模板的解析器使用该匹配的解析模板来解析数据处理指令。但是,如果解析模板树不包括匹配的解析模板,则第二解析处理被用于解析数据处理指令,以标识表达式的元素,并对所标识的表达式元素进行明确的准备处理,以生成优化的求值代码。优选地,该数据处理系统还包括:用于从由所述第二解析处理进行的解析的结果中导出解析模板的部件;用于从由所述准备处理进行的处理的结果中导出求值模板的部件;以及用于将所导出的解析模板和所导出的求值模板保存在数据存储部件中的部件。优选地与解析模板树的叶节点关联地保存所导出的解析模板,并与相同叶节点关联地保存所导出的求值模板。在一个实施例中,基于模板的解析器存取第二模板树,以在对表达式求值之前解析所接收的数据通信。
本发明的另一方面提供了一种包括被记录在机器可读记录介质上的程序代码在内的计算机程序产品,其中,程序代码实现一组用于控制数据处理装置的指令,其中在该数据处理装置上执行该程序代码以进行如上所述的方法。
本发明的一个实施例提供了一种通过应用一组一个或多个选择过滤器来在JMS通讯环境中选择消息的方法。该选择包括步骤:
解析第一选择过滤器,以标识过滤器表达式;
生成表示第一级过滤器表达式的解析模板;
以被优化用于求值的形式生成表示第一级过滤器表达式的求值模板;
比较第二选择过滤器与该解析模板,以标识第一级的过滤器表达式,并解析第二选择过滤器,以标识该第二选择过滤器的参数;
关联为第一级过滤器表达式而生成的所述求值模板与第二选择过滤器;
将所标识的参数插入求值模板中,以生成优化的求值代码,用于对第二选择过滤器中的表达式求值;以及
执行所述优化的求值代码,以对该第二选择过滤器求值。
本发明允许再使用被识别适用于多于一个选择过滤器的过滤器表达式的求值模板,避免了重复的解析和模板生成,并由此优化了选择过滤器的处理。
附图说明
下面参考附图通过示例更详细地描述本发明的实施例,在附图中:
图1是如本领域公知的点对点通讯网络中的消息传输的示意表示;
图2表示如本领域中公知的示例消息结构;
图3是如本领域中公知的发布/订阅网络的示意表示;
图4A表示输入数据处理指令的传统处理、诸如准备用于求值的过滤器表达式,并且图4B表示对于输入消息的相应求值;
图5是根据本发明的实施例的数据处理系统的示意表示;以及
图6A表示根据本发明的实施例的用于准备优化的求值代码的方法的步骤的序列,并且图6B表示输入消息的相应求值。
具体实施方式
下面描述的本发明的第一和第二示例实施例包括改进的JMS消息选择机制。如上所指出的,本发明不限于JMS,并且可以应用于其他的环境:在其他的环境中,在被求值用于确定是否应该继续进行数据处理操作的表达式中重复样式。表达式可以是,例如,消息选择过滤器表达式或控制消息转换的表达式,并且下面详细描述这些例子。如从简要参考图1到图4和以下所附描述中将清楚的,在点对点通讯和发布/订阅通讯解决方案中,本发明都是可实现的。
下面参考图1描述实现本发明的第一实施例的通讯系统100。系统100结合了传统的数据处理系统硬件特征(没有示出)和包括与面向消息中间件(MOM)程序30接口的一组应用程序10、20在内的软件。MOM获得来自底层操作系统40的支持。MOM程序30经由消息队列实现异步的点对点通讯。可能位于远程数据处理系统150上的发送器应用程序110能够进行API调用(call),该API调用将消息放置到由其本地MOM队列管理器120管理的本地消息队列140上。被分布在物理网络之间的多个MOM队列管理器交互操作以处理消息到队列50的传递,其中队列50由目标应用程序10的本地MOM队列管理器30管理。图1中仅示出了两个队列管理器120、30,但是在具体消息的运送中可以包括很多系统。交互操作的MOM产品处理经由不同种类网络的网络路由和相互影响的(transactional)确定运送的复杂问题,以便当目标应用准备好时,可以由目标应用程序10处理消息。应用程序10发出API调用以从其输入队列50取回消息,并且队列管理器30通过将消息传送到应用程序10来响应。假定取回成功,则从队列50中删除该消息。这种经由队列传递消息的异步方法在本领域中是公知的,并且已经在IBM公司的WebSphere MQ产品家族中的MOM产品中实现了。
我们现在考虑这样的通讯环境:在该环境中,在可能作为相同应用程序的单独实例的两个处理10、20之间共享队列50。例如,队列50可能是共享的“答复”队列,每个应用实例从该共享的“答复”队列中选择其各自的答复消息。该选择可以基于相关标识符(见下面)或一些实例标识符,但是在任何一种情况下,该选择都需要将被求值以确定队列上所保持的消息是否匹配具体应用实例的要求的表达式。
在JMS中,消息包括:
·消息头200,带有包含了由发送器和接收器两者以及JMS提供者使用以标识和路由消息的值在内的字段210、220、230;
·属性240-每个消息包括支持应用定义的属性值的功能(facility),该属性值可以被用于应用定义的消息过滤中(属性可以被认为是特定应用头字段);以及
·消息主体250(或“有效负荷”),其包含正被发送的应用数据。在JMS实施方式中,消息主体可以是以下五种类型中的一种:流、图(map)、文本、对象或字节。
消息头中的JMSCorrelationID头字段可以被用于链接一个消息与另一个消息,诸如用于链接答复消息与其请求消息。例如,相关标识符可以提供点对点通讯实施方式中的消息选择的基础,其中在点对点通讯实施方式中,多个应用实例在服务于同一“答复”队列。JMS消费者应用能够通过消息“选择器”中的消息头字段参考和属性参考来指定其感兴趣的消息。JMS消息选择器是条件消息选择过滤器表达式,一般被指定作为其语法是基于SQL92条件表达式语法的子集的串。当所接收的消息的头字段值和属性值匹配选择器中的相应元素时,表达式求值为真。由JMS提供者(一种MOM产品)代表JMS消费者(一种通讯应用)来对选择器求值。因此,只有其头字段和属性匹配该选择器的消息才被运送给消费者。
当然,基于头字段和属性的消息选择过滤对于JMS发布/订阅实施方式以及诸如上述的点对点通讯例子来说可能是必要的。图3中示意性示出了发布/订阅网络。发布者应用110、310(通过本地消息处理程序120、320和可用的网络连接)发送消息到在数据处理系统350上运行的发布/订阅代理340。发布/订阅代理包括匹配引擎360和代表一组订户(应用10、400、430或各个本地消息处理程序30、390、420)来保存订阅信息的存储库(repository)370。在这种示例的发布/订阅网络中,可以在代理340的匹配引擎360中实施过滤。替换的发布/订阅网络在对于订户应用而言是本地的匹配组件中、而不是在位于中间网络集线器处的代理中实施包括对消息属性过滤的订阅匹配。本发明适用于包括各种模型的JMS实施方式的这些发布/订阅和点对点通信模型中的每个。
在典型的JMS环境中,消息选择过滤器的处理是昂贵的。每次使用调用session.creatConsumer(...,selector)建立应用程序实例时,JMS提供者(即,JMS接口的MOM产品实施方式)必须实施图4A中所示的下列步骤:
1.解析500应用实例的(多个)选择过滤器;以及
2.准备510用于求值的(多个)过滤器。
然后保存520选择过滤器,用于在随后的求值中使用。
然后,每次应用程序实例10试图从输入队列50中取回消息时,JMS提供者必须:
1.对于具体消息解析530 JMS消息头和属性;以及
2.对所保存的过滤器表达式求值540,以确定该消息是否匹配应用实例的要求。
如果过滤器表达式求值为真,则由具体的应用实例来取回消息;而如果表达式求值为假,则应用实例继续前进以检查队列上的下一消息。
因此,使用传统的方法,对于creatConsumer()操作的每次执行,解析过滤器表达式一次,并且每次creatConsumer()操作进行一次准备操作。对于在队列上所检查的每个消息进行一次单独的消息解析操作。
本发明的发明人已经认识到,在典型的JMS通讯环境中,进行了大量的重复处理。本发明人得出结论,可以使用模板进行过滤器表达式的有效解析和自动准备来标识和开发样式,以减少与JMS消息选择过滤器表达式有关的处理开销。
在本发明的第一实施例中,在当建立新的JMS消费者时所指定的JMS选择过滤器上进行基于模板的解析。即,表示先前标识的表达式类型的所存储的模板与选择过滤器比较。如果标识匹配,则匹配处理包括在基于模板的解析中使用匹配模板,该基于模板的解析标识了已知类型的表达式的元素,并从表达式中提取参数值(“常数”)。已经标识了这样的表达式,选择先前存储的优化的求值模板,并将其用于表达式的求值中。将所提取的参数插入求值模板中,以形成优化的求值代码。因此,通过生成并存储表示一般表达式类型的模板,能够简化(shortcut)与建立新的JMS消费者有关的解析和准备步骤。
另外,当消息被接收到JMS消费者的输入队列上时,对所接收的消息的消息头和属性进行另一基于模板的解析。即,表示消息头或属性中先前标识的样式的所存储的模板被用于简化到来的消息的解析。
不需要牺牲能够处理新的过滤器和大范围内的消息头和属性的灵活性,就能够实现这种有效的基于模板的解析,以及用于自动准备步骤的信息的有关推断。如果消息选择过滤器或所接收的消息的标题/属性不匹配所存储的模板中的一个,则进行传统的解析、准备和求值步骤。然后,这些传统的解析和准备步骤的结果可以被用于生成稍后使用的新模板。在共同转让、未决美国专利申请发布号20070016897中已经描述了基于模板的解析,通过引用将其合并于此。
尽管本发明适用于其他环境和其它类型的表达式,但是在继续描述其他例子之前,下面将参考图5、图6A和图6B详细描述预处理和对JMS选择过滤器求值的例子。
图5是在网络连接的数据处理系统880中的本发明的第一实施例的组件的示意表示,该数据处理系统800包括数据处理单元570、主存储器550、非易失性存储器580、输入/输出网络连接560和内部通信总线。在该第一实施例中,通过系统存储器550中的各种数据存储库和JMS提供者(MOM产品)600的可执行组件实现本发明。JMS提供者600提供对同样运行在系统存储器中的传统JMS消费者应用10、20的支持。下面参考图6A和6B描述由图5中所示的各种组件进行的操作。
在本发明的第一实施例中,当JMS提供者600接收用于建立新的JMS消费者session.creatConsumer()(...,selector)的指令810时,最初将该指令传送到模板解析器610。模板解析器存取820表示一组所存储的模板的模板树620,并比较830输入串与当前在模板树620中表示的这组解析模板。这组解析模板包括用于处理“选择器”的至少一个模板--即用于处理典型地被包括在用于建立新的JMS消息消费者的指令中的过滤器表达式的模板。如果没有可用的匹配模板,第二解析器630以传统方式解析850建立指令中的选择器。这种解析比较输入串与已知的语法规则,以确定选择器的结构,并使其能对于消息选择过滤--标识包括公共参数类型和其数据值在内的各种表达式参数,然后将它们放入可以被处理的数据结构中--进行求值。对解析的结果进行860准备处理640,以准备用于更有效的求值处理的选择器。这是一个传统步骤,其典型地包括将解析的输入串的结构或语法转换成使能更有效处理--在这种情况下有效的消息选择过滤器求值--的新格式。
在没有标识匹配的解析模板的情况下,如上所述进行解析和准备步骤850、860,然后保存870结果作为优化的求值代码650。在该优选实施例中,也将解析的结果输入到解析模板生成器660,以生成880新的解析模板。将准备步骤的结果传送到求值模板生成器670,以生成890新的表达式求值模板。新的解析模板是选择器表达式的所标识的参数的表示,但是这些参数的数据值还空着。新的表达式求值模板是从解析模板和在先前的准备步骤期间生成的转换的表达式中导出的。将任何新生成的解析模板添加900到解析模板树620,将新的表达式求值模板添加900到表达式求值模板的单独存储680。在该实施例中,通过关联每个表达式求值模板与解析模板树620的叶节点(leaf node),将新的表达式求值模板与各个解析模板关联。
其后,当用类似的选择器定义新的JMS消费者时,可以使用新的解析模板识别并解析820参数的重复样式。即,当在新的指令session.createConsumer()(...,selector)中指定的选择器被传送到模板解析器610时,模版解析器比较820新的选择器与在其模板树620中表示的那组模板。将新的解析模板标识为匹配,并将其用于820分析选择器的结构且用于提取用于选择器的过滤器表达式的参数信息。由于已经为这种类型的过滤器表达式建立了表达式求值模板,因而不需要进行任何新的明确的准备步骤或建立新的求值模板。相反,求值模板选择器690可以选择830先前保存的表达式求值模板(其已经以可以被有效求值的格式表示了这类表达式),用于对新的消息选择过滤器表达式求值。例如,已经在所存储的表达式求值模板中、用如下不同的语法代替了JMS过滤器表达式的类似SQL的语法,其中该不同的语法被各个MOM程序代码更有效地处理。
从成功的基于模板的解析步骤820中推断出的信息使能选择830一组所存储的表达式求值模板中适当的一个。解析步骤820还提取这样的参数:可以由代码生成器700将该参数与求值模板结合840,以生成优化的求值代码。以这种方式,重复的样式的识别使得能够再使用先前解析的结果并再使用有效的执行路径的先前准备--用比传统的解决方案更少的处理来为求值步骤做准备。
例如,如果JMS消息选择组件发现过滤器表达式:
E-filter1:″JMSCorrelId=′abc′and ZZZ=′zxc′″
则消息选择组件可以解析该过滤器表达式,然后明确地进行准备处理,以生成可以如下表示的优化的求值代码:
Opt-code1:MQCorrelId∷abc [[ZZZ∷zxc]]
这以适用于求值的形式提供了过滤器表达式的表示,但是还没有使能任何再使用或保存任何处理开销。还可以处理消息过滤器表达式以建立将识别表达式的元素的重复的解析模板,如下:
E-parse_template1:JMSCorrelId=′%1%′and ZZZ=′%2%′
然后,消息选择组件可以将该解析模板与这样的求值模板关联:该求值模板与优化的求值代码有关并被优化用于具体求值功能使用:
E-evaluation_template1:MQCorrelId∷%1% [[ZZZ∷%2%]]
(与JMSCorrelId=′%1%′和ZZZ=′%2%′关联)
在该所示例子中,使用符号“∷”和“[[]]”指示可以被用于测试由“GetMessage”操作从MOM系统中取回的消息的有效内部表示。
解析初始过滤器表达式将提取可以被插入求值模板中的参数,并且这些参数可以表示如下:
E-inserts1:-->E-evaluation_template1 %1%=abc%2%=zxc
(其中表示“-->E-evaluation_template1”指示这些插入用于与模板“E-evaluation_template1”一起使用,并且其中插入值是“abc”和“zxc”。
在以上例子中,将解析的表达式分离为对于所有类型的表达式来说公共的部分(可以在一个模板中表示这些部分)和可变部分(那些插入)。公共部分典型地包括字段名(诸如“JMSCorrelId”)和操作符(诸如“=”和“and”),而那些插入典型地包括表达式中的“常数”(即,在具体的表达式类型的不同实例之间变化的值)。
在本发明的替换实施例中,有不同的一组规则,用于确定表达式的哪些元素应该作为模板的部分以及哪些应该被处理为插入。例如,有益地,将JMSPriority看作特定情况,将子表达式“JMSPriority=1”视为模板的部分,并与“JMSPriority=2”区分。此外,在本领域中公知很多不同的准备处理的例子,上述实施例仅是示意性的。
上述的示例的求值模板表示一种优化,因为现在可以通过参考标准的信息头字段(MQCorrelId∷)来处理由相关标识符做出的选择,其中该标准的信息头字段可以被MOM产品代码有效地存取。一些MOM产品包括位于内部信息处理功能之上的JMS层。一些标准的消息头字段包括与原始过滤器表达式的相应的参数相同、但是具有允许更有效求值的不同格式的信息。在该所示例子中,标准的头字段复制扩展的JMS头,因此,当使用“GetByCorrelId=abc”从共享的输入队列中取回消息时,或当对优先级或用户ID进行选择时,可以由MOM产品来使用该标准的头字段。已经由具有不同语法并可以被MOM产品代码有效地求值的等同元素代替了原始的JMS选择过滤器表达式的元素。
同样适应于检查不同的头字段,可以生成允许将被用于进行过滤的、MOM产品的现有API调用选项或内部索引的求值模板(使用诸如MessageId、CorrelId和GroupId的参数)。在这种情况下,还可以节省将失败的消息从底层MOM产品代码发送到JMS层的耗费。
虽然已知的解决方案可以明确地进行准备处理,但是能够使用本发明的基于模板的简化操作来改善性能,该基于模板的简化操作标识重复的样式,以允许再使用求值模板。使用基于模板的解析和预存储的求值模板使能实现输入表达式的暗中且自动的优化,其中,在该示例实施例中,输入表达式简化解析,并避免重复的准备处理且“下推(push down)”用于更低级求值的过滤器。
使用本发明的实施例,当JMS消息选择组件依次发现第二相似表达式时,诸如在如下例子中:
E-filter2:s.createConsumer(...,″JMSCorrelId=′def′andZZZ=′vbn′″)
这将被标识为与E-inserts2:-->E-evaluation_template1%1%=def %2%=vbn匹配的解析模板“E-parse_template1”。
由于这种匹配,JMS消息选择组件将自动地关联该优化的表达式求值模板“E-evaluation_template1”与第二过滤器表达式,得到与建立表达式求值模板有关的所有处理工作的结果。不仅简化了解析步骤,而且不需要准备和优化新的过滤器。
上述处理有效地准备了用于消息选择的优化的求值代码:
Opt-code2:MQCorrelId∷def [[ZZZ∷vbn]]
虽然与第二过滤器(E-filter2)对应的优化的求值代码(Opt-code2)与将使用已知技术的重复处理而生成的相同,但是不用重复准备处理就已经生成了优化的求值代码。在展现出大量重复的环境下,这种避免重复处理的益处是非常显著的。
下面参考图6B描述的是当接收新的输入消息时进行的另外的处理,其中需要对于该新的输入消息对过滤器表达式求值。通过数据处理系统的网络连接560接收消息,并由JMS提供者600将这些消息放置到存储器的保留区720中的消息队列50上。由消息解析器710对接收的消息进行基于模板的解析(这与选择器的模板解析分开),其中消息解析器710存取消息解析模板的所存储的树730。如果在该树中发现了匹配的消息解析模板,则该基于模板的解析比传统的解析更有效地标识一组消息头/属性字段名、操作符和常数,节省了用于经历大量重复消息的环境的处理。虽然图5中没有明确示出,但如果在消息解析模板树730中没有发现匹配的模板,则基于模板的消息解析器710将责任转移给传统的解析处理。
下面使用简化的例子举例说明对于第一接收消息message1和随后接收的消息message2的上述消息解析。
message1
M-usr1: <ZZZ>asd</ZZZ><another>data</another>
M-template1:<ZZZ>$1$</ZZZ><another>$2$</another>
M-inMatcher:$1$-->ZZZ $2$-->another
M-inserts1:-->M-inMatcher1 $1$=zxc $2$=data
message2
M-usr2:<ZZZ>fgh</ZZZ><another>example</another>
M-inserts2:-->input matcher1 $1$=fgh $2$=example
在以上例子中,M-inMatcher1示出了在M-template1中的那些插入和被使用来关联那些插入的字段值之间的关系。因此$1$-->ZZZ指示将第一插入($1$)与字段ZZZ关联。
因此,当我们见到第二消息和模板解析(M-usr2)而发现$1$=“fgh”时,我们可以使用M-inMatcher1来推导ZZZ=“fgh”,并且类似地在某种内部格式(由[]表示)中推导出该头表示:
M-header2:[ZZZ=′fgh′,another=′example′]
现在我们具有消息和求值表达式两者的有效内部表示,因此能够基于在消息中保存的值,由过滤器表达式求值器(evaluator)740对表达式有效求值920。在上述通讯示例中,这将包括配合(match up)头名,诸如在以下例子中:
Opt-code-2:MQCorrelId∷def [[ZZZ∷vbn]]
M-header2:[ZZZ=′fgh′,another=′example′]
Opt-code-2中的元素“MQCorrelId∷def”将被下推用于由基本MOM代码通过参考标准的消息头字段进行的处理(如上所述),并且不必出现在“M-header”中。当发现带有匹配的CorrelId的消息时,将针对内部消息头[ZZZ=‘fgh’,another=‘example’]对内部表达式[[ZZZ==‘vbn’]]求值920。如果对于应用程序该表达式求值为真,则JMS提供者将该消息传送到各个应用程序10、20。
在另一替换实施方式中,从解析和配合表达式和消息头的处理中消除字段名。具体地,由从字段名到字段索引的固定映射中所确定的索引来代替字段名。对于示意的例子,映射可以是如下:
JMSCorrel->?1?,AAA->?2 ?,ZZZ->?3 ?,another->?4 ?等等。因此求值模板:
E-evaluation_template1:MQCorrelId∷%1% [[ZZZ=′%2%′]]将被存储为:
E-evaluation_template1:MQCorrelId∷%1% [[?3 ?=′%2%′]]并且将得出:
Opt-code-2:MQCorrelId∷def[[?3 ?∷vbn]]该消息匹配器(matcher)模板:
M-inMatcher1:$1$-->ZZZ $2$-->another将被存储为:
M-inMatcher1:$1$-->?3 ? $2$-->?4 ?并且这将得出:
M-header2:[?3 ?=′fgh′,?4 ?=′example′]
因此,通过索引匹配代替了字段匹配(可实施作为哈希表查找)。可以将其实施为简单的阵列查找。
如上所指出的,本发明不限于JMS消息选择过滤器的求值,而是可以用于诸如由消息代理或客户端通讯系统所实施条件的转换之类的其他表达式的求值中。例如,转换表达式可以用类似SQL的语法来表述:SELECT name,price,quantity,total AS price*quantity WHEREname>″M″
分句‘WHERE name>“M”’用作过滤器,但是表达式另外指定将要通过总值的计算而转换该消息。不需要指定“FROM”,因为源是到来的消息流。在该例子中,解析和准备(或“优化”)与上述用于JMS消息选择过滤器的相同,但是针对表达式处理到来的消息的最终求值步骤的不同之处在于,不是仅对消息选择进行过滤,而是改变该消息。
因此,不同类型的表达式可以受益于本发明,在本发明中,重复的样式有助于所存储的模板的再使用。不同的应用环境将受益于用于实现优化的表达式求值模板的不同表达式准备步骤的范围。但是,准备步骤昂贵是很多环境的公共特征,因此通过本发明对所存储的解析模板和表达式求值模板的再使用来简化处理,可以有效减少处理开销。
Claims (16)
1.一种用于数据处理系统中的表达式的改进处理的方法,包括步骤:
使用定义了第一类型的表达式的元素的解析模板,来解析数据处理指令,以标识包括了表达式参数值在内的所述第一类型的表达式的元素,其中,所述第一类型表达式可以被求值以控制条件数据处理操作;
选择以被优化用于求值的形式表示所述第一类型表达式的求值模板;
将由解析步骤所标识的参数值插入所述求值模板中,以生成优化的求值代码;以及
使用所述优化的求值代码来对所述表达式求值。
2.如权利要求1所述的方法,其中,所述解析步骤包括第一解析处理,其比较数据处理指令与解析模板树,并且如果所述解析模板树包括匹配的解析模板,则使用匹配的解析模板来解析所述数据处理指令,其中在所述解析模板树中,一组解析模板的元素每一个都与该树的节点相关。
3.如权利要求2所述的方法,其中,如果所述解析模板树不包括匹配的解析模板,则使用第二解析处理来解析所述数据处理指令,以标识表达式的元素,并且对表达式元素进行准备处理,以生成优化的求值代码,并且所述方法还包括:
从由所述第二解析处理进行的解析的结果中导出解析模板;
从由所述准备处理进行的处理的结果中导出求值模板;以及
保存所导出的解析模板和所导出的求值模板。
4.如权利要求3所述的方法,其中,所述保存所导出的解析模板的步骤包括与所述解析模板树的叶节点关联地保存所导出的解析模板,并且其中所述保存所导出的求值模板的步骤包括关联所导出的求值模板与所述叶节点。
5.如权利要求2到4的任意一项所述的方法,其中,所述选择步骤包括选择与所述解析模板树的叶节点关联的求值模板。
6.如权利要求1到5的任意一项所述的方法,其中,所述表达式是消息选择过滤器表达式。
7.如权利要求1到5的任意一项所述的方法,其中,所述表达式是消息转换表达式。
8.如以上权利要求的任意一项所述的方法,其中,响应于数据通信的接收而进行所述表达式的求值。
9.如权利要求8所述的方法,其中,所述数据通信是JMS消息,并且所述表达式的求值包括对JMS消息选择器求值,以确定是否应该将所述JMS消息传送给JMS消息消费者。
10.如权利要求8或权利要求9所述的方法,其中,所接收的数据通信是包括了头信息和消息主体的消息,并且其中,解析所接收的消息以在对所述表达式求值之前提取头信息。
11.如权利要求10所述的方法,其中,所接收的消息的所述解析包括使用包括了一个或多个消息头字段在内的模板的基于模板的解析操作。
12.如权利要求11所述的方法,其中,所述基于模板的解析操作包括比较所接收的消息与第二解析模板树,并且如果所述第二解析模板树包括匹配的解析模板,则使用匹配的解析模板来解析所接收的消息,其中在所述第二解析模板树中,一组解析模板的元素每一个都与该树的节点关联。
13.一种数据处理装置,包括:
数据处理单元;
数据存储单元,用于存储一组模板;
基于模板的解析器,用于使用定义了第一类型的表达式的元素的所存储的解析模板,来控制所述数据处理单元以解析输入数据处理指令,以标识包括表达式参数值在内的所述第一类型的表达式的元素,其中,所述第一类型的表达式可以被求值以控制条件数据处理操作;
与所述基于模板的解析器关联的部件,用于选择以被优化用于求值的形式表示所述第一类型的表达式的所存储的求值模板;
用于将由所述解析步骤所标识的参数值插入所述求值模板以生成优化的求值代码的部件;
用于接收数据通信的部件;以及
用于使用所述优化的求值代码来对所述表达式求值、以控制与所接收的数据通信有关的条件数据处理操作的执行的部件。
14.如权利要求13所述的数据处理装置,还包括:
第二解析处理,响应于确定解析模板树不包括匹配的解析模板的所述表达式与所述解析模板树的比较,来解析所述数据处理指令,以标识表达式的元素;以及
准备处理,用于生成用于所述表达式的优化的求值代码。
15.如权利要求14所述的数据处理装置,还包括:
用于从由所述第二解析处理进行的解析的结果中导出解析模板的部件;
用于从由所述准备处理进行的处理的结果中导出求值模板的部件;以及
用于将所导出的解析模板和所导出的求值模板保存在数据存储部件中的部件。
16.如权利要求15所述的数据处理装置,其中,所述用于保存的部件包括用于与所述解析模板树的叶节点关联地保存所导出的解析模板的部件和用于与相同叶节点关联地保存所导出的求值模板的部件。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP07102234 | 2007-02-13 | ||
EP07102234.7 | 2007-02-13 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101246486A true CN101246486A (zh) | 2008-08-20 |
CN101246486B CN101246486B (zh) | 2012-02-01 |
Family
ID=39686962
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810005453.8A Expired - Fee Related CN101246486B (zh) | 2007-02-13 | 2008-02-04 | 用于改进的表达式处理的方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (2) | US8161468B2 (zh) |
JP (1) | JP5400305B2 (zh) |
CN (1) | CN101246486B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104331278A (zh) * | 2014-10-15 | 2015-02-04 | 南京航空航天大学 | 一种用于arinc661规范的指令过滤方法和装置 |
CN106789245A (zh) * | 2016-12-22 | 2017-05-31 | 浪潮通信信息系统有限公司 | 一种基于jms的指令执行服务工具及方法 |
CN111095904A (zh) * | 2017-09-15 | 2020-05-01 | 康维达无线有限责任公司 | 通信网络中的服务层消息模板 |
Families Citing this family (77)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7444596B1 (en) * | 2007-11-29 | 2008-10-28 | International Business Machines Corporation | Use of template messages to optimize a software messaging system |
US7996444B2 (en) * | 2008-02-18 | 2011-08-09 | International Business Machines Corporation | Creation of pre-filters for more efficient X-path processing |
US8429194B2 (en) | 2008-09-15 | 2013-04-23 | Palantir Technologies, Inc. | Document-based workflows |
US8312437B2 (en) * | 2008-12-30 | 2012-11-13 | Microsoft Corporation | Structured search in source code |
US20100198741A1 (en) * | 2009-01-30 | 2010-08-05 | Yahoo! Inc. | Designating priority for characteristics of vitality events in a social networking system |
US9183580B2 (en) * | 2010-11-04 | 2015-11-10 | Digimarc Corporation | Methods and systems for resource management on portable devices |
US9607290B2 (en) * | 2010-03-24 | 2017-03-28 | Worldmate, Ltd. | Apparatus and method for detecting messages in a parsing process |
US8626778B2 (en) * | 2010-07-23 | 2014-01-07 | Oracle International Corporation | System and method for conversion of JMS message data into database transactions for application to multiple heterogeneous databases |
US8510270B2 (en) | 2010-07-27 | 2013-08-13 | Oracle International Corporation | MYSQL database heterogeneous log based replication |
US9298878B2 (en) | 2010-07-29 | 2016-03-29 | Oracle International Corporation | System and method for real-time transactional data obfuscation |
US8555338B2 (en) | 2010-08-10 | 2013-10-08 | Mobimate Ltd. | Apparatus and method for retrieving a boarding pass |
US20120042024A1 (en) * | 2010-08-12 | 2012-02-16 | Mobimate Ltd. | Apparatus and method for handling a message |
US9092482B2 (en) | 2013-03-14 | 2015-07-28 | Palantir Technologies, Inc. | Fair scheduling for mixed-query loads |
US8732574B2 (en) | 2011-08-25 | 2014-05-20 | Palantir Technologies, Inc. | System and method for parameterizing documents for automatic workflow generation |
US8504542B2 (en) | 2011-09-02 | 2013-08-06 | Palantir Technologies, Inc. | Multi-row transactions |
US8560494B1 (en) | 2011-09-30 | 2013-10-15 | Palantir Technologies, Inc. | Visual data importer |
US9378526B2 (en) | 2012-03-02 | 2016-06-28 | Palantir Technologies, Inc. | System and method for accessing data objects via remote references |
US9471370B2 (en) | 2012-10-22 | 2016-10-18 | Palantir Technologies, Inc. | System and method for stack-based batch evaluation of program instructions |
US9348677B2 (en) * | 2012-10-22 | 2016-05-24 | Palantir Technologies Inc. | System and method for batch evaluation programs |
CN108630308B (zh) | 2012-12-21 | 2023-04-11 | 德卡产品有限公司 | 使用web服务的电子化患者护理的系统和装置 |
US9311640B2 (en) | 2014-02-11 | 2016-04-12 | Digimarc Corporation | Methods and arrangements for smartphone payments and transactions |
US9367463B2 (en) | 2013-03-14 | 2016-06-14 | Palantir Technologies, Inc. | System and method utilizing a shared cache to provide zero copy memory mapped database |
US9898167B2 (en) | 2013-03-15 | 2018-02-20 | Palantir Technologies Inc. | Systems and methods for providing a tagging interface for external content |
US9740369B2 (en) | 2013-03-15 | 2017-08-22 | Palantir Technologies Inc. | Systems and methods for providing a tagging interface for external content |
US8909656B2 (en) | 2013-03-15 | 2014-12-09 | Palantir Technologies Inc. | Filter chains with associated multipath views for exploring large data sets |
US8868486B2 (en) | 2013-03-15 | 2014-10-21 | Palantir Technologies Inc. | Time-sensitive cube |
US9105000B1 (en) | 2013-12-10 | 2015-08-11 | Palantir Technologies Inc. | Aggregating data from a plurality of data sources |
US9378123B2 (en) * | 2013-12-31 | 2016-06-28 | International Business Machines Corporation | Testing of transaction tracking software |
US8924429B1 (en) | 2014-03-18 | 2014-12-30 | Palantir Technologies Inc. | Determining and extracting changed data from a data source |
US20160026923A1 (en) | 2014-07-22 | 2016-01-28 | Palantir Technologies Inc. | System and method for determining a propensity of entity to take a specified action |
TWI545918B (zh) * | 2014-12-30 | 2016-08-11 | 富智康(香港)有限公司 | 群組資訊過濾系統及方法 |
WO2016191712A1 (en) * | 2015-05-28 | 2016-12-01 | Kla-Tencor Corporation | System and method for production line monitoring |
US9514205B1 (en) | 2015-09-04 | 2016-12-06 | Palantir Technologies Inc. | Systems and methods for importing data from electronic data files |
US10558339B1 (en) | 2015-09-11 | 2020-02-11 | Palantir Technologies Inc. | System and method for analyzing electronic communications and a collaborative electronic communications user interface |
US9772934B2 (en) | 2015-09-14 | 2017-09-26 | Palantir Technologies Inc. | Pluggable fault detection tests for data pipelines |
US9652510B1 (en) | 2015-12-29 | 2017-05-16 | Palantir Technologies Inc. | Systems and user interfaces for data analysis including artificial intelligence algorithms for generating optimized packages of data items |
US10554516B1 (en) | 2016-06-09 | 2020-02-04 | Palantir Technologies Inc. | System to collect and visualize software usage metrics |
US9678850B1 (en) | 2016-06-10 | 2017-06-13 | Palantir Technologies Inc. | Data pipeline monitoring |
US10133782B2 (en) | 2016-08-01 | 2018-11-20 | Palantir Technologies Inc. | Techniques for data extraction |
US10621314B2 (en) | 2016-08-01 | 2020-04-14 | Palantir Technologies Inc. | Secure deployment of a software package |
US11256762B1 (en) | 2016-08-04 | 2022-02-22 | Palantir Technologies Inc. | System and method for efficiently determining and displaying optimal packages of data items |
US10552531B2 (en) | 2016-08-11 | 2020-02-04 | Palantir Technologies Inc. | Collaborative spreadsheet data validation and integration |
US10373078B1 (en) | 2016-08-15 | 2019-08-06 | Palantir Technologies Inc. | Vector generation for distributed data sets |
EP3282374A1 (en) | 2016-08-17 | 2018-02-14 | Palantir Technologies Inc. | User interface data sample transformer |
US10650086B1 (en) | 2016-09-27 | 2020-05-12 | Palantir Technologies Inc. | Systems, methods, and framework for associating supporting data in word processing |
US10152306B2 (en) | 2016-11-07 | 2018-12-11 | Palantir Technologies Inc. | Framework for developing and deploying applications |
US10261763B2 (en) | 2016-12-13 | 2019-04-16 | Palantir Technologies Inc. | Extensible data transformation authoring and validation system |
US10203940B2 (en) * | 2016-12-15 | 2019-02-12 | Microsoft Technology Licensing, Llc | Compiler with type inference and target code generation |
US11157951B1 (en) | 2016-12-16 | 2021-10-26 | Palantir Technologies Inc. | System and method for determining and displaying an optimal assignment of data items |
CN108241686B (zh) * | 2016-12-26 | 2021-11-16 | 北京航管科技有限公司 | 一种数据集成方法和系统 |
US10509844B1 (en) | 2017-01-19 | 2019-12-17 | Palantir Technologies Inc. | Network graph parser |
US10180934B2 (en) | 2017-03-02 | 2019-01-15 | Palantir Technologies Inc. | Automatic translation of spreadsheets into scripts |
US10572576B1 (en) | 2017-04-06 | 2020-02-25 | Palantir Technologies Inc. | Systems and methods for facilitating data object extraction from unstructured documents |
US10824604B1 (en) | 2017-05-17 | 2020-11-03 | Palantir Technologies Inc. | Systems and methods for data entry |
US10534595B1 (en) | 2017-06-30 | 2020-01-14 | Palantir Technologies Inc. | Techniques for configuring and validating a data pipeline deployment |
US10204119B1 (en) | 2017-07-20 | 2019-02-12 | Palantir Technologies, Inc. | Inferring a dataset schema from input files |
US10754820B2 (en) | 2017-08-14 | 2020-08-25 | Palantir Technologies Inc. | Customizable pipeline for integrating data |
US11016936B1 (en) | 2017-09-05 | 2021-05-25 | Palantir Technologies Inc. | Validating data for integration |
US11379525B1 (en) | 2017-11-22 | 2022-07-05 | Palantir Technologies Inc. | Continuous builds of derived datasets in response to other dataset updates |
US10552524B1 (en) | 2017-12-07 | 2020-02-04 | Palantir Technolgies Inc. | Systems and methods for in-line document tagging and object based data synchronization |
US10360252B1 (en) | 2017-12-08 | 2019-07-23 | Palantir Technologies Inc. | Detection and enrichment of missing data or metadata for large data sets |
US11176116B2 (en) | 2017-12-13 | 2021-11-16 | Palantir Technologies Inc. | Systems and methods for annotating datasets |
US10853352B1 (en) | 2017-12-21 | 2020-12-01 | Palantir Technologies Inc. | Structured data collection, presentation, validation and workflow management |
GB201800595D0 (en) | 2018-01-15 | 2018-02-28 | Palantir Technologies Inc | Management of software bugs in a data processing system |
US10599762B1 (en) | 2018-01-16 | 2020-03-24 | Palantir Technologies Inc. | Systems and methods for creating a dynamic electronic form |
US11645261B2 (en) | 2018-04-27 | 2023-05-09 | Oracle International Corporation | System and method for heterogeneous database replication from a remote server |
US10885021B1 (en) | 2018-05-02 | 2021-01-05 | Palantir Technologies Inc. | Interactive interpreter and graphical user interface |
US11263263B2 (en) | 2018-05-30 | 2022-03-01 | Palantir Technologies Inc. | Data propagation and mapping system |
US11061542B1 (en) | 2018-06-01 | 2021-07-13 | Palantir Technologies Inc. | Systems and methods for determining and displaying optimal associations of data items |
US10795909B1 (en) | 2018-06-14 | 2020-10-06 | Palantir Technologies Inc. | Minimized and collapsed resource dependency path |
US10789195B1 (en) * | 2019-07-17 | 2020-09-29 | Capital One Services, Llc | Article, device, and techniques for serverless streaming message processing |
CN110688859A (zh) * | 2019-09-18 | 2020-01-14 | 平安科技(深圳)有限公司 | 基于机器学习的语义解析方法、装置、介质及电子设备 |
US11258885B2 (en) | 2019-12-10 | 2022-02-22 | Mellanox Technologies, Ltd. | Flexible parser in a networking device |
US11323372B2 (en) | 2020-04-21 | 2022-05-03 | Mellanox Technologies Ltd. | Flexible steering |
CN112486479A (zh) * | 2020-11-30 | 2021-03-12 | 浙江中控技术股份有限公司 | 一种数据采集方法及装置 |
US11425230B2 (en) | 2021-01-28 | 2022-08-23 | Mellanox Technologies, Ltd. | Efficient parsing tuned to prevalent packet types |
US11711453B2 (en) | 2021-10-24 | 2023-07-25 | Mellanox Technologies, Ltd. | Template-based packet parsing |
Family Cites Families (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5021947A (en) * | 1986-03-31 | 1991-06-04 | Hughes Aircraft Company | Data-flow multiprocessor architecture with three dimensional multistage interconnection network for efficient signal and data processing |
IL100990A (en) * | 1991-02-27 | 1995-10-31 | Digital Equipment Corp | Multilingual optimization compiler that uses Gladi in the production of a multi-pass cipher |
US5287490A (en) * | 1991-03-07 | 1994-02-15 | Digital Equipment Corporation | Identifying plausible variable length machine code of selecting address in numerical sequence, decoding code strings, and following execution transfer paths |
JPH0792758B2 (ja) * | 1992-01-17 | 1995-10-09 | インターナショナル・ビジネス・マシーンズ・コーポレイション | コンパイラおよびコンパイル方法 |
US5481708A (en) * | 1992-06-05 | 1996-01-02 | Borland International, Inc. | System and methods for optimizing object-oriented compilations |
US5835771A (en) * | 1995-06-07 | 1998-11-10 | Rogue Wave Software, Inc. | Method and apparatus for generating inline code using template metaprograms |
JPH10228477A (ja) * | 1997-02-13 | 1998-08-25 | Nec Corp | 一括検索方式 |
US6578197B1 (en) * | 1998-04-08 | 2003-06-10 | Silicon Graphics, Inc. | System and method for high-speed execution of graphics application programs including shading language instructions |
US6378126B2 (en) * | 1998-09-29 | 2002-04-23 | International Business Machines Corporation | Compilation of embedded language statements in a source code program |
US6748374B1 (en) * | 1998-12-07 | 2004-06-08 | Oracle International Corporation | Method for generating a relational database query statement using one or more templates corresponding to search conditions in an expression tree |
US6397383B1 (en) * | 1999-02-26 | 2002-05-28 | International Business Machines Corp. | Constraint language parser which rejects invalid filter constraint during run time |
GB2348025A (en) * | 1999-03-19 | 2000-09-20 | Ibm | Message broker providing a publish/subscribe service and method of processing messages in a publish/subscribe environment |
US7590644B2 (en) * | 1999-12-21 | 2009-09-15 | International Business Machine Corporation | Method and apparatus of streaming data transformation using code generator and translator |
US6772413B2 (en) * | 1999-12-21 | 2004-08-03 | Datapower Technology, Inc. | Method and apparatus of data exchange using runtime code generator and translator |
US7577834B1 (en) * | 2000-05-09 | 2009-08-18 | Sun Microsystems, Inc. | Message authentication using message gates in a distributed computing environment |
JP2002073662A (ja) * | 2000-09-05 | 2002-03-12 | Nippon Hoso Kyokai <Nhk> | 情報提示装置及び情報提示プログラムを記録した記録媒体 |
US7376939B1 (en) * | 2002-02-07 | 2008-05-20 | Xilinx, Inc. | System for architecture and resource specification and methods to compile the specification onto hardware |
EP1502196A4 (en) * | 2002-05-02 | 2008-04-02 | Sarvega Inc | SYSTEM AND METHOD FOR TRANSFORMING XML DOCUMENTS USING STYLE SHEETS |
US7596523B2 (en) * | 2002-09-09 | 2009-09-29 | Barra, Inc. | Method and apparatus for network-based portfolio management and risk-analysis |
US7051322B2 (en) * | 2002-12-06 | 2006-05-23 | @Stake, Inc. | Software analysis framework |
US7089542B2 (en) * | 2002-12-13 | 2006-08-08 | International Business Machines Corporation | Method and apparatus for finding errors in software programs using satisfiability of constraints |
US7093231B2 (en) * | 2003-05-06 | 2006-08-15 | David H. Alderson | Grammer for regular expressions |
US7818729B1 (en) * | 2003-09-15 | 2010-10-19 | Thomas Plum | Automated safe secure techniques for eliminating undefined behavior in computer software |
WO2005029241A2 (en) * | 2003-09-15 | 2005-03-31 | Plum Thomas S | Automated safe secure techniques for eliminating |
US7856624B2 (en) * | 2003-09-15 | 2010-12-21 | Thomas Plum | Automated safe secure techniques for eliminating undefined behavior in computer software |
US7636914B1 (en) * | 2003-10-24 | 2009-12-22 | The Math Works, Inc. | System and method for providing context to operator overloading |
US7340732B2 (en) * | 2003-11-26 | 2008-03-04 | Sun Microsystems, Inc. | Updating profile frequency for procedure inlining |
US7665075B1 (en) * | 2004-03-17 | 2010-02-16 | Sun Microsystems, Inc. | Methods for sharing of dynamically compiled code across class loaders by making the compiled code loader reentrant |
US7594221B2 (en) * | 2004-04-20 | 2009-09-22 | Hewlett-Packard Development Company, L.P. | Method and apparatus for translating binary code |
US7607120B2 (en) * | 2004-04-20 | 2009-10-20 | Hewlett-Packard Development Company, L.P. | Method and apparatus for creating data transformation routines for binary data |
US7673293B2 (en) * | 2004-04-20 | 2010-03-02 | Hewlett-Packard Development Company, L.P. | Method and apparatus for generating code for scheduling the execution of binary code |
CN100464329C (zh) * | 2005-06-14 | 2009-02-25 | 联想(北京)有限公司 | 动态结构化查询语言语句的构造方法 |
GB0514191D0 (en) | 2005-07-12 | 2005-08-17 | Ibm | Methods, apparatus and computer programs for optimized parsing and service invocation |
US7926046B2 (en) * | 2005-12-13 | 2011-04-12 | Soorgoli Ashok Halambi | Compiler method for extracting and accelerator template program |
US7818732B2 (en) * | 2006-05-08 | 2010-10-19 | Protomatics, Inc. | Transfer syntax notational system and method |
US8166465B2 (en) * | 2007-04-02 | 2012-04-24 | International Business Machines Corporation | Method and system for composing stream processing applications according to a semantic description of a processing goal |
US7941791B2 (en) * | 2007-04-13 | 2011-05-10 | Perry Wang | Programming environment for heterogeneous processor resource integration |
US8087011B2 (en) * | 2007-09-26 | 2011-12-27 | International Business Machines Corporation | Domain stretching for an advanced dual-representation polyhedral loop transformation framework |
US8087010B2 (en) * | 2007-09-26 | 2011-12-27 | International Business Machines Corporation | Selective code generation optimization for an advanced dual-representation polyhedral loop transformation framework |
US8056065B2 (en) * | 2007-09-26 | 2011-11-08 | International Business Machines Corporation | Stable transitions in the presence of conditionals for an advanced dual-representation polyhedral loop transformation framework |
US8156474B2 (en) * | 2007-12-28 | 2012-04-10 | Cadence Design Systems, Inc. | Automation of software verification |
US8181167B2 (en) * | 2008-01-09 | 2012-05-15 | Kan Zhao | Method and system for presenting and analyzing software source code through intermediate representation |
JP4336735B1 (ja) * | 2008-09-18 | 2009-09-30 | 株式会社三菱東京Ufj銀行 | サービス処理装置、システム、プログラム及び記録媒体 |
US8266604B2 (en) * | 2009-01-26 | 2012-09-11 | Microsoft Corporation | Transactional memory compatibility management |
-
2008
- 2008-02-04 CN CN200810005453.8A patent/CN101246486B/zh not_active Expired - Fee Related
- 2008-02-12 JP JP2008030358A patent/JP5400305B2/ja not_active Expired - Fee Related
- 2008-02-13 US US12/030,221 patent/US8161468B2/en not_active Expired - Fee Related
-
2012
- 2012-02-07 US US13/367,523 patent/US8381201B2/en not_active Expired - Fee Related
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104331278A (zh) * | 2014-10-15 | 2015-02-04 | 南京航空航天大学 | 一种用于arinc661规范的指令过滤方法和装置 |
CN104331278B (zh) * | 2014-10-15 | 2017-08-25 | 南京航空航天大学 | 一种用于arinc661规范的指令过滤方法和装置 |
CN106789245A (zh) * | 2016-12-22 | 2017-05-31 | 浪潮通信信息系统有限公司 | 一种基于jms的指令执行服务工具及方法 |
CN111095904A (zh) * | 2017-09-15 | 2020-05-01 | 康维达无线有限责任公司 | 通信网络中的服务层消息模板 |
CN111095904B (zh) * | 2017-09-15 | 2023-05-05 | 康维达无线有限责任公司 | 通信网络中的服务层消息模板 |
Also Published As
Publication number | Publication date |
---|---|
US20120137276A1 (en) | 2012-05-31 |
CN101246486B (zh) | 2012-02-01 |
JP5400305B2 (ja) | 2014-01-29 |
US8381201B2 (en) | 2013-02-19 |
US8161468B2 (en) | 2012-04-17 |
JP2008262541A (ja) | 2008-10-30 |
US20080196016A1 (en) | 2008-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101246486B (zh) | 用于改进的表达式处理的方法和装置 | |
US9767164B2 (en) | Context based data searching | |
EP2943859B1 (en) | System, method, and computer-readable medium for managing edge devices | |
US8554805B2 (en) | Methods and systems for importing source data | |
US6836890B1 (en) | Methods and systems for message translation and parsing of data structures in a distributed component architecture | |
US20070244971A1 (en) | Transaction-based enterprise application integration (EAI) and development system | |
CN101193077A (zh) | 用于订阅匹配的方法和系统 | |
US20080163269A1 (en) | Remote procedure call system, remote procedure call method, program for implementing remote procedure call system | |
US6766350B1 (en) | Shared management of data objects in a communication network | |
CN101930465A (zh) | 用于处理文档的方法 | |
CN102130843A (zh) | 基于智能文档平台的多渠道信息采集交换方法 | |
EP1686487A2 (en) | Mechanisms for transferring raw data from one data structure to another representing the same item | |
CN111324619A (zh) | 微服务系统中的对象更新方法、装置、设备和存储介质 | |
US20080313291A1 (en) | Method and apparatus for encoding data | |
CN101673299A (zh) | 一种erp系统及其数据搜索方法和装置 | |
CN1135483C (zh) | 提供出版/预订服务的消息代理系统和处理消息的方法 | |
CN109684450B (zh) | 一种基于语义化标识的工业网络数据分发服务系统及方法 | |
CN110597765A (zh) | 一种大零售呼叫中心异构数据源数据处理方法及装置 | |
US20060004838A1 (en) | Sharing large objects in distributed systems | |
CN109241164A (zh) | 一种数据处理方法、装置、服务器及存储介质 | |
CN104572945A (zh) | 一种基于云存储空间的文件搜索方法和装置 | |
CN117194080B (zh) | 消息处理方法及装置 | |
CN112925655B (zh) | 划分服务的解耦系统及其方法 | |
JP5732926B2 (ja) | リモートプロシージャコール処理方法 | |
CN111132121B (zh) | 信息处理方法和网络仓库功能nrf网元 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120201 Termination date: 20190204 |