管理层级实体的计算转让专利

申请号 : CN201580047174.6

文献号 : CN106796598B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : C·W·斯坦菲尔R·夏皮罗

申请人 : 起元科技有限公司

摘要 :

实体数据表示根据层级关系相关的实体,至少一个根实体(228A)处于最高层以及一个或多个实体(228B、228C、228D)处于比最高层低的一层或多层。一个或多个实体每个具有多个实例,并且针对每个实例具有相应元素的至少一个属性。输入数据包括表达式(226),表达式表示自变量的函数,一个或多个自变量引用实体数据中表示的实体的属性。处理表达式包括:分析表达式,以便为一个或多个属性中的每个属性确定以下中的至少一个:该属性的实体在层级关系中的位置,或应用于引用该属性的自变量的函数的结果的元素的数量;以及估算表达式,或基于分析表达式的结果指示错误。

权利要求 :

1.一种计算系统,包括:

数据存储系统,存储表示多个实体的实体数据,所述多个实体根据层级关系相关,其中至少一个根实体处于所述层级关系的最高层,并且一个或多个实体处于比所述层级关系的最高层低的一层或多层,处于比所述根实体低的层的每个实体是一单个实体的孩子实体,并且一个或多个实体每个具有:多个实例和针对每个实例具有相应元素的至少一个属性;

输入装置或端口,用于接收输入数据,所述输入数据包括一个或多个表达式,每个表达式表示一个或多个自变量的一个或多个函数,一个或多个自变量引用在所述实体数据中表示的实体的属性;以及至少一个处理器,配置为处理所述输入数据中所包括的表达式,所述处理包括:

分析表达式,以便为由表达式的自变量所引用的一个或多个属性中的每个属性确定以下中的至少一个:(1)该属性的实体在所述层级关系中的位置,或者(2)应用于引用该属性的自变量的函数的结果的元素的数量;以及估算表达式或基于分析表达式的结果指示错误,

其中所述确定该属性的实体在所述层级关系中的位置包括:基于从根实体开始,经过根据父-子关系相关的实体的链到该属性的实体的路径,确定该属性的上下文;

其中分析表达式还包括:执行提升程序,所述提升程序包括:为由该表达式的自变量引用的至少第一属性,提升作为第一实体的祖先的实体的第二属性的上下文,其中该表达式的自变量引用该第二属性,并且其中提升该第二属性的上下文包括用该第一属性的上下文代替该第二属性的上下文。

2.根据权利要求1所述的计算系统,其中所述输入数据包括第一表达式,所述第一表达式定义所述实体数据中表示的第一实体的第一属性的一个或多个元素的值。

3.根据权利要求2所述的计算系统,其中所述第一表达式引用所述实体数据中表示的第二实体的第二属性定义所述第一属性的一个或多个元素的值。

4.根据权利要求3所述的计算系统,其中所述计算系统包括事务处理系统。

5.根据权利要求4所述的计算系统,其中所述第一实体具有与所述事务处理系统中的不同购买项目相对应的实例,所述第二实体具有与所述事务处理系统中的不同客户相对应的实例。

6.根据权利要求2所述的计算系统,其中所述处理还包括:在估算所述第一表达式之后,更新所述实体数据以表示所述第一属性的一个或多个元素的值。

7.根据权利要求1所述的计算系统,其中在至少一个表达式中的至少一个函数包括对两个或更多运算对象进行运算的两个或更多运算符,两个或更多运算对象引用由所存储数据表示的实体的属性。

8.根据权利要求7所述的计算系统,其中分析表达式还包括:确定被引用属性包括仅一个矢量值被引用属性以及一个或多个标量值被引用属性;并且估算表达式包括:为所述矢量值被引用属性的每一个元素复制所述标量值被引用属性。

9.根据权利要求7所述的计算系统,其中分析表达式还包括:确定被引用属性包括多个矢量值被引用属性;并且比较所述多个矢量值被引用属性中的两个或更多矢量值被引用属性在所述层级关系中的相应位置。

10.根据权利要求7所述的计算系统,其中所述处理包括:基于多个矢量值被引用属性中的两个或更多矢量值被引用属性在所述层级关系中具有不同相应位置来指示错误。

11.根据权利要求1所述的计算系统,其中所述处理包括:基于由第一表达式的第一自变量引用的第一属性的上下文与由该第一表达式的第二自变量引用的第二属性的上下文不同来指示错误。

12.根据权利要求1所述的计算系统,其中分析表达式包括:为相应自变量所引用的两个或多个属性中的每个属性确定该属性的实体在所述层级关系中的位置。

13.根据权利要求12所述的计算系统,其中分析表达式包括:比较所确定的位置,并且响应于至少两个所确定的位置相对于应用到它们各自自变量的函数之间具有不相符性,指示错误。

14.根据权利要求1所述的计算系统,其中分析表达式包括:为由自变量所引用的一个或多个属性中的每个属性,确定应用于引用了该属性的自变量的函数的结果的元素的数量。

15.根据权利要求14所述的计算系统,其中分析表达式包括:为由聚合函数的自变量引用的至少第一属性,确定所述聚合函数的结果的元素的数量,并且响应于该结果不对应相对于该第一属性的实体的标量值,重复应用所述聚合函数一次或多次,直到该结果对应相对于该第一属性的实体的标量值。

16.根据权利要求1所述的计算系统,其中,分析表达式还包括:当表达式包括两个或更多属性时,确定所述两个或更多属性中的每一对是否相符,其中,当应用于成对的属性的表达式中的运算没有导致表达式错误时,所述成对的属性被确定为相符。

17.根据权利要求16所述的计算系统,其中,确定所述两个或更多属性中的每一对是否相符包括:确定所述两个或更多属性的所述每一对中的一个属性的一个上下文是否与所述两个或更多属性的所述每一对中的另一个属性的另一个上下文相同,或者确定所述一个属性的所述一个上下文是否是所述另一个属性的所述另一个上下文的前缀,其中所述一个上下文定义了所述层级关系的根实体到所述一个属性的第一实体之间的实体路径,所述一个上下文指明了所述第一实体在所述层级关系中的位置,所述另一个上下文定义了根实体到所述另一个属性的另一实体之间的另一实体路径,所述另一个上下文指明了所述另一实体在所述层级关系中的位置。

18.根据权利要求16所述的计算系统,其中,确定所述两个或更多属性中的每一对是否相符包括:响应于成对的属性中的第一属性和第二属性是矢量的第一确定,确定应用于第一矢量属性和第二矢量属性的表达式内的矢量运算是否没有导致矢量运算错误。

