对复杂事件处理(CEP)中的新插入流(ISTREAM)操作的支持转让专利

申请号 : CN201280022008.7

文献号 : CN103502930B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : V·舒克拉A·斯里尼瓦桑

申请人 : 甲骨文国际公司

摘要 :

本发明的一个实施例包括处理流式数据的方法。该方法包括初始化数据流,以及设置要应用于数据流的时间间隔。时间间隔包括用于分析数据流内的数据的窗口。该方法还包括标识数据流内的一个或多个列、指定要被监测在所述时间间隔内所述数据内的差异的所述列中的一个或多个,以及监测在所述时间间隔内所指定的列。进一步地,该方法包括判断所指定的列中的至少一个的至少一个值已经变化,响应于至少一个值变化,从所指定的列输出变化的值。

权利要求 :

1.一种处理流式数据的方法,所述方法包括:初始化数据流以用于上下文查询语言CQL操作;

设置CQL操作的要应用于所述数据流的时间间隔,其中,所述时间间隔包括用于分析所述数据流内的数据的窗口;

标识所述数据流内的一个或多个列;

通过所述CQL操作的关系到流操作符,指定所述列中的一个或多个以监测在所述时间间隔内所述数据内的差异;

通过所述关系到流操作符,监测在所述时间间隔内在所指定的列内发生的对数据的更改;

通过所述关系到流操作符,判断来自所指定的列中的至少一个的至少一个值已经变化;以及响应于至少一个值变化,使用所述CQL操作,从所指定的列输出在所述时间间隔期间发生的变化的值。

2.如权利要求1所述的处理流式数据的方法,进一步包括在下一时间间隔内继续从所述数据流接收数据。

3.如权利要求2所述的处理流式数据的方法,其中,所述从所述数据流接收数据基本上是实时的。

4.如权利要求1所述的处理流式数据的方法,其中,对所述流式数据的处理包括复杂事件处理CEP。

5.一种处理流式数据的方法,该方法包括:通过应用上下文查询语言CQL操作的关系到流操作符,将关系数据转换为流式数据;

确定由限制约束应用的所述流式数据内的一个或多个段,其中,所述限制约束指定段边界;

从数据流标识列;

通过所述关系到流操作符,选择所确定的段上的所标识的列;

通过所述关系到流操作符,选择列以监测所确定的段上的所述列内的数据的变化;

通过所述关系到流操作符,对被应用于所监测的列的所确定的段上的所选择的列执行多重集istream操作;以及从所述多重集istream操作输出所产生的数据。

6.如权利要求5所述的方法,其中,所述段边界包括时间间隔。

7.如权利要求6所述的方法,其中,所述时间间隔包括用于分析所指定的列数据内的变化的时间窗口。

8.一种用于处理流式数据的系统,所述系统包括:在其上存储了指令集的存储器;以及

与所述存储器耦合的处理器,其中,所述指令集当由所述处理器执行时,使所述处理器:初始化数据流以用于上下文查询语言CQL操作;

设置CQL操作的要应用于所述数据流的时间间隔,其中,所述时间间隔包括用于分析所述数据流内的数据的窗口;

标识所述数据流内的一个或多个列;

通过所述CQL操作的关系到流操作符,指定所述列中的一个或多个以监测在所述时间间隔内所述数据内的差异;

通过所述CQL操作的关系到流操作符,在所述时间间隔内监测所指定的列;

通过所述关系到流操作符,判断来自所指定的列中的至少一个的至少一个值已经变化;以及响应于至少一个值变化,使用所述CQL操作,从所指定的列输出在所述时间间隔期间发生的变化的值。

9.如权利要求8所述的用于处理流式数据的系统,其中,所述一个或多个列被包括在一个或多个表中,所述一个或多个表是从所述时间间隔内的所述数据流构建的。

10.如权利要求8所述用于处理流式数据的系统,其中,对所述流式数据的处理包括复杂事件处理CEP。

11.一种处理流式数据的系统,所述系统包括:用于初始化数据流以用于上下文查询语言CQL操作的装置;