19.一种方法,包括:

在数据存储系统中存储表示多个实体的实体数据,所述多个实体根据层级关系相关,其中至少一个根实体处于所述层级关系的最高层,并且一个或多个实体处于比所述层级关系的最高层低的一层或多层,处于比所述根实体低的层的每个实体是一单个实体的孩子实体,并且一个或多个实体每个具有:多个实例和针对每个实例具有相应元素的至少一个属性;

通过输入装置或端口接收输入数据,所述输入数据包括一个或多个表达式,每个表达式表示一个或多个自变量的一个或多个函数,一个或多个自变量引用在所述实体数据中表示的实体的属性;以及使用至少一个处理器处理所述输入数据中所包括的表达式,所述处理包括:

分析表达式,以便为由表达式的自变量所引用的一个或多个属性中的每个属性确定以下中的至少一个:(1)该属性的实体在所述层级关系中的位置,或者(2)应用于引用该属性的自变量的函数的结果的元素的数量;以及估算表达式或基于分析表达式的结果指示错误,

其中所述确定该属性的实体在所述层级关系中的位置包括:基于从根实体开始,经过根据父-子关系相关的实体的链到该属性的实体的路径,确定该属性的上下文;

其中分析表达式还包括:执行提升程序,所述提升程序包括:为由该表达式的自变量引用的至少第一属性,提升作为第一实体的祖先的实体的第二属性的上下文,其中该表达式的自变量引用该第二属性,并且其中提升该第二属性的上下文包括用该第一属性的上下文代替该第二属性的上下文。

20.根据权利要求19所述的方法,其中所述输入数据包括第一表达式,所述第一表达式定义所述实体数据中表示的第一实体的第一属性的一个或多个元素的值。

21.根据权利要求20所述的方法,其中所述第一表达式引用所述实体数据中表示的第二实体的第二属性定义所述第一属性的一个或多个元素的值。

22.根据权利要求20所述的方法,其中所述处理还包括:在估算所述第一表达式之后,更新所述实体数据以表示所述第一属性的一个或多个元素的值。

23.根据权利要求19所述的方法,其中在至少一个表达式中的至少一个函数包括对两个或更多运算对象进行运算的两个或更多运算符,两个或更多运算对象引用由所存储数据表示的实体的属性。

24.根据权利要求23所述的方法,其中分析表达式还包括:确定被引用属性包括仅一个矢量值被引用属性以及一个或多个标量值被引用属性;并且估算表达式包括:为所述矢量值被引用属性的每一个元素复制所述标量值被引用属性。

25.根据权利要求23所述的方法,其中分析表达式还包括:确定被引用属性包括多个矢量值被引用属性;并且比较所述多个矢量值被引用属性中的两个或更多矢量值被引用属性在所述层级关系中的相应位置。

26.根据权利要求23所述的方法,其中所述处理包括:基于多个矢量值被引用属性中的两个或更多矢量值被引用属性在所述层级关系中具有不同相应位置来指示错误。

27.根据权利要求19所述的方法,其中所述处理包括:基于由第一表达式的第一自变量引用的第一属性的上下文与由该第一表达式的第二自变量引用的第二属性的上下文不同来指示错误。

28.根据权利要求19所述的方法,其中分析表达式包括:为相应自变量所引用的两个或更多个属性中的每个属性确定该属性的实体在所述层级关系中的位置。

29.根据权利要求28所述的方法,其中分析表达式包括:比较所确定的位置,并且响应于至少两个所确定的位置相对于应用到它们各自自变量的函数之间具有不相符性,指示错误。

30.根据权利要求19所述的方法,其中分析表达式包括:为由自变量所引用的一个或多个属性中的每个属性,确定应用于引用了该属性的自变量的函数的结果的元素的数量。

31.根据权利要求30所述的方法,其中分析表达式包括:为由聚合函数的自变量引用的至少第一属性,确定所述聚合函数的结果的元素的数量,并且响应于该结果不对应相对于该第一属性的实体的标量值,重复应用所述聚合函数一次或多次,直到该结果对应相对于该第一属性的实体的标量值。

32.根据权利要求19所述的方法,其中,分析表达式还包括:当表达式包括两个或更多属性时,确定所述两个或更多属性中的每一对是否相符,其中,当应用于成对的属性的表达式中的运算没有导致表达式错误时,所述成对的属性被确定为相符。

33.根据权利要求32所述的方法,其中,确定所述两个或更多属性中的每一对是否相符包括:

确定所述两个或更多属性的所述每一对中的一个属性的一个上下文是否与所述两个或更多属性的所述每一对中的另一个属性的另一个上下文相同,或者确定所述一个属性的所述一个上下文是否是所述另一个属性的所述另一个上下文的前缀,其中所述一个上下文定义了所述层级关系的根实体到所述一个属性的第一实体之间的实体路径,所述一个上下文指明了所述第一实体在所述层级关系中的位置,所述另一个上下文定义了根实体到所述另一个属性的另一实体之间的另一实体路径,所述另一个上下文指明了所述另一实体在所述层级关系中的位置。

34.根据权利要求32所述的方法,其中,确定所述两个或更多属性中的每一对是否相符包括:

响应于成对的属性中的第一属性和第二属性是矢量的第一确定,确定应用于第一矢量属性和第二矢量属性的表达式内的矢量运算是否没有导致矢量运算错误。

35.一种计算机可读存储介质,存储有用于使得计算系统执行以下操作的指令:

在数据存储系统中存储表示多个实体的实体数据,所述多个实体根据层级关系相关,其中至少一个根实体处于所述层级关系的最高层,并且一个或多个实体处于比所述层级关系的最高层低的一层或多层,处于比所述根实体低的层的每个实体是一单个实体的孩子实体,并且一个或多个实体每个具有:多个实例和针对每个实例具有相应元素的至少一个属性;

通过输入装置或端口接收输入数据,所述输入数据包括一个或多个表达式,每个表达式表示一个或多个自变量的一个或多个函数,一个或多个自变量引用在所述实体数据中表示的实体的属性;以及使用至少一个处理器处理所述输入数据中所包括的表达式,所述处理包括:

分析表达式,以便为由表达式的自变量所引用的一个或多个属性中的每个属性确定以下中的至少一个:(1)该属性的实体在所述层级关系中的位置,或者(2)应用于引用该属性的自变量的函数的结果的元素的数量;以及估算表达式或基于分析表达式的结果指示错误,