用于设置CQL操作的要应用于所述数据流的时间间隔的装置,其中,所述时间间隔包括用于分析所述数据流内的数据的窗口;

用于标识所述数据流内的一个或多个列的装置;

用于通过所述CQL操作的关系到流操作符指定所述列中的一个或多个以监测在所述时间间隔内所述数据内的差异的装置;

用于通过所述CQL操作的关系到流操作符在所述时间间隔内监测所指定的列的装置;

用于通过所述CQL操作的关系到流操作符判断来自所指定的列中的至少一个的至少一个值已经变化的装置;以及用于响应于在所述时间间隔期间至少一个值变化,使用所述CQL操作从所指定的列输出变化的值的装置。

12.如权利要求11所述的处理流式数据的系统,进一步包括用于在下一时间间隔内继续从所述数据流接收数据的装置。

13.如权利要求12所述的处理流式数据的系统,其中,所述从所述数据流接收数据基本上是实时的。

14.如权利要求11所述的处理流式数据的系统,其中,对所述流式数据的处理包括复杂事件处理CEP。

15.一种处理流式数据的系统,该系统包括:用于通过应用上下文查询语言CQL操作的关系到流操作符,将关系数据转换为流式数据的装置;

用于确定由限制约束应用的所述流式数据内的一个或多个段的装置,其中,所述限制约束指定段边界;

用于从数据流标识列的装置;

用于通过所述关系到流操作符选择所确定的段上的所标识的列的装置;

用于通过所述关系到流操作符选择列以监测所确定的段上的所述列内的数据的变化的装置;

用于通过所述关系到流操作符对被应用于所监测的列的所确定的段上的所选择的列执行多重集istream操作的装置;以及用于从所述多重集istream操作输出所产生的数据的装置。

16.如权利要求15所述的系统,其中,所述段边界包括时间间隔。

17.如权利要求16所述的系统,其中,所述时间间隔包括用于分析所指定的列数据内的变化的时间窗口。

说明书 :

对复杂事件处理(CEP)中的新插入流(ISTREAM)操作的支持

[0001] 对相关申请的交叉引用
[0002] 此“专利合作条约”申请要求2011年5月6日提交的标题为“SUPPORT FOR A NEW INSERT STREAM(ISTREAM)OPERATION IN COMPLEX EVENT PROCESSING(CEP)”的美国非临时专利申请No.13/102,665的优先权,此处引用了其全部内容作为参考。

背景技术

[0003] 通常,“复杂事件处理”(CEP)是实时地聚集来自分布式基于消息的系统、数据库和应用的信息并且动态地应用规则以辨别否则可能不被注意的模式和趋势的方法。这可以给予公司跨高度复杂、分布式的,并且异种环境来识别并且甚至预期由表面上不相关的事件所表示的异常和机会的能力,CEP还被用来几乎实时地关联、聚集、丰富,以及检测高速度流式数据中的模式。此外,CEP还通过流的概念来支持无限制的数据的成流。流是数据项的无限制的集合,最为对比,选择是数据项的有限集合——非常像在传统的数据库系统中那样。目前,存在各种从流转换为关系以及执行相反的操作的操作符。
[0004] 此外,ISTREAM(或插入流)是操作符中的将关系转换为流的一个操作符。ISTREAM在考虑一个关系的所有列的情况下根据时间R(t)和R(t-1)来计算一个关系的多重集差异。如此,由于考虑了所有列,因此,输出数据可能包括不必要的或不希望有的信息。因此,通过本发明来补救这些及其他缺点。

附图说明

[0005] 结合附图描述本发明:
[0006] 图1是示出了根据本发明的各实施例的对流式数据的处理的流程图;
[0007] 图2是示出了根据本发明的进一步的实施例的对流式数据的处理的流程图;
[0008] 图3是示出了根据本发明的各实施例的用于处理流式数据的系统的框图;
[0009] 图4是示出了根据本发明的各实施例的与处理流式数据相关的表的图示;
[0010] 图5是能够用于本发明的设备或系统的至少某些部分中,或实现本发明的方法的至少某些部分的示例性计算机系统的框图;以及
[0011] 图6是示出了用于实现本发明的各实施例的示例性联网系统的框图。
[0012] 在附图中,类似的组件和/或特征可以具有相同的数字附图标记。进一步地,相同类型的各种组件可以通过在附图标记之后添加区别类似的组件和/或特征的字母来区别。如果只有第一数字附图标记用于说明书中,则描述适用于具有相同第一数字附图标记的类似的组件和/或特征中的任何一个,不管字母后缀是什么。

发明内容

[0013] 本发明的一个实施例包括处理流式数据的方法。该方法包括初始化数据流,以及设置要应用于数据流的时间间隔。该时间间隔包括用于分析数据流内的数据的窗口。该方法还包括标识数据流内的一个或多个列,指定要被监测在所述时间间隔内所述数据内的差异的所述列中的一个或多个,以及,在所述时间间隔内监测所述指定的列。进一步地,该方法包括判断所述指定的列中的至少一个的至少一个值已经变化,并且响应于至少一个值变化,从所述指定的列输出变化的值。
[0014] 在再一个实施例中,描述了用于处理流式数据的系统。该系统包括在其上存储了指令集的存储器以及与存储器耦合的处理器。指令集在由处理器执行时,使处理器:初始化数据流,以及,设置要应用于数据流的时间间隔。该时间间隔包括用于分析数据流内的数据的窗口。指令进一步使处理器标识数据流内的一个或多个列,指定要被监测在所述时间间隔内所述数据内的差异的所述列中的一个或多个,在所述时间间隔内监测所述指定的列,判断所述指定的列中的至少一个的至少一个值已经变化,以及,响应于至少一个值变化,从所述指定的列输出变化的值。
[0015] 本发明的进一步的实施例包括用于处理流式数据的计算机可读介质。该计算机可读介质包括用于初始化数据流,以及设置要应用于数据流的时间间隔的指令。该时间间隔包括用于分析数据流内的数据的窗口。该计算机可读介质还包括用于标识数据流内的一个或多个列、指定要被监测在所述时间间隔内所述数据内的差异的所述列中的一个或多个,以及在所述时间间隔内监测所述指定的列的指令。进一步地,该计算机可读介质包括用于判断所述指定的列中的至少一个的至少一个值已经变化,并且响应于至少一个值变化,从所述指定的列输出变化的值的指令。

具体实施方式