其中所述确定该属性的实体在所述层级关系中的位置包括:基于从根实体开始,经过根据父-子关系相关的实体的链到该属性的实体的路径,确定该属性的上下文;

其中分析表达式还包括:执行提升程序,所述提升程序包括:为由该表达式的自变量引用的至少第一属性,提升作为第一实体的祖先的实体的第二属性的上下文,其中该表达式的自变量引用该第二属性,并且其中提升该第二属性的上下文包括用该第一属性的上下文代替该第二属性的上下文。

36.根据权利要求35所述的计算机可读存储介质,其中所述输入数据包括第一表达式,所述第一表达式定义所述实体数据中表示的第一实体的第一属性的一个或多个元素的值。

37.根据权利要求36所述的计算机可读存储介质,其中所述第一表达式引用所述实体数据中表示的第二实体的第二属性定义所述第一属性的一个或多个元素的值。

38.根据权利要求36所述的计算机可读存储介质,其中所述处理还包括:在估算所述第一表达式之后,更新所述实体数据以表示所述第一属性的一个或多个元素的值。

39.根据权利要求35所述的计算机可读存储介质,其中在至少一个表达式中的至少一个函数包括对两个或更多运算对象进行运算的两个或更多运算符,两个或更多运算对象引用由所存储数据表示的实体的属性。

40.根据权利要求39所述的计算机可读存储介质,其中分析表达式还包括:确定被引用属性包括仅一个矢量值被引用属性以及一个或多个标量值被引用属性;并且估算表达式包括:为所述矢量值被引用属性的每一个元素复制所述标量值被引用属性。

41.根据权利要求39所述的计算机可读存储介质,其中分析表达式还包括:确定被引用属性包括多个矢量值被引用属性;并且比较所述多个矢量值被引用属性中的两个或更多矢量值被引用属性在所述层级关系中的相应位置。

42.根据权利要求39所述的计算机可读存储介质,其中所述处理包括:基于多个矢量值被引用属性中的两个或更多矢量值被引用属性在所述层级关系中具有不同相应位置来指示错误。

43.根据权利要求35所述的计算机可读存储介质,其中所述处理包括:基于由第一表达式的第一自变量引用的第一属性的上下文与由该第一表达式的第二自变量引用的第二属性的上下文不同来指示错误。

44.根据权利要求35所述的计算机可读存储介质,其中分析表达式包括:为相应自变量所引用的两个或更多个属性中的每个属性确定该属性的实体在所述层级关系中的位置。

45.根据权利要求44所述的计算机可读存储介质,其中分析表达式包括:比较所确定的位置,并且响应于至少两个所确定的位置相对于应用到它们各自自变量的函数之间具有不相符性,指示错误。

46.根据权利要求35所述的计算机可读存储介质,其中分析表达式包括:为由自变量所引用的一个或多个属性中的每个属性,确定应用于引用了该属性的自变量的函数的结果的元素的数量。

47.根据权利要求46所述的计算机可读存储介质,其中分析表达式包括:为由聚合函数的自变量引用的至少第一属性,确定所述聚合函数的结果的元素的数量,并且响应于该结果不对应相对于该第一属性的实体的标量值,重复应用所述聚合函数一次或多次,直到该结果对应相对于该第一属性的实体的标量值。

48.根据权利要求35所述的计算机可读存储介质,其中,分析表达式还包括:当表达式包括两个或更多属性时,确定所述两个或更多属性中的每一对是否相符,其中,当应用于成对的属性的表达式中的运算没有导致表达式错误时,所述成对的属性被确定为相符。

49.根据权利要求48所述的计算机可读存储介质,其中,确定所述两个或更多属性中的每一对是否相符包括:确定所述两个或更多属性的所述每一对中的一个属性的一个上下文是否与所述两个或更多属性的所述每一对中的另一个属性的另一个上下文相同,或者确定所述一个属性的所述一个上下文是否是所述另一个属性的所述另一个上下文的前缀,其中所述一个上下文定义了所述层级关系的根实体到所述一个属性的第一实体之间的实体路径,所述一个上下文指明了所述第一实体在所述层级关系中的位置,所述另一个上下文定义了根实体到所述另一个属性的另一实体之间的另一实体路径,所述另一个上下文指明了所述另一实体在所述层级关系中的位置。

50.根据权利要求48所述的计算机可读存储介质,其中,确定所述两个或更多属性中的每一对是否相符包括:响应于成对的属性中的第一属性和第二属性是矢量的第一确定,确定应用于第一矢量属性和第二矢量属性的表达式内的矢量运算是否没有导致矢量运算错误。

说明书 :

管理层级实体的计算

[0001] 相关申请的交叉引用
[0002] 本申请要求于2014年9月3日提交的序列号为62/045,108的美国申请的优先权。

技术领域

[0003] 本说明书涉及管理层级实体的计算。

背景技术

[0004] 存在计算环境内的各种实体可以表示具有多个值的数据的多种方法。一些计算环境启用矢量实体,其中,一系列的值作为矢量的元素存储在数据结构中。然后,可以通过单独的符号字符串在表达式内用符号方式引用矢量实体。一些计算环境(例如电子表格)将多值实体的显式可视化表示提供为网格或表格中的行,或提供为网格或表格本身。在一些计算环境中,不同的实体相互之间可以具有层级关系,例如,其中,一个实体可以与任意数量的“孩子实体”(也称为“次级实体”)相关联,并且给定的孩子实体可以是另一个孩子实体的“父实体”。
[0005] 为了估算表示涉及多个实体的计算的表达式,计算环境可以具有“相符性(conformality)”的概念,此概念确定该表达式是否合法(即,可以在不引发错误的情况下估算该表达式)或非法(即,无法在不引发错误的情况下估算该表达式)。具体地,相符性可以确定是否可以用特定的方式在表达式中运算不同的实体。例如,在将第一矢量与第二矢量相加的表达式中,相符性可能要求两个矢量具有相同数量的元素(第二矢量与第一矢量“相符”的情况)。

发明内容

[0006] 在一个方面中,一般地,一种计算系统包括:数据存储系统,存储表示多个实体的实体数据,所述多个实体根据层级关系相关,其中至少一个根实体处于所述层级关系的最高层,并且一个或多个实体处于比所述层级关系的最高层低的一层或多层,处于比所述根实体低的层的每个实体是一单个实体的孩子实体,并且一个或多个实体每个具有:多个实例和针对每个实例具有相应元素的至少一个属性。所述计算系统还包括:输入装置或端口,用于接收输入数据,所述输入数据包括一个或多个表达式,每个表达式表示一个或多个自变量的一个或多个函数,一个或多个自变量引用在所述实体数据中表示的实体的属性;以及至少一个处理器,配置为处理所述输入数据中所包括的表达式。所述处理包括:分析表达式,以便为由表达式的自变量所引用的一个或多个属性中的每个属性确定以下中的至少一个:(1)该属性的实体在所述层级关系中的位置,或者(2)应用于引用该属性的自变量的函数的结果的元素的数量;以及估算表达式或基于分析表达式的结果指示错误。
[0007] 各个方面可以包括以下特征中的一个或多个。
[0008] 所述输入数据包括第一表达式,所述第一表达式定义所述实体数据中表示的第一实体的第一属性的一个或多个元素的值。
[0009] 所述第一表达式引用所述实体数据中表示的第二实体的第二属性定义所述第一属性的一个或多个元素的值。
[0010] 所述计算系统包括事务处理系统。
[0011] 所述第一实体具有与所述事务处理系统中的不同购买项目相对应的实例,所述第二实体具有与所述事务处理系统中的不同客户相对应的实例。
[0012] 所述处理还包括:在估算所述第一表达式之后,更新所述实体数据以表示所述第一属性的一个或多个元素的值。
[0013] 在至少一个表达式中的至少一个函数包括对两个或更多运算对象进行运算的两个或更多运算符,两个或更多运算对象引用由所存储数据表示的实体的属性。
[0014] 分析表达式还包括:确定被引用属性包括仅一个矢量值被引用属性以及一个或多个标量值被引用属性;并且估算所述表达式包括:为所述矢量值被引用属性的每一个元素复制所述标量值被引用属性。
[0015] 分析表达式还包括:确定被引用属性包括多个矢量值被引用属性;并且比较所述多个矢量值被引用属性中的两个或更多矢量值被引用属性在所述层级关系中的相应位置。
[0016] 所述处理包括:基于所述多个矢量值被引用属性中的两个或更多矢量值被引用属性在所述层级关系中具有不同相应位置来指示错误。
[0017] 所述确定该属性的实体在所述层级关系中的位置包括:基于从根实体开始,经过根据父-子关系相关的实体的链到该属性的实体的路径,确定该属性的上下文。
[0018] 分析表达式还包括:执行提升程序,所述提升程序包括:为由该表达式的自变量引用的至少第一属性,提升作为所述第一实体的祖先的实体的第二属性的上下文,其中该表达式的自变量引用该第二属性,并且其中提升该第二属性的上下文包括用该第一属性的上下文代替该第二属性的上下文。
[0019] 所述处理包括:基于由第一表达式的第一自变量引用的第一属性的上下文与由所述第一表达式的第二自变量引用的第二属性的上下文不同来指示错误。
[0020] 分析表达式包括:为相应自变量所引用的两个或多个属性中的每个属性确定该属性的实体在所述层级关系中的位置。
[0021] 分析表达式包括:比较所确定的位置,并且响应于至少两个所确定的位置相对于应用到它们各自自变量的函数之间具有不相符性,指示错误。
[0022] 分析表达式包括:为由自变量所引用的一个或多个属性中的每个属性,确定应用于引用了该属性的自变量的函数结果的元素的数量。
[0023] 分析表达式包括:为由聚合函数的自变量引用的至少第一属性,确定所述聚合函数的结果的元素的数量,并且响应于该结果不对应相对于该第一属性的实体的标量值,重复应用所述聚合函数一次或多次,直到该结果对应对于该第一属性的实体的标量值。
[0024] 在另一个方面中,一般地,一种方法包括:在数据存储系统中存储表示多个实体的实体数据,所述多个实体根据层级关系相关,其中至少一个根实体处于所述层级关系的最高层,并且一个或多个实体处于比所述层级关系的最高层低的一层或多层,处于比所述根实体低的层的每个实体是一单个实体的孩子实体,并且一个或多个实体每个具有:多个实例和针对每个实例具有相应元素的至少一个属性。所述方法还包括:通过输入装置或端口接收输入数据,所述输入数据包括一个或多个表达式,每个表达式表示一个或多个自变量的一个或多个函数,一个或多个自变量引用在所述实体数据中表示的实体的属性;以及使用至少一个处理器处理所述输入数据中所包括的表达式。所述处理包括:分析表达式,以便为由表达式的自变量所引用的一个或多个属性中的每个属性确定以下中的至少一个:(1)该属性的实体在所述层级关系中的位置,或者(2)应用于引用该属性的自变量的函数的结果的元素的数量;以及估算表达式或基于分析表达式的结果指示错误。
[0025] 在另一个方面中,一般地,一种以非暂时形式存储在计算机可读介质上的软件,所述软件包括用于使得计算系统执行以下操作的指令:在数据存储系统中存储表示多个实体的实体数据,所述多个实体根据层级关系相关,其中至少一个根实体处于所述层级关系的最高层,并且一个或多个实体处于比所述层级关系的最高层低的一层或多层,处于比所述根实体低的层的每个实体是一单个实体的孩子实体,并且一个或多个实体每个具有:多个实例和针对每个实例具有相应元素的至少一个属性。所述软件还包括用于使得计算系统执行以下操作的指令:通过输入装置或端口接收输入数据,所述输入数据包括一个或多个表达式,每个表达式表示一个或多个自变量的一个或多个函数,一个或多个自变量引用在所述实体数据中表示的实体的属性;以及使用至少一个处理器处理所述输入数据中所包括的表达式。所述处理包括:分析表达式,以便为由表达式的自变量所引用的一个或多个属性中的每个属性确定以下中的至少一个:(1)该属性的实体在所述层级关系中的位置,或者(2)应用于引用该属性的自变量的函数的结果的元素的数量;以及估算表达式或基于分析表达式的结果指示错误。
[0026] 各个方面可以具有一个或多个以下优点。
[0027] 用于管理计算的技术能够有效、灵活地定义并估算表示对层级实体的计算的表达式(即,不同实体根据层级关系而彼此相关)。通常,层级关系可以表示为由有向边连接的顶点的图(即,有向无环图(DAG)),其中,顶点表示实体,边表示各实体之间的关系。每个顶点都处于层级关系的特定层。至少一个实体(例如,如果层级关系具有树状结构,则是“根实体”)处于层级关系的最高层,并且一个或多个实体处于低于所述层级关系的最高层的一层或多层。处于比最高层低的层的各实体是一单个父实体的孩子实体。不具有任何孩子实体的实体是“叶实体”。具有自根开始的相同辈数的实体可以被认为是处于层级关系的相同层。在一些实现方式中,仅在多个实体被认为是“兄妹”(即,具有相同父实体)时认为它们处于层级关系中的相同层。通常,如本文所使用的,较高层的实体比较低层的实体离根实体更近(可替代地,在等同的描述中,根实体可以被认为是处于层级关系的最低层,词语“较高”或“较低”可以用相反的方式解释,这样较低层的实体比较高层的实体离根更近)。分析模块(将在下文进行详细描述)能够有效地分析表达式,以便确定执行何种计算并在表达式编辑器中提供关于违反层级关系实体之间的相符性和其它潜在错误的反馈。对于管理并处理按层级关系组织的数据的计算系统,具有用于在用户界面中有效编写计算的方法是有用的,该用户界面为定义表达式提供强大的语法,但所述方法也包括确保可以影响潜在地大量结果数据的错误不被引入的机制。例如,在线商业事务处理系统(例如,耦合至网络并配置为处理表示事务的实体的实例的计算系统)可能使表达式引用多种不同类型的事务值。例如,该事务值可以包括:对应不同购买项目的值和对应不同客户的值;对应预定项目(例如,用于旅游、包裹递送等)的值或对应价格及相关联量的值。在这样的系统中,支持某种形式的相符性是有用的,这样可以足够灵活以允许复杂的表达式,而且能够检测并避免可能进入结果的细微错误。
[0028] 从下面的描述和权利要求书中,本发明的其它特征和优点将变得显而易见。