[0016] 下面的描述只提供示例性实施例,不打算限制本发明的范围、适用性,或配置。相反,随后的对示例性实施例的描述将为那些熟悉本领域技术人员提供用于实现一个或多个示例性实施例的支持性描述,可以理解,在不偏离如在所附权利要求书中阐述的本发明的精神和范围的情况下,可以对元件的功能和布局进行各种更改。
[0017] 在下面的描述中给出了具体细节以提供对各实施例的全面的理解。然而,本领域技术人员将理解,这些实施例也可以在没有这些具体细节的情况下实施。例如,本发明中的电路、系统、网络、进程,及其他元素可以以框图形式作为组件示出,以便不致以不必要的细节使各实施例模糊。在其他情况下,已知的电路、进程、算法、结构,以及技术可以在没有不必要的细节的情况下被示出,以便避免使各实施例模糊。
[0018] 此外,还要注意,各个实施例可以描述为被描绘成流图、流程图、数据流程图、结构图或框图的进程。虽然流图可以将操作描述为顺序进程,但是,许多操作可以并行地或同时执行。另外,还可以重新排列操作的顺序。当其操作完成时,进程可以结束,但是,可以具有图中未讨论或包括的额外的步骤。此外,并非任何具体描述的进程中的所有的操作都可以在所有实施例中出现。进程可以对应于方法、函数、进程、子例程、子程序等等。当进程对应于函数时,其结束对应于函数返回到调用函数或主函数。
[0019] 术语“机器可读取的介质”包括但不仅限于:便携式或固定存储器设备、光存储设备、无线信道,以及能够存储、包含或携带指令和/或数据的各种其他介质。代码段或机器可执行指令可以表示过程、函数、子程序、程序、例程、子例程、模块、软件程序包、类,或指令、数据结构,或程序语句的任何组合。代码段可以通过传递和/或接收信息、数据、自变量、参数或存储器内容,耦合到另一代码段或硬件电路。可以通过包括存储器共享、消息传递、令牌传递、网络传输等等的任何合适的手段,传递、转发或传输信息、自变量、参数、数据等等。
[0020] 此外,本发明的各实施例还可以至少部分地人工地或自动地来实现。手动或自动实现可以通过使用机器、硬件、软件、固件、中间件、微代码、硬件描述语言,或其任何组合来执行,或至少协助。当以软件、固件、中间件或微代码来实现时,执行必要的任务的程序代码或代码段可以存储在机器可读的介质中。处理器可以执行必要的任务。
[0021] 本发明的各方面涉及元组的某些列值(或派生值)经常在两个连续的时间实例(即,t和t+1)之间变化而其他列值不变化的概念。可能有应用关注只对列的子集的更改的情况;然而,ISTREAM当前考虑所有列,甚至在所关注的列的值(或派生值)不变化的情况下,也报告元组。如此,可以输出数据中的与应用无关的变化。为此,本发明的各方面提供不仅考虑列的子集,而且还包括诸如NOT IN语义之类的新的语义的ISTREAM。查询可能十分复杂,并且由于ISTREAM实际处理从查询的执行实体化的关系,本发明的各方面还可以将如前所述的逻辑应用到SELECT列表表达式,并将它应用到其子集。对带有NOT IN语义的列的子集应用ISTREAM操作符提供了以简洁的方式来表达输出的方便的句法符号。
[0022] 现在,考虑下列查询:
[0023] CREATE QUERY q0AS
[0024] ISTREAM
[0025] (
[0026] SELECT*FROM S[RANGE1NANOSECONDS]
[0027] )
[0028] DIFFERENCE USING(c1,c2)
[0029] 这实际可能导致非确定性的输出(即,挑选哪一个元组(因而c3的列值)和不考虑哪一个)。另一替代方案是只允许基于在USING子句中指定的列的列或表达式:
[0030] CREATE QUERY q0AS
[0031] ISTREAM
[0032] (
[0033] SELECT c1,c2,func(c1,c2)FROM tkdata1_S[RANGE1NANOSECONDS]
[0034] )
[0035] DIFFERENCE USING(c1,c2)
[0036] 或者
[0037] CREATE QUERY tkdata1_q1AS
[0038] ISTREAM
[0039] (
[0040] SELECT func(c1,c2)FROM tkdata1_S[RANGE1NANOSECONDS]
[0041] )
[0042] DIFFERENCE USING(c1,c2)
[0043] 然而,这些表达式限制性太强,没有用。因此,本发明的各方面可以使用NOT IN(这与MINUS语义相同,只是MINUS严格地对集合起作用,而本发明允许多重集/袋),这恰好导致所需行为,而没有如前所述的任何一个限制。相应地,利用给定语义,对于下列查询和给定输入流,输出可以如下所示:
[0044]
[0045] 在一个实施例中,USING子句中的表达式可以通过使用引用选择表达式的位置的编号位置(1..N)来指定,或通过使用引用选择列表中的别名的诸如c1、c2之类的属性来指定。如果选择列表包含复杂表达式,那么它可以适当地取别名,因为USING子句不允许表达式被指定。
[0046] 本发明的进一步的方面包括下列算法。例如,假设属于T的流元素的时间戳(即,其中,T是离散排序的时间域)。下面以抽象术语描述了一种实现和算法。
[0047]
[0048] 本发明的某些可能的优点可以是,用户被允许声明性地并简明地指定涉及多重集not in语义的复杂逻辑。这样的功能可以完全地并且无缝地集成到例如服务器内的声明性框架中,而不要求用户编写大量的代码和/或借助于诸如RSTREAM之类的昂贵的操作。本发明还可以优化存储器。大多数用户具有带有大量的字段的事件,但是只有它们的子集是所关注的。在这样的情况下,ISTREAM多重集except语义(以前的行为)可能不仅是昂贵的,而且还是不合乎需要的。此外,可能不可以组合其他当前上下文查询语言(CQL)构造与比得上本发明支持的语义(多重集NOT IN)。此外,ISTREAM操作符的这种新变体通过消除不关注的事件等,当只对SELECT表达式的子集感兴趣时,在设计应用时给用户提供了额外的灵活性,同时带有确定性语义、重大的性能改善。
[0049] CQL术语:
[0050] 流:流是甲骨文的CQL查询所处理的主要数据源。流S是元素(s,T)的袋多集,s处于S的模式中,T处于时域中。流元素是元组-时间戳对,可以表示为带有时间戳的元组插入的序列。换言之,流是带有时间戳的元组的序列。可以有多于一个的带有相同时间戳的元组。需要输入流的元组按照时间戳增大的顺序到达系统。流具有包括一组被命名的属性的相关联的模式,流的所有元组都符合该模式。
[0051] 时间:时间戳是甲骨文的CEP流的组成部分。然而,时间戳不一定等同于时钟时间。例如,时间可以在其中它通过序列号来表示的应用域中来定义。时间戳只需保证更新按照时间戳值增大的顺序到达系统。注意,时间戳排序要求是一个流或关系特定的。例如,不同的流的元组可以任意交织。甲骨文的CEP可以观察应用时间或系统时间。
[0052] 对于带有系统时间戳的关系或流,时间依赖于数据到达关系或流式数据源。如果超过指定的时间:例如1分钟,没有活动(无数据到达流或关系的源),则甲骨文的CEP在带有系统时间戳的关系或流上生成心跳。关系或流通过其指定的源来填充或者甲骨文的CEP每分钟生成心跳。如此,关系或流永远不会落后1分钟以上。对于带有系统时间戳的流和关系,系统以没有两个事件将具有相同时间值的方式来分配时间。然而,对于带有应用时间戳的流和关系,事件可以具有相同时间值。
[0053] 元组类型:CEP元组类型指示符是:+,插入的元组,-,删除的元组。应该注意,这些术语只是为清晰而提供的,也可以使用这些术语的其他定义和解释,如本领域的技术人员所知道的。
[0054] 现在转向图1,该图示出了根据本发明的各实施例的处理流式数据的方法100。在进程框105,可以初始化数据流。在一个实施例中,该流可以与特定应用或应用的集合相关联。进一步地,该流可以是CEP流等。此外,流式数据还可以包括表,表又包含列和/或字段。流式数据还可存储在一个或多个数据库中。
[0055] 在进程框110,数据流内的一个或多个列可以被标识为“感兴趣的”列。在一个实施例中,感兴趣的列可以是应用(或用户)对在这些列内的数据发生的变化有兴趣的列。此外,用于处理数据流的时间间隔可以与数据流相关联(进程框115)。例如,时间间隔可以是1纳秒、10纳秒、1毫秒、10毫秒,等等,并且时间间隔可以提供用于分析数据流内的数据的窗口。在一个实施例中,窗口可以提供用于在数据流内创建表的关系。表可以利用在窗口内(即,在时间间隔内)来自流的数据来填充。
[0056] 在进程框120,可以选择表内的一个或多个列,来监测这些列中所包括的数据内的差异。例如,如果表包括十列A-J,并且选择列A和C来监测,那么,只有在对列A或者C发生更改时,查询才将生成输出。如此,输出将包含被认为与用户和/或应用相关的信息。
[0057] 相应地,监测所选列在时间间隔内的变化(进程框125)。如果发生了变化(判断框130),那么,对于当前时间间隔输出所选列的差异(进程框135)。作为替代地,如果在所选列内的数据没有发生变化,那么,对于数据流的持续期内的随后的时间间隔,继续监测所选列(进程框140)。
[0058] 方法100的实现的一个示例可以对于交通数据。对于在高速路上行驶的给定汽车的交通数据的流可以包括多个变量(例如,速度、位置、时间、路段等等)。可以将这些变量中的每一个转换成表内的列,并且列内的数据可以连续地变化。然而,只有数据中的某些变化才会对应用有用处。在一个实施例中,应用是基于所行驶的路段来收取通行费的通行费应用。如此,只有知道何时汽车从一个高速路段行驶到另一段高速路才对该应用有价值。
[0059] 因此,例如,速度变化可能不值得输出。另外,很可能速度变化在几乎每个时间间隔内发生。同样,时间和位置可能不值得输出变化,但是,路段的变化值得输出。如此,随着汽车在高速路上移动,监测位置(或坐标),以判断当前路段是否发生了变化。如此,如果位置从一个路段内的位置变为另一路段内的位置,则将输出这样的变化。因此,在此示例中,收通行费应用可以基于路段变化来计算额外的通行费,而忽略速度、时间,以及位置变化。
[0060] 现在参考图2,该图示出了根据本发明的各实施例的处理流式数据的方法200。在进程框205,可以通过应用ISTREAM操作将关系数据转换为流式数据。然后,基于如应用于限制约束的流式数据,可以确定数据流内的段(进程框210)。
[0061] 在进程框215,数据流内的至少一个列可以被标识为包括其中应用对查看变化有兴趣的数据。在进程框220,在确定的段内选择标识的列。然后,可以监测对标识的列内的数据的更改(进程框225)。在进程框230,执行在确定的段内被选择作为应用于监测的列的所选列的多重集ISTREAM操作。如此,从多重集ISTREAM操作所产生的数据只包括所关注的列的变化数据,然后输出这样的变化(进程框235)。
[0062] 图3是示出了根据本发明的各实施例的用于处理流式数据的系统300的框图。在一个实施例中,系统300包括流式数据源305。流式数据源305可以与包括CEP处理器315的应用服务器310通信。在一个实施例中,CEP处理器315可以被配置成实现图1和2中的方法100和200。此外,应用服务器310可以与数据库320和输出设备325进行通信。在一个实施例中,数据库320可以存储来自流式数据源305的数据,并且可以使用输出设备325来显示对被监测的数据的所产生的更改。此外,数据库320可以远离应用服务器310或与应用服务器310在一起。
[0063] 现在转向图4,示出了根据本发明的各实施例的与对流式数据的处理相关的表。可以使用下面的查询来生成图4的结果表:
[0064] CREATE QUERY q0AS
[0065] ISTREAM(SELECT c1FROM S[RANGE1NANOSECONDS])
[0066] DIFFERENCE USING(c1)[or(1)]
[0067] 如此,在时间戳1000,基于在该间隔内发生的变化,输出将是“5”。在时间戳1000,基于在该间隔内发生的变化,输出将是“6”。类似地,在时间戳1000,基于在该间隔内发生的变化,输出将是“7”。由于“5”、“6”和“7”已经包括在数据集内这一事实,间隔1001将不具有任何输出。在时间戳1001,由于变化,“8”将是输出。
[0068] 由于“5”不是变化并且间隔的其余部分包括去除,因此,间隔1003和1004将不包括任何输出。随后,在时间戳1004,由于“5”曾经被从数据集中删除,不输出“5”的添加,因为它不是对数据集的更改。
[0069] 在一个实施例中,没有输出,直到有时间的进展。这可以是由于另一-ve元组可能在没有被看见的相同时间戳到来,如此,抵消已经被看见的+ve。如此,输出应该是在一个时间戳以后,但是仍传播它过去被看见时的时间戳。(可以存在元素时间的隐藏列的形式,但是,一些应用可以选择忽略它)
[0070] 图5是示出了其中可以实现本发明的各实施例的示例性计算机系统500的框图。示出了包括可以通过总线590电耦合的硬件元件的计算机系统500。这些硬件元件可以包括一个或多个中央处理单元510、一个或多个输入设备520(例如,鼠标、键盘等等),以及一个或多个输出设备530(例如,显示设备、打印机等等)。计算机系统500还可包括一个或多个存储设备540。作为示例,存储设备540可以是磁盘驱动器、光存储设备、诸如随机存取存储器(“RAM”)和/或只读存储器(“ROM”)之类的固态存储设备,它们可以是可编程的,可flash更新的和/或等等。
[0071] 计算机系统500可以另外包括计算机可读存储介质阅读器550、通信系统560(例如,调制解调器、网卡(无线或有线)、红外通信设备、蓝牙TM设备、蜂窝通信设备等等),以及可以包括如上文所描述的RAM和ROM设备的工作存储器580。在某些实施例中,计算机系统500还可包括处理加速单元570,其可包括数字信号处理器、专用处理器和/或等等。
[0072] 计算机可读存储介质阅读器550还可以连接到计算机可读存储介质,一起(并可任选地,与存储设备540相结合)全面表示远程、本地、固定,和/或可移动存储器设备加用于临时和/或更加永久地包含计算机可读信息的存储介质。通信系统560可以允许数据与上文所描述的网络、系统、计算机和/或其他组件交换。
[0073] 计算机系统500还可包括软件元件,被示为当前位于工作存储器580内,包括操作系统588和/或其他代码584。应该理解,计算机系统500的替换实施例可以具有上文所描述的那些实施例的很多变体。例如,也可以使用定制的硬件,和/或特定元件可以以硬件、软件(包括诸如小程序之类的可移植软件)或两者来实现。此外,还可进行到诸如网络输入/输出和数据获取设备之类的其他计算设备的连接。
[0074] 计算机系统500的软件可以包括用于实现如此处所描述的体系结构的各种元件的功能中的任何一个或全部的代码584。例如,存储在诸如系统500之类的计算机系统上和/或由其执行的软件可以提供诸如上文所讨论的那些之类的本发明的功能和/或其他组件。上文比较详细地讨论了可由这些组件中的某些上的软件实现的方法。
[0075] 只作为示例,图6示出了可以根据一组实施例使用的系统600的示意图。系统600可包括一个或多个用户计算机605。用户计算机605可以是通用个人计算机(包括,只作为示TM TM例,运行微软公司的Windows 和/或苹果公司的Macintosh 操作系统中的任何合适的所喜好软件的个人计算机和/或膝上型计算机)和/或运行各种市场上销售的UNIXTM或类似于UNIX的操作系统中的任何一个的工作站计算机。这些用户计算机605还可以具有各种应用中的任何一种,包括被配置成执行本发明的方法的一个或多个应用,以及一个或多个办公应用、数据库客户端和/或服务器应用,以及web浏览器应用。作为替代地,用户计算机605可以是能够通过网络(例如,下面所描述的网络610)进行通信和/或显示并导航网页或其他类型的电子文档的任何其他电子设备,诸如瘦客户端计算机、能上网的移动电话,和/或个人数字助理(PDA)。虽然示例性系统600被示为带有三个用户计算机605,但是可以支持任意数量的用户计算机。
[0076] 本发明的某些实施例在可包括网络610的联网环境中操作。网络610可以是本领域技术人员所熟知的可以支持使用各种市场上销售的协议中的任何一种,包括但不仅限于TCP/IP、SNA、IPX、AppleTalk等等,来进行数据通信的任何类型的网络。只作为示例,网络610可以是局域网(“LAN”),包括但不仅限于以太网、令牌环网络和/或等等;广域网(WAN);
虚拟网络,包括但不仅限于虚拟专用网络(“VPN”);因特网;内联网;外部网;公用交换电话网(“PSTN”);红外网络;无线网络,包括但不仅限于根据IEEE802.11协议套件中的任何一个、本领域内已知的蓝牙TM协议,和/或任何其他无线协议操作的网络;和/或这些和/或其他网络的任何组合。
[0077] 本发明的各实施例可包括一个或多个服务器计算机615。服务器计算机615中的每一个都可以配置有操作系统,包括但不仅限于上文所讨论的那些中的任何一个,以及任何市场上销售的(或免费的)服务器操作系统。服务器615中的每一个都还可运行一个或多个应用,这些应用可以被配置成向一个或多个用户计算机605和/或其他服务器计算机615提供服务。
[0078] 只作为示例,服务器615中的一个可以是web服务器,该web服务器可以用于,只作为示例,处理来自用户计算机605的对网页或其他电子文档的请求。web服务器还可以运行各种服务器应用,包括HTTP服务器、FTP服务器、CGI服务器、数据库服务器、JavaTM服务器等等。在本发明的某些实施例中,web服务器可以被配置成提供可以在用户计算机605中的一个或多个上的web浏览器内操作以执行本发明的方法的网页。
[0079] 服务器计算机615,在某些实施例中,可以包括一个或多个应用服务器,这些应用服务器可包括可由在用户计算机605和/或其他服务器计算机615中的一个或多个上运行的客户端访问的一个或多个应用。只作为示例,服务器计算机615可以是一个或多个能够响应于用户计算机605和/或其他服务器计算机615而执行程序或脚本的通用计算机,程序或脚本包括但不仅限于web应用(在某些情况下,可以被配置成执行本发明的方法)。只作为示例,web应用可被实现为以任何合适的编程语言,诸如JavaTM、C、C#TM、或C++,和/或任何脚本语言,诸如Perl、Python或TCL,以及任何编程/脚本语言的组合编写的一个或多个脚本或程序。应用服务器还可以包括数据库服务器,包括但不仅限于,OracleTM、MicrosoftTM、SybaseTM、IBMTM等等在市场上销售的那些,它们可以处理来自在用户计算机605和/或另一服务器计算机615上运行的客户端(包括,取决于配置,数据库客户端、API客户端、web浏览器等等)的请求。在某些实施例中,应用服务器可以动态地创建用于显示根据本发明的各实施例的信息的网页。由应用服务器所提供的数据可以被格式化为网页(包括例如HTML、Javascript等等)和/或可以通过web服务器被转发到用户计算机605(例如,如上文所描述的)。类似地,web服务器可以接收来自用户计算机605的网页请求和/或输入数据,和/或将网页请求和/或输入数据转发到应用服务器。在某些情况下,web服务器可以与应用服务器集成。
[0080] 根据进一步的实施例,一个或多个服务器计算机615可以充当文件服务器和/或可包括由在用户计算机605和/或另一服务器计算机615上运行的应用所包括的实现本发明的方法所必需的文件中的一个或多个(例如,应用代码、数据文件等等)。作为替代地,如本领域技术人员将理解的,文件服务器可包括所有必需的文件,允许这样的应用由用户计算机605和/或服务器计算机615远程调用。应该注意,参考此处的各种服务器(例如,应用服务器、数据库服务器、web服务器、文件服务器等等)所描述的功能可以由单一服务器和/或多个专门的服务器来执行,取决于实现方式所特定的需求和参数。
[0081] 在某些实施例中,系统可包括一个或多个数据库620。数据库620的位置是自行决定的。只作为示例,数据库620a可以驻留在服务器计算机615a(和/或用户计算机605)本地的(和/或常驻的)存储介质上。作为替代地,数据库620b可以远离计算机605、615中的任何一个或全部,只要数据库可以与这些中的一个或多个进行通信(例如,通过网络610)。在特定的实施例组中,数据库620可以驻留在本领域技术人员所熟知的存储区域网络(“SAN”)中。(类似地,用于执行归属于计算机605、615的功能的任何必需的文件可以适当地本地和/或远程存储在相应的计算机上。)在一组实施例中,数据库620可以是诸如OracleTM数据库之类的适于响应于SQL格式化的命令而存储、更新,并取出数据的关系数据库。例如,如上文所描述的,数据库可以由数据库服务器来控制和/或维护。
[0082] 为了出于清楚和理解的目的详细描述了本发明。然而,将理解,在所附权利要求书的范围内,可以实施某些变化和修改。