附图说明

[0029] 图1是用于管理涉及层级实体的计算的计算系统的框图。
[0030] 图2A和图2B是用于定义并查看实体的用户界面的示例。
[0031] 图3是相符性检验程序的流程图。

具体实施方式

[0032] 图1示出了可以使用计算技术的计算系统100的示例。该系统100包括提供了用户界面104并且具有本地存储106的执行环境102。用户108在用户界面104内指明表达式,并且这些表达式110的表示存储在本地存储106中。执行环境102包括用于分析表达式110(或部分表达式)以确定表达式110是否合法的分析模块112和用于估算已经由分析模块112确认为合法的表达式(或部分表达式)的估算模块114。表达式中所包括的是具有一个或多个自变量的任意数量的函数。一些自变量可以引用存储在本地存储106或另一可访问位置(例如,与执行环境102通信的数据存储系统116)中的实体数据中所表示的实体的属性。
[0033] 执行环境102可以被托管在例如受适当的操作系统(诸如某版本的UNIX操作系统)控制的一个或多个通用计算机上。例如,执行环境102可包括多节点并行计算环境,包括使用多个中央处理单元(CPU)或处理器内核的计算机系统的配置,其为本地的(例如,诸如对称多处理(SMP)计算机等多处理器系统),或本地分布式的(例如,耦接为群集或大规模并行处理(MPP)系统的多个处理器),或远程的,或远程分布式的(例如,经由局域网(LAN)和/或广域网(WAN)耦接的多处理器),或其任意组合。
[0034] 数据存储系统116可以包括一个或多个存储装置,或至在线数据流或在线服务的连接,它们中的每一种均可以以多种格式中的任意格式存储或提供数据(例如,数据库表格、电子表格文件、纯文本文件或大型主机所使用的本机格式)。配备了数据存储系统116的存储装置可以位于执行环境102的本地,例如存储在被连接至托管执行环境102的计算机的存储介质(例如,硬件驱动118),或者,可以位于执行环境102的远程,例如,通过远程连接(例如,由云端计算基础设施提供的远程连接)托管在与托管执行环境102的计算机通信的远程系统(例如,大型主机120)上。响应明确的用户输入或其它形式的输入(诸如服务要求)可以启动由分析模块112作出的表达式110的分析或由估算模块114作出的表达式110的估算。服务要求可以包括表示层级实体的实体数据或对这类实体数据的引用。例如,编码成XML的服务要求可以包含层级实体数据,或者服务要求可以引用数据存储系统116中存储的实体数据。
[0035] 本地存储106或数据存储系统116中存储的数据包括可以在表达式内作为层级实体引用的一些数据。在信息领域,实体可以被认为是特定种类的任何数量项目的集合的抽象,它能够独立存在或可以被唯一识别。例如,可以用数据库中的表格或存储为文件的数据集(例如,用被定界的记录)来表示“客户(Customer)”实体。例如,在管理商业数据的系统中,数据库表格或数据集文件中的各条记录(或“行”)可以各自表示表达不同的公司客户的“客户”实体的不同实例。还可以用任意其它类型的数据结构(例如,特定类别的数据对象的集合)来表示实体,其中,实体的不同实例对应数据对象的不同实例。
[0036] 每个实体可以具有任意数量的属性。例如,在由数据库表格表示的实体中,可以定义表格的字段(或“列”),以存储对应于该实体的特定属性的特定类型的数据(例如,具有预定数据类型的变量)。例如,用于“客户”实体的表格可以包括用于存储与该“客户”实体的实例相关联的值的字段,每个字段由表格中的不同记录来表示。对于实体的特定实例,其任意属性可以具有特定值(包括标量值、矢量或值的子记录),或可以具有空值或留空。实体的属性被视为标量还是矢量对应于存在的实体的实例数量。因此,在由表格表示实体的示例中,如果表格只有一行,则每个字段可以表示该实体的标量值属性。如果表格有多行,则每个字段将表示该实体的矢量值属性的元素,其中,每个矢量中元素的数量(即,该矢量的长度)等于表格中行的数量。
[0037] 每个实体还具有任意数量的孩子实体。孩子实体本身还可以具有父实体的每个实例的任意数量的实例(不同于子记录,子记录只具有实体的特定实例的单个实例)。可以用任意多种方式形成不同实体之间的层级父-子关系。在一些实现方式中,可以使用孩子实体的表格中存储了对应于父实体的表格中的一行的外键值的字段形成父-子关系。在另一个实现方式中,可以使用表示父实体和孩子实体的数据结构之间的指示字来形成父-子关系,或者可能存在表示孩子实体的数据结构嵌入表示父实体的数据结构内的嵌套。每个孩子实体具有从根实体开始,经过根据父-子关系相关的实体的链的特定路径(也称为它的“上下文”,用来指明其在层级关系中的位置)。在层级关系的最低层是叶实体,叶实体不具有任何孩子实体。每个实体不是叶实体就是父实体。
[0038] 为了允许实体的不同实例被唯一识别,可以将该实体的一个或多个属性标识为“键属性”,键属性是该实体的唯一键的一部分。在一些情况中,实体具有单一的键属性。例如,字段标签“客户编号(Custid)”可以存储对于表示“客户”实体实例的每个记录是唯一的值。有时这种单一的键字段被称为“简单键”。在一些情况中,实体具有多个键属性,这些键属性一起形成唯一键(也被称为“复合键”)。例如,字段“名(first_name)”、“姓(last_name)”和“SSN”的组合(例如,串联)可以充当一同唯一地识别表示“账户(Accounts)”实体实例的记录的键属性。可能存在具有唯一值的多个字段(也称作“候选键”),并且,可以选择这些字段中的一个字段(或字段的组合)以用作即将被使用的唯一键(也成为“主键”)。有时,在记录中添加字段以存储将要充当唯一键的一部分的值(也称作“代理键”)。
[0039] 用户界面104可以表现为显示器屏幕上的图形用户界面。图2A示出了用户界面200的视觉布置的示例,可以呈现用户界面200以使得用户108能够定义并查看实体以及层级关系中实体的彼此关系。用户界面200包括:(1)左部202,其包括为定义在单独的缩进区域中的不同实体命名的标题,所述缩进区域包括属性数据类型的列表;以及(2)右部204,其包括与相应数据类型对齐的属性名称。在一些实现方式中,根实体被设置成具有单个实例,该实例具有充当层级关系中所有其它实体均可以访问的全局变量的属性。在此示例中,设置区域206A中所定义的根实体,该根实体列出一个具有类型“int”(即,整数)、被命名为“税率(TaxRate)”的属性。该根实体具有一个定义在区域206B中命名为“客户”的孩子实体。该“客户”实体还具有三个属性:“客户编号”(类型为“字符串”)、“折扣(Discount)”(类型为“整数”)和“邮政编码(PostalCode)”(类型为“字符串”)。
[0040] 区域的缩进对应层级关系中相应实体的层(即,缩进量相同的任何区域在层级关系中处于相同的层)。缩进相同量且位于特定实体的区域的下方的任意数量的连续区域定义的实体是该特定实体的孩子。在此示例中,“客户”实体具有两个孩子实体:(1)定义在区域206C中命名为“购买项目(Purchase)”的实体,和(2)定义在区域206D中命名为“付款(Payment)”的实体。“购买项目”实体具有三个属性:“数量(Quantity)”(类型为“整数”)、“单价(UnitPrice)”(类型为“数值”)以及“购买日期(PurchDate)”(类型为“日期”)。“付款”实体具有两个属性:“支付数量(PayAmount)”(类型为“数值”)以及“支付日期(PayDate)”(类型为“日期”)。
[0041] 实体键可以分配至每个实体,或者通过系统自动分配代理键或通过用户指定一个或多个属性作为主键(例如,“客户编号”作为“客户”实体的实体键)。如果用户指定用作实体键的属性不是唯一的,那么系统可以指示其为错误。如果用户不指定作为实体键的属性,则在与父实体的特定实例相关联的键值空间内,可以用确保实体键是唯一的方法为每个实例默认生成代理实体键。该代理实体键可以向用户隐藏,或显式地包括在用户界面200中作为公开属性(例如,具有“代理键(SurrogateKey)”的名称),允许用户在表达式中引用所述代理实体键。如果实体被指定成“被索引的”,则实体键可以被分配成从0开始并增加的连续的整数(即,没有任何间隙),因此可以使用诸如“客户[i]”(Customer[i])的语法来引用该实体的实例,其中,i为该实体键的整数值。此外,如果实体具有被排序的特性,则可以指定一个具有明确定义顺序的属性来提供顺序。该顺序可以是使用具有唯一值的键的完全排序(例如,用“客户编号”对“客户”实体排序),或者,该顺序可以是局部排序(例如,用“邮政编码”对“客户”实体排序)。
[0042] 图2B示出了用户界面220的视觉布置的示例,可以呈现该用户界面220使用户108可以为某些属性定义表达式(除了定义和查看实体及它们在层级关系中的相互关系,如图2A所示)。出于说明的目的,该示例中的用户界面220包括对应各实体的区域228A至228D,这些实体与前述示例的相应区域206A至206D中的各实体相似。用户界面220包括:(1)左部
222,其包括为定义在单独的缩进区域中的不同实体命名的标题,所述缩进区域包括属性数据类型的列表;(2)中部224,其包括与相应数据类型对齐的属性名称;以及(3)右部226,其包括以其它属性的值定义的任意属性的表达式。已经使用此类表达式定义的属性称为“已定义属性”,并且相应实体的实例将具有该已定义属性的值,该值根据所提供的表达式来计算。例如,当估算涉及多个实体的计算时,可以计算或重新计算已定义属性的值。不具有这类表达式的属性称为“具体属性”,并且将为相应实体的实例直接设置值而不引用任何其它属性。如果表达式中引用多于一个的属性,则分析模块112确定这些“引用的属性”是否相符,下文将进行详细地描述。在此示例中,除了前述示例的具体属性以外,根实体、“客户”实体以及“购买项目”实体还设置了已定义属性,这些已定义属性是利用引用其它属性的表达式来定义的。
[0043] 分析模块112能够识别任意数量的函数,所述函数必须应用于表达式中任意数量的自变量。例如,表达式可以包括应用于一组自变量的单个函数,或应用于其它函数的结果的函数的复合。正如本文所使用的,术语“函数”被宽泛地使用,并且可以指应用于任意数量运算对象(即,该函数的自变量)的任何运算,或者可以指定义到作为输入的取任意数量的自变量(包括没有自变量)上的任何计算,即使该函数不是固定的运算。可以支持在表达式中使用的运算类型的示例包括各种编程语言的一元、二元和三元运算符(例如,加、减、乘、除、模数、左移或右移)、关于等式或不等式的各种测试、具有标量值运算的应用(例如,指数、对数)。此外,可以提供编程语言以允许用户定义用户可能想要在表达式中使用的任何自定义函数。
[0044] 在用户108提供定义如何计算已定义属性的值的表达式之后,分析模块112分析表达式以确定该表达式合法或非法。除了相符性(或缺少相符性)以外,分析模块112还可以识别其它错误或不一致的问题。被引用属性可以是具体属性或已定义属性,但如果是已定义属性,不应该存在任何循环引用。例如,如果定义了第一属性的表达式引用了第二属性,则该第二属性不应该由引用了第一属性的表达式定义(即,循环引用)。
[0045] 定义了第一实体属性的表达式可以引用作为该第一实体的“祖先实体”的第二实体的属性,这意味着该表达式在第一实体与根实体之间的父-子关系链中。例如,“应付数量(AmountDue)”的表达式引用属性“折扣”(来自“客户”实体)和属性“税率”(来自根实体)。可能存在属性值被引用的祖先实体的特定实例。根实体的单个实例的属性在层级关系中任意实体的任意属性的任何表达式中具有相同的值。表达式还可以包括处于不同层的不同属性的引用,例如,“应付数量”的表达式,其引用了处于与已定义属性同层的“购买总量(PurchAmount)”、高一层的“折扣”和高两层的“税率”。
[0046] 一些被引用的属性是具有来自其相应实体的多个实例的值的矢量值属性。可以应用于这类矢量值属性的一类运算是聚合运算,聚合运算对表示该属性所有值的矢量的元素(包含在该属性的实体的相应实例中)进行运算。在一些情况下,聚合运算产生标量结果。例如,“应付总额(TotalDue)”的表达式是“应付数量”的总和(sum(AmountDue)),对于“客户”实体的特定实例,“应付数量”的总和是将整个“购买项目”孩子实体实例中的“应付数量”的值相加,产生该“客户”实体的特定实例的标量结果。更一般地,聚合运算可以认为是在上下文中去除最后一个实体,聚合运算给出了在层级关系中比正在被聚合的矢量的层高一层的结果。根实体的“总税项(TotalTax)”属性的表达式包括将“税率”和“购买数量(PurchAmount,根实体的孙子)”的积作为被加数的总和。所以,“购买项目”的值是“购买项目”实体的各实例的总和,并且结果是关于“客户”实体(根实体的孩子)的各个实例的矢量。
[0047] 可替代地,一些聚合运算可以递归地运算各运算对象,直到相对于相应实体的特定实例得出了标量结果。例如,可以对上述求和中的矢量值结果的值求和,提供作为“总税项”属性的值的标量。例如,可以在要求属性相对于其实体被标量值化的某些实现方式中执行此递归聚合。
[0048] 可以应用于矢量值属性的另一种运算(对所有该属性的值进行运算)是返回矢量值结果的运算。例如,称为“running_sum(<矢量>”(running_sum())的运算定义为产生<矢量>的起点与当前元素之间的<矢量>元素的部分和的运算。因此,包括running_sum({1,2,3,4})的表达式可以产生结果矢量{1,3,6,10}。在要求各属性相对于其实体进行标量值化的实现方式中,这类运算还将需要应用进一步运算以实现标量结果。
[0049] 基于属性定义与属性引用之间的依赖性(dependency)对用户界面220内提供的表达式隐式排序。该顺序不受用户界面220内空间顺序的限制。例如,“应付总额”引用“应付数量”的定义(这样是合法的,因为不存在循环定义)。在用户界面220中将“应付数量”层级定义得较低并不重要。拓扑排序可以用于确定局部排序,以便限制估算已定义属性的表达式的顺序。拓扑排序还可以用于确保不存在循环引用。
[0050] 存在多种方法确保属性可以在表达式内被唯一地引用。如果属性名称是唯一的,那么分析模块112的一些实现方式可以配置为仅通过其名称来识别该属性。可以唯一地引用属性(即便不同实体的属性具有相同名称(假设兄弟实体具有唯一名称))的另一方法是在表达式中包括该属性的上下文。例如,“点符号”可以用于提供为上下文中每个实体命名的“限定名称”(从根实体的孩子开始,在每个实体名称后面包括点(‘.’)直到得出期望属性的实体)。例如,即便另一实体也具有称作“购买日期”的属性,也可以通过在表达式中限定名称“客户.购买项目.购买日期”来引用“购买日期”属性而没有歧义。在一些实现方式中,属性的潜在歧义的“非限定”名称(即,仅为属性名称而不具有上下文)可以解读为属于与出现了包含非限定名称的表达式的实体相同的实体。例如,如果“购买项目”具有称作“总数(Amount)”的属性(而不是“购买数量”)并且“付款”具有称作“总数(Amount)”的属性(而不是“支付数量”),那么,在“应付数量”中引用“总数”将自动解读为属于“购买项目”而不属于“付款”。然而,出现在属性“总税项”中的引用将需要包括限定名称“客户.购买项目.总数”(而不是“购买数量”)。在一些情况下,引用实体本身而不指明其任何属性可能是有用的,在此情况下,可以使用诸如“客户[](Customer[])”的特殊符号以引用名为“客户”的实体。该符号还可以用于选择属性值的矢量的特定元素。例如,“客户.折扣”是对应“客户”实体实例的矢量,“客户[5].折扣”是“客户”实体的第五实例的“折扣”属性的标量值。
[0051] 表达式是合法还是非法的确定是基于所引用的属性是标量还是矢量以及基于所引用的矢量属性的相符性。每个实体可以具有任意数量的具体属性和任意数量的已定义属性。实体的每个属性(具体属性或已定义属性)对于该实体的每个实例将具有相应值。所以,对于第一实体的特定实例,第一属性可以是标量(具有单一值),但对于该第一实体的祖先的实例,该第一属性可以是矢量(具有多个值,即第一实体的每个实例分别对应一个值)。因此,在父实体的已定义属性的表达式中,对孩子实体的属性的引用是该孩子实体的实例的矢量。在一些实现方式中,估算表达式的结果需要是相对于属性由该表达式定义的实体的特定实例的标量。因此,表达式可以包括运算这些矢量的元素的聚合运算(例如,求和、求最大值)。
[0052] 系统100用于确定相符性的程序的一个示例包括紧接着估算(由估算模块114执行)的一个或多个阶段的分析(由分析模块112执行)。该程序可以包括初始步骤,在初始步骤中,对出现在表达式中某属性的上下文进行“提升”。例如,限定名称“客户.购买项目.应付数量”对于已定义属性“应付数量”具有“客户.购买项目”的上下文。已定义属性的该上下文将用于提升程序。将被提升的属性是已定义属性的祖先实体的属性。因此,在该示例中,将提升属性“税率”和“客户.折扣”。通过用已定义属性的上下文代替一属性的上下文来提升该属性以便产生“提升名称”,在该示例中,产生:“客户.购买项目.税率”和“客户.购买项目.折扣”。具有与那些被提升的属性名称相同的名称的任何现有属性所可能引起的任何歧义可以用多种方法解决,例如,为属性名称增加临时前缀或后缀。
[0053] 在提升步骤之后,分析模块112确定表达式是否包括对作为矢量的两个或更多个被引用的属性执行的运算。如果包括,那么对于每个这样的多矢量运算,分析模块112检验矢量值被引用属性的相符性。相对于已定义属性的实体实例,祖先实体的任意提升后的属性或与已定义属性本身相同的实体的任意属性将具有来自其相应实体的特定实例的标量值。反之,任何非祖先实体(即,后裔实体或表兄弟实体)的属性可能具有来自其相应实体的多个实例的值的矢量。因此,可能需要对这些非祖先实体检验相符性。
[0054] 确定两个或更多矢量值被引用属性是否相符的下一个步骤是比较它们的上下文。在一些实现方式中,为每唯一对两个或更多属性对执行一次比较。对于每对属性对,分析模块112确定(可能已经被提升过的)上下文是否是相同的,或确定一个属性是否是另一个属性的前缀。如果这些条件中的任一个是成立的,那么这一对被引用属性是相符的。如果这些条件都不成立,那么这一对被引用属性不是相符的。如果所有属性对均彼此相符,则整组被引用属性是相符的。如果分析模块112确定被引用属性是相符的,则估算模块114估算表达式,或估算包含对于这些被引用属性的运算的表达式的部分。否则,系统100基于相符性分析的结果指出相符性错误(例如,作为在用户界面220中的可视化指示)。在一些实现方式中,对于两个或更多相符的矢量值属性的运算结果继承最长的上下文作为其自身的上下文。
[0055] 在对矢量值被引用属性和标量值被引用属性的混合进行运算的情况下,分析模块112无需检验相符性。例如,加法运算可以通过将标量添加至矢量的每一个元素(即,针对属性实体的每一个实例)来对矢量和标量求和。对于一些运算,标量值属性和矢量值属性的混合可能不允许作为运算对象,并可能导致分析模块将表达式识别为非法。
[0056] 图3示出了相符性检验程序300的示例的流程图,该相符性检验程序300可以由系统100执行。在此示例中,程序300被实现为将要在表达式中估算的潜在的多个函数上的for循环。可能存在在for循环之前或之后执行的步骤(未示出),并且在各种实现方式中,除了该程序300以外,还可以执行其它分析和/或估算步骤。利用for循环,分析模块112可以增量式地分析这些函数的自变量,以便在(通过估算模块114)应用这些函数之前检验相符性。for循环迭代(302)通过表达式中表示的一个或多个函数。对于每个已识别的函数,程序300识别(304)所述函数的所有自变量。程序对(306)包括被引用属性的那些自变量的数量进行计数。如果存在多于一个的被引用属性,那么程序300通过比较那些多个被引用属性的上下文来执行相符性检验(310)。如果不存在多于一个的被引用属性(即,0或1个被引用属性),则程序循环回for循环的开始而不执行相符性检验(310)。如果被引用属性不相符,那么程序300指示错误(312),然后退出(314)for循环。如果被引用属性相符,那么程序300应用函数(316)。循环条件检验(318)刚刚被应用的函数是否是表达式中所应用的最后一个函数。
如果是,则程序300退出(314)for循环。如果不是,则程序300循环回for循环的开始。
[0057] 支持在表达式中使用多种聚合或选择运算,以从矢量产生标量值,然后可以与其它标量值运算。例如,一种运算使用以下语法来滤出矢量:在<条件>情况下的<矢量>(where)。假设条件仅对矢量中的单个元素为真。对于这个运算符及其它运算符,估算模块114能够在运行时验证运算是否产生标量结果,如果不产生标量结果则可以产生错误。
[0058] 在一些实现方式中,可以对实体设置多种限制。在一些情况下,那些限制影响实体的上下文,并且因而影响实体的相符性。例如,实体可以具有不允许具有多个实例的孩子实体,但该孩子实体的单个实例可以具有其自身的属性。关于这种孩子实体的上下文与其父亲的上下文相同(即,标量孩子实体被视为属性)。
[0059] 在一些实现方式中,实体可以允许定义成其它实体的函数(如一个属性被定义成另一个属性的函数)。例如,实体可以被定义为其它实体的并集、交集、分组(group by)或汇总(rollup)(或其他关系运算)。各种函数可以具有用于确定结果的上下文的规则。
[0060] 上述管理层级实体的计算的方法可以使用执行适当软件的计算机系统来实现,例如使用执行合适的软件指令的可编程计算系统来实现,或者可以在诸如现场可编程门阵列(FPGA)或一些混合形式的合适的硬件中实现。例如,在编程方法中,软件可以包括在一个或多个编程或可编程计算系统(其可以是诸如分布式、客户端/服务器或网格的各种架构)上执行的一个或多个计算机程序中的过程,每个计算系统包括至少一个处理器,至少一个数据存储系统(包括易失性和/或非易失性存储器和/或存储元件),至少一个用户界面(用于使用至少一个输入设备或端口接收输入,并且用于使用至少一个输出设备或端口提供输出)。软件可以包括例如提供与数据流图的设计、配置和执行相关的服务的更大程序的一个或多个模块。程序的模块(例如,数据流图的元件)可以被实现为符合存储在数据仓库中的数据模型的数据结构或其他有组织的数据。
[0061] 软件可以提供在有形、非暂时性介质上,例如CD-ROM或其他计算机可读介质(例如,可由通用或专用计算系统或设备读取),或者可以通过网络的通信介质被递送(例如,被编码成传播信号)到其被执行的计算系统的有形、非暂时性介质。可以在专用计算机上或使用诸如协处理器或现场可编程门阵列(FPGA)或特定的专用集成电路(ASIC)的专用硬件来执行处理中的一些或全部。处理可以以分布式方式实现,其中由软件指定的计算的不同部分由不同的计算元件执行。每个这样的计算机程序优选地存储在或下载到可由通用或专用可编程计算机访问的存储设备的计算机可读存储介质(例如,固态存储器或介质,或磁介质或光介质)上,用于当计算机读取存储设备介质以执行本文所述的处理时,配置和操作计算机。本发明的系统还可以被认为可实现为配置有计算机程序的有形的、非暂时性介质,其中如此配置的介质使得计算机以特定和预定义的方式操作以执行本文描述的一个或多个处理步骤。
[0062] 已经描述了本发明的多个实施例。然而,应当理解,前述描述旨在说明而不是限制本发明的范围,本发明的范围由所附权利要求的范围限定。因此,其他实施例也在所附权利要求的范围内。例如,在不脱离本发明的范围的情况下可以进行各种修改。另外,上述的一些步骤可以是与顺序无关的,并且因此可以以与所描述的顺序不同的顺序来执行。