用于时间数据聚合的时间滑动操作器的制作方法

文档序号:6381452阅读:189来源:国知局

专利名称::用于时间数据聚合的时间滑动操作器的制作方法
技术领域
:此处描述的主题涉及用于计算关系数据库中的聚合度量值的操作器(operator)。
背景技术
:许多当前可用的计算机应用提供恢复数据库的历史快照的能力。事实上,这种应用允许通过及时地在给定点浏览数据的快照来进行“时间旅行”的能力。其它相关的数据库功能可以包括在数据的很多历史状态的状态上进行聚合的能力,这可被称之为时间聚合(temporalaggregation)。在现代化的高性能关系数据库中,并发交易的隔离对于交易的正确执行是一个很重要的要求。如果没有交易的隔离,并发执行的交易可能导致读取由一个或多个交易写入的或者由随后被中止和回滚的一个或多个交易导致的一个或多个状态写入的不一致的中间状态。这被称之为“错乱读取(dirtread)”。可以利用多版本并发控制方法来保证一致性的读操作。对于并发控制机制的一个重要考虑是最小化负面的性能影响。利用多版本并发控制,并发的读操作能方便地看到数据库的一致视图而不阻止并发的写操作。这样的方法与基于共享读取锁存的并发控制相比能允许更高程度的并发性。利用多版本并发控制,不是通过覆盖现有的记录而是通过插入新的版本来执行更新。一个交易可以写入一些数据条目的新版本,同时并发交易仍然可以对这些数据条目的以前版本进行读取访问。典型的,一些类型的时间戳(或等效机制)与每个版本相关联。这个时间信息能被用于决定哪些版本对于哪些交易是可见的。删除能够通过插入删除版本来实现或者通过一些指示以前的版本不再对后来的交易可见的其它机制来实现。为了保持交易的跟踪和为了执行用于多版本并发控制的时间戳,数据库管理系统的交易管理器或相当的功能体能够保持两种类型的标识符:交易标识符(transactiοηidentifier,TID)和提交标识符(commitidentifier,CID),TID是一个整数,其反映了写交易的起始点的顺序,并且每当一个写交易开始或当一个读交易转换成一个写交易则递增,CID可以是一个值(例如,一个整数,一个实数等),其反映了写交易的提交顺序,并且可被控制以连续的次序进行排序。交易既可以是读交易,也可以是写交易(其可以包括添加,删除,或改变表的内容)。通常,交易可以以读交易开始,但随后被交易管理器提升至写交易。TID可以被分配给写交易作为其唯一标识符。在一些示例中,TID可以用来存储进行了未提交改变的交易。交易管理器可以在内部保留最大CID,即最近提交的顺序号。当交易被提交时,最大CID可以被递增并且新值可以被分配给提交的交易。因此CID可以被认为相当于一个提交时间戳。
发明内容在一个方面提供了一种包括访问数据库的排序的历史表格的方法。该排序的历史表格包括与对数据库表格中的值的一个或多个更新、插入和删除相关联的多个提交标识符。该排序的历史表格还包括与一个或多个值的变化的首次发生相关联的提交标识符的顺序列表。在单向过程中遍历排序的历史表格,以使用优化算法来计算聚合函数。该优化算法启动基于所选择的用于跟踪被无效的值到其相应的提交标识符的方法来计算值的聚合度量值。为数据库表格的当前版本生成计算的度量值,然后提升所计算的度量值。在本主题的一些变化形式中,可以有选择地以任何可行的组合形式包括一个或多个下列特征。提升可以有选择地包括下列事项中的一个或多个:存储计算的度量值、通过用户界面显示器呈现计算的度量值、以及发送包含该计算的度量值的电子消息。优化算法可以有选择地包括下列事项中的一个或多个:生成无效索引、为多个提交标识符中的每个提交标识符生成单独的位列表、以及生成先前版本数组。依据聚合函数的优化算法可以有选择地从多个算法中选择,该选择包括对多个算法中的每一个算法评估与一组优化标准相关的数据库表格的一个或多个属性。遍历可以有选择地包括下列事项中的一个或多个:基于在每一个提交标识符处的值的变化递增变量(例如,用于诸如‘和’及‘计数’的聚合函数的单一变量)、创建对应于每一个提交标识符的链接列表、以及创建对应于每一个提交标识符的排序的列表。所计算的度量值可以有选择地包括和值、计数值、平均值、最小值、最大值、中值、模值和偏值中的一个或多个。可以通过以提交标识符依序对历史表格进行排序而有选择地生成所述排序的历史表格。如果历史表格是自然有序的,可以不需要再次排序。在附图和下面的描述中阐述此处描述的主题的一个或多个变化形式的细节。通过该描述、附图和权利要求,此处描述的主题的其它特征和优点将是显而易见的。尽管为了说明的目的关于企业资源软件系统或其它商业软件方案或架构描述了本公开的主题的某些特征,应当容易理解的是,这些特征并不是用于限制的目的。本公开的权利要求书旨在定义要求保护的主题的范围。包含在说明书中并构成说明书一部分的附图,显示了此处公开的主题的某些方面,并且与说明书一起帮助解释与公开的实施方式相关的一些原理。在附图中,图1A和图1B是分别示出需要编码和制表操作来执行示范性查询的示例的图;图2示出了历史表格的一个示例;图3示出了遍历排序的历史表格以计算诸如和值的聚合的示例;图4示出了遍历排序的历史表格以计算诸如最大值的聚合的示例;图5示出了遍历排序的历史表格以计算诸如最大值的聚合的另一个示例;图6A示出了可用于计算聚合值的数据结构的另一个示例;图6B和图6C示出了用于跟踪被无效的值的算法的示例;图7是描述具有与本主题的实施方式一致的一个或多个特征的方法的一些方面的处理流程图;图8说明了数据库体系结构的规范层的示例,同时强调可能需要适应或扩展以用于实施本主题的组件;图9是示出需要编码和制表操作以执行另一个示范性查询的示例的图;图10是描述与本主题的至少一些实施方式一致的商业软件系统体系架构的特征的图;图11是描述与本主题的至少一些实施方式一致的数据库管理系统体系架构的特征的图;图12是描述与本主题的至少一些实施方式一致的另一个数据库管理系统体系架构的特征的图;以及图13是描述与本主题的至少一些实施方式一致的多租户数据库结构的特征的图。当实际应用时,类似的参考数字表示类似的结构、特征或元件。详细描述为了保持访问关于数据库的变化的时间信息,交易管理器可以保持将CID整数数值映射到实际的时间戳的历史表格或其它列表。存储在历史表格中的信息对于大量的业务需求来讲是很有用的。一个示范性的使用情况的示例是及时计算在不同点的聚合值。聚合值可以是和值、计数值、平均值、最小值或最大值、中值、模值(mode)、偏值(skewness),或者与数据集相关的信息的一个或多个其它统计或数值表示。这种类型的查询一般不能使用SQL或其它关系数据库管理系统编程语言来简明表达。此外,用强力(bruteforce)计算方法执行这样的查询,可能是不可接受的处理器开销并且因此大量消耗系统资源。鉴于此,需要通过扩展当前的编程语言标准以及有效的实施来在SQL中(或类似物)提供更优良的表现。在目前可用的方法中,计算按时间分组的聚合值可能是非常复杂的和非常计算密集型的。可能需要时间敏感聚合的查询的简单例子是请求在一段时间内脱销(库存总量=O)产品的最大数量。图1A显示了用于计算对这种查询的响应的SQL代码分段的一个例子。这种代码段需要如图1B所示的提交ID历史表格102和交易历史表格104的接合,并且这种代码分段对于中度到大尺寸的交易表格可能会非常慢,甚至在很高性能的计算系统上亦是如此。这种高系统资源负载的原因的至少一部分可以追溯到使用目前可用的方法对这种查询的低效执行。例如,有必要遍历每一个CID去识别每个数据值如何发生了改变,并且通常无法避免对于已经遍历的值的递归表示(recursion)。可能需要计算非常大的叉积(ClOSS-piOdllCt),以至于叉积的大小以及由此查询的执行时间可能与表格的尺寸的平方成比例。此外,查询的编码可能要求非常复杂的语法,这会潜在地导致编码错误。进一步的困难还会由于优化处理时间范围所必需的接合条件所带来的挑战而出现。总的来说,目前还没有执行这种计算的有效算法。为了利用现有的解决方案解决这些和潜在的其它问题,符合本主题的一个或多个实施方式的方法、系统、制造物品和类似物,除了其它可能的优点外,还可以提供能够及时地启用查询来计算多个(可选择地为所有)点的特定状态、聚合、或者类似事项的时间滑动操作器(time-slideroperator)或类似功能,例如,所述多个点或所有点为数据库已被修改的一些或全部提交ID点。使用这里描述的一个或多个特征或它们的功能等效特征,可以用更简洁的方式表达这样的查询,同时也使查询优化器选择更有效的代码实施方式。本主题的实施方式能够流线化用于计算复杂和大型的数据库表格的聚合度量值所需的操作。不是与表格尺寸的平方成比例,而是如果表格是被“CID来自(CIDfrom)”列206分类,与本文所描述的方法所类似的方法可以有利地与表格尺寸成线性比例(取决于使用的聚合函数),并可以使用编码策略使得查询简洁且更容易理解。在一些实施方式中,历史表格可以操作于附加模式,其中“以‘CID来自’排序”的顺序是自然给出的。一些尖端技术的(state-of-the-art)数据库可以包括检测和利用这种以“CID来自”列206排序的能力。可以在高等级上被表示为“以CIDO分组”的组操作器可用于通过一种类型的更改事件进行聚合。CID可以是虚拟属性,并且不需要被持久化(persisted)。下面对此问题提供更多的细节。间隔操作器可以用于限制用来回答查询所必需的操作的范围的时间范围。与一个或多个实施方式相一致,可以为历史表格中的每个CID计算聚合值。这种计算可以支持多种不同的聚合函数(例如,最小值、最大值、平均值、计数值、和值、中值,等等)。本主题的实施方式还可以解决与先前可用的用于计算在大型数据库表格中的聚合值的方法有关的一个或多个潜在的问题。这些问题可以包括但不仅限于降低对下列事项的需求:存储要被聚合的值、处理表示在某个CID有效的值的中间结果、优化基于聚合函数的存储类型,等等。作为计算的一部分,可能必须及时地识别表格中已被无效的值,从而可以将这些值从中间结果中移除。如此处所描述的,符合本主题的方法可以包括聚合函数的递增计算,这是随着历史表格在单向过程(singlepass)中被遍历而对历史表格中的每个CID计算的。图2示出了这样一种使用历史表格200的简化示例的方法的一些特性,历史表格200包括一个顺序列表,其列出了由行或记录标识符(就象在“ID”列202中那样)标识的记录的值的变化。“值”列204列出了在ID列202中标识的记录或行的值,并且“CID来自”列206和“CID去往”列210分别指示这样的CID值:在这些CID值之间位于值列204中的值对于被识别的记录或行是有效的。例如,在图2中,记录或行IDI的值在CID4从2变到5。作为符合本主题的实施方式的方法的一部分,历史表格可以在“CID来自”列206上排序。可替换地,如上面所提到的,一些现代化数据库管理程序可以包括检测和利用直接提供的“CID来自”排序的能力。CID的排序列表可以在一个过程中被顺序地遍历。在每个CID,存储在单个变量中的聚合值可以根据在那个CID处的记录或列行的值重新计算。图3显示了说明本主题的实施方式的一个例子的图300,其中聚合函数是求和。类似的方法可以适用于其它求和函数,例如计数、求平均等,其不依赖于对正在被聚合的数据的结构的了解。在图2中的历史表格200可以根据“CID来自”列206排序,或者,‘CID来自’顺序可以从提供该顺序而不必利用排序函数的数据库管理程序中自然地获取。一个聚合函数,在本例中为各值的和,可以通过遍历排序的历史表格200来计算。在CID1,该值为空。然后,在CID2,发生在其中插入值2和3的插入302(例如,图2中的历史表格200的每个前两行),产生当前的和为5。在CID3,在第二个插入304中插入第三个值2(例如,图2中历史表格200的每个第三行),其产生当前的和为7。在CID4,对于第一个值进行更新306,使得第一个值从2变到5(例如,图2中历史表格200的每个第四行),并且将和更新为10。继图2中的历史表格200所示的过去的例子,CID5可以是对第二个值(其曾经是3)的删除310,从而导致和减少到7。图4示出了说明本主题的实施方式的一个例子的图400,其中聚合函数是计算最大值。这种方法也可以用于其它聚合函数,例如计算最小值、中值、或者一些需要反映表格、列等中的值的当前状态的链接列表结构的其它度量。在这个例子中,聚合函数可以存储按值排序的链接列表,其利用计数器来指示每个值的实例的数量。其它的实施方式也是有可能的,例如最小/最大的堆(heap)或数组(array)。再次参考图2中的示例历史表格200,对于按“CID来自”列206排序的列表进行遍历导致形成基于CID2的第一链接列表402,其中在进行值的插入之后该列表中的第一个值是3,并且第二个值是2。在这一点上,在历史表格200的遍历过程中,最大值404是3。在CID3,第三个值2的插入导致第二链接列表406,其中最大值404保持为3并且值为2的计数器递增I以表明存在该值的两个实例。计数器对于保持事件的准确性来讲是必要的,在该事件中存在两个最大值(在本例中),但只有一个根据在交易表格200中的CID被删除。作为这个特征的示范说明,在遍历CID4时,其中第一个值2被更新为5。所得到的第三链接列表410示出了对应于新插入的值5的新的最大值404。对于值2的计数可以减1,以反映值从2到5的更新。对于诸如最大值或最小值的聚合函数,值的查找可以要求仅在固定时间访问排序列表中的第一个值。类似的优势可以在堆实施中实现。对于诸如中值的聚合函数或者其它需要关于数据集的结构的信息的更复杂的聚合函数,有必要检查列表中的所有条目。图5示出了说明本主题的实施方式的另一个例子的图500,其中聚合函数是计算最大值。与图4中描述的方法一样,这种方法也可以用于其它聚合函数,包括那些需要反映表格、列等中的值的当前状态的链接列表结构的聚合函数。其它可能的数据结构包括,但不限于,例如上面所讨论的堆。在这个例子中,聚合函数可以存储值的排序列表,其中重复的值包含在该列表中。再次参考图2中的示例历史表格200,对于按“CID来自”列206排序的列表的遍历导致形成基于CID2的第一排序列表502,其中在进行值的插入之后该列表中的第一个值是3,并且第二个值是2。在这一点上,在历史表格200的遍历过程中,最大值404是3。在CID3,第三个值2的插入导致产生第二排序列表506,其中最大值404保持为3并且值2的第二实例被添加到第二排序列表506。在遍历CID4时,其中第一个值2被更新为5,第三排序列表510包括对应于新插入的值5的新的最大值404。值2的实例之一从第三排序列表510中移除,以反映值从2到5的更新。在又一个符合本主题的方法中,诸如图6A所示的先前版本的阵列600可以用来访问对于每个CID为有效的所有行的值。在存储器中只需要一个位置。当下一个CID被扫描时,在先前版本阵列600中的值可以被覆盖。在历史表格200的扫描期间,为每个标识符更新一个值(例如在ID列202),使得存储的值对用于当前CID的标识符来说是有效的。对于每个CID重复这个处理。相应地,这种方法对于大型表格来说不是很有利,因为需要为每个CID保持整个历史表格的复本。只有新添加的行需要被添加到历史表格而删除或更新的行被删除。这通常是历史表格一个非常小的比例。总体上历史表格的每一行被添加至这个数据结构正好一次。在这种情况下不需要无效索引。然而,优势仍可以实现,因为这些复制的表格的线性扫描是可能的,使得存储器引用会减少甚至消除,这可以极大地提高缓存效率。在一些例子中,复本可以表示可见的行值的集合。—种可用于结合一个或多个本主题的实施方式的算法可以提供当持有值的字段、记录等的先前版本被无效时访问该值的有效途径。在一个例子中,可以形成诸如图6B所示的例子中的无效索引602。历史表格中的“CID去往”列210被索引至历史表格中值被无效的位置,其中值的无效通过删除或更新到另一个值来进行。无效索引602只需要被计算一次然后仅在额外更新或删除发生时被附加,因此无效索引602包括对于每个CID的无效元组(tuples)的列表。无效索引提供了历史表格内发生无效的位置的清晰列表,并且在一些情况下也是有利的,这些情况包括:其中相对少量的更新或删除已经发生或者可能会发生的情况,以及其中历史表格中的位置的存储带有方便的位置标识符的情况。用于记录何处发生值的无效的另一种选择是使用对于每个CID的无效元组的单独位列表,如图6C中的位列表604的表格中所示的那样。在这个例子中,每个CID具有其自己的位列表,其指示是否在历史表格200的每个位置由该CID提交了无效。这种方法在一些情况下是有利的,这些情况包括:在其中大量的删除已经发生或者预期要发生的情况,以及如果压缩(例如游长压缩)可用的情况。图7示出了描述方法特征的一个处理流程图700,特征中的一个或多个可以被包含在本主题的实施方式中。在702,访问数据库的排序的历史表格。该排序的历史表格可以通过直接输出‘CID来自’顺序的数据库程序来获取,例如如上述讨论的。或者,该排序的历史表格可以通过对历史表格按‘CID来自’值进行排序而预备。历史表格包括多个提交标识符(CID),这些提交标识符与对数据库表格中的值的一个或多个更新、插入和删除相关联。排序的表格可以包括与一个或多个值的变化的首次发生相关联的CID的顺序列表。在704,例如在单向过程中遍历排序的历史表格,以使用优化算法来计算聚合函数。优化算法可以包括与上面参考图6B或图6C所讨论的例子一致的一个或多个特征,该优化算法可以启动基于所选择的用于跟踪被无效的值到其相应的CID的方法来计算值的聚合度量值。在706,为数据库表格的当前版本生成计算的度量值,且计算的度量值在710被提升。提升可以包括下列操作中的一个或多个:存储计算的度量值、通过用户界面显示器呈现计算的度量值、发送包含该计算的度量值的电子消息、或者持久化计算的度量值或提供该度量值用于由一个或多个人查看或用于由一个或多个其它自动化流程(例如,软件程序、基于计算的度量值的一个或多个特征的硬件实施方式、这些处理的组合等)使用的一些其它方式。图8显示了可以包括在这里讨论的聚合计算中的各层的示范图800。客户端802可以向数据库管理系统的SQL接口804提交聚合请求。SQL接口804,与交易管理器806和SQL优化器810的操作相结合,可以调用优化的SQL扩展以及符合本主题的实施方式的操作器和数据结构,并且向查询引擎812传递聚合查询。查询引擎可以从存储器获得必要的数据库表格、历史表格等,存储器可以是任何类型的计算机可读存储介质,可以是本地的,也可以是通过网络访问的。另一个可以由本主题的实施方式所支持的查询的示范性例子是请求未装载订单(unshippedorder)的最大数量,例如由可用数据库跨越的整个历史,或者在一些指定的时间间隔。图9中的第一个示例性代码段900示出了如何在SQL中实现这样的查询,而无需使用符合本主题的实施方式的一种改进的操作器。代码段900中的内部查询对每一个CID(即每一次数据库被更新时)或者以一定的有效间隔([T_BEGIN],[T_END])检索未装载订单的数量。这个查询执行的测试被证明是非常昂贵的,因为具有所有可能的CID的表格的加入导致非常大的中间结果的产生。图9中的第二个示例性代码段902示出了利用符合本主题的实施方式的时间滑动操作器的SQL扩展的查询。依据历史间隔的类型,可以选择合适的VISIBLEAT操作器。贯穿历史表格在单向过程中以所选择的间隔对每一个CID计算聚合,其可以在执行效率和处理负担的减少或最小化上带来实质性的好处。此外,SQL扩展可以提供更为简洁的语法并提供线索给优化器以启动选择更有效的算法。如图所示,为每一个CID计算特定状态的语义可以由组加上表名称tableName.CIDO来表示。CIDO的函数语法可以强调CID不是物理属性。此外,VISIBLEAT操作器可以用于表露不同的版本。如前面所述的,这种方法对于执行时间是有利的,该执行时间随着表格被扫描与表格的尺寸至少近似线性的成比例,并且在遍历按“CID来自”列206排序的历史表格期间,当每个新值被读取时,聚合函数的状态被保持和适配。每个聚合函数(例如,和、平均、最大、最小等)可以被操作器的一个单独实施方式所支持。与本主题的一些实施方式相一致,企业资源计划(ERP)系统、其它商业软件架构或其它数据密集计算应用程序或软件架构可以被提供为单独的定制的软件安装,其运行于在特定组织的控制下的一个或多个处理器上。这种安排对于具有非常复杂的内部信息技术(IT)人员的大规模组织来说非常有效,以及对于需要可观的资本投资到计算硬件和咨询服务以定制商业上可获得的商业软件方案用于与特定组织的业务流程和功能一起工作是可实行的人来说是非常有效的。图10描述了与这种实施方式相一致的系统的框图。计算系统1002可以包含一个或多个核心软件平台模块304,其用于提供商业软件系统的一个或多个特征。计算系统还可以聚合或另外提供网关,通过网关用户可以访问由一个或多个外部软件组件1006提供的功能。客户机802可以通过直接连接、本地终端、或者通过网络1010(例如局域网、广域网、无线网、因特网等等)访问计算系统。聚合模块1012或其它相当的功能体可以有选择地包括或能够访问交易管理器806或相当的功能体,所述聚合模块1012或其它相当的功能体可以执行本文中描述的一个或多个特征或功能,并且可以访问存储数据(例如业务情景、业务流程和一个或多个业务配置的定义,以及与业务情景、业务流程和一个或多个业务配置的定义相关的数据、元数据、主数据等,和/或与业务情景或业务流程的特定实例有关系的数据对象和/或业务对象的具体实例,等等)和提供对该数据的访问的数据库管理系统1014。数据库管理系统1014可以包括与这里描述的特征相一致的并行化特征。出于数据分布的目的,可以把表格或表格内的范围分配到不同的数据库分区,这些不同的数据库分区例如出于数据分布和/或可扩展性原因而被分配到不同的主机。图11显示了与包含用于可扩展原因的数据分布的实施一致的企业资源系统架构1100的例子。这样的配置可以用于具有高性能要求的大型、就地部署(on-premise)或独立(stand-alone)系统。每个数据服务器进程1102及其相关数据分区1104可以被分配到离散的主机1106。主机1106可以是具有一个或多个物理处理器的独立机器或者是如图11所不的在大系统1002上的虚拟机。图11中标记为名称服务器1112的中央组件了解该系统的技术以及如何分布数据。在具有数据分布的系统中,名称服务器了解表格或表格的分区定位在哪个数据服务器进程1102上。一个或多个客户机1114(例如客户机802)可以通过直接连接或者通过网络1116访问名称服务器1112。在数据分布情景中,分区可以明智表格(tablewise)完成或者也可以通过分离表格来完成。使用明智表格分区,名称服务器基于当前的表格的分布(分配到每个数据库服务器进程1102的表格的数量)将新的表格分配到数据库服务器进程1102。然后用于该表格的数据会仅仅驻留在数据库服务器进程1102上。还可能指定,表格是在多个数据库服务器进程1102上被分离。名称服务器1112可选择地基于由应用程序指定的大小估计来对表格进行分区。当记录被插入到分离的表格中时,可以基于名称服务器信息将记录分布到其它数据库服务器进程1102。较小的组织也可以从商业软件功能的使用中获益。然而,这样的组织可能缺少使用单独商业软件架构产品所必需的必要的硬件资源、IT支持、和/或咨询预算,并且在一些情况下可以更加有效地由软件即服务(SaaS)安排进行服务,在软件即服务安排中商业软件系统架构被托管在诸如服务器的计算硬件上以及数据存储库被远离该组织的地点而进行维护并由授权用户通过瘦客户端,例如网络浏览器,通过网络进行访问。在商业软件系统的服务被提供于多个组织中的每一个组织的软件交付配置中,所述服务被托管于仅仅为该组织可访问的专用系统,在该专用系统中的软件安装可以以类似于上述举例的单独的、定制的本地运行在组织的硬件之上的软件安装的方式进行定制和配置。然而,为了更有效地利用SaaS提供者的计算资源以及为了提供重要性能冗余和更好的可靠性,将多个承租者托管于单一系统是有利的,该单一系统包含多个服务器并且为所有的多个承租者以安全的方式维护数据并同时还提供为每个承租者的业务流程定制的定制方案。与本主题的实施方式一致的数据分区还可以使用在如图12的系统架构1200描述的多租户环境中。多个承租者1202,每个互相隔离并且可由多个组织内的单独组织1204内的客户机1114通过网络1116访问,可以由同一个主机1106托管,主机1106可以是如图12所示的大系统1002上的虚拟机或者是包含一个或多个物理处理器的单独系统。承租者1202还可以有选择地跨越多个数据库服务器进程1102被分配到多于一个的主机1106上。以这种方式,把表格或表格内的范围分配到由于可扩展原因被分配到不同主机1106的不同数据库进程1102。或者,对于与其它承租者1202相隔离的各个承租者1202,一个或多个承租者1202可以由访问数据分区1104(或多个数据分区1104)的单一的数据库服务器进程1102进行服务。为了提供由单一软件发布架构1200支持的多个组织中的每个组织的业务流程的定制,由数据库管理系统1104存储的数据和数据对象可以包括如图13所示的三种类型的内容:核心软件平台内容1302(例如业务流程的标准定义),系统内容1304以及承租者内容1306。核心软件平台内容1302包括表示核心功能的内容并且不能由承租者修改。在一些例子中,系统内容1304可以由核心软件平台的运行时创建,并且可以包括存储与给定业务流程的特定实例相关的具体数据以及可修改地具有由每个承租者提供的数据的核心数据对象。保存在这些数据对象中的数据是承租者特有的:例如,承租者组中的每个承租者1202可以存储关于其自身库存、销售订单等的信息。隔离于承租者组中的每个承租者1202的承租者内容1306包括,为承租者组中的一个特定承租者1202定制的用于反映业务流程和数据的数据对象或到其它数据对象的扩展,该业务流程和数据是针对该特定承租者的并且在相应的承租者仅仅对于授权用户是可访问的。这种数据对象可以包括关键字域(例如库存跟踪情况下的“客户”)以及一个或多个主数据、业务配置信息、交易数据等等。例如,承租者内容1306可以反映承租者对于业务流程的标准模板定义的特有的修改或改变,以及与单独的流程步骤相关的业务对象的承租者特有的定制(例如在生成的条件表格中的记录、访问顺序、价格计算结果、其它承租者特有的值等等)。软件平台内容1302和系统内容1304的组合以及承租者组中的一个特定承租者1202的承租者内容1306被访问,以根据该承租者的定制和业务数据来提供业务流程定义和/或与业务流程的特定实例相关的状态信息,从而使得承租者组中的每个承租者1202被提供对定制方案的访问,该定制方案的数据仅仅对来自那个承租者1202的用户是可用的。此处描述的主题的一个或多个方面或特征可以在数字电子电路、集成电路、专门设计的专用集成电路(ASIC)、现场可编程门阵列(FPGA)计算硬件、固件、软件和/或其组合中实现。这些不同的方面或特点可以包括在包含至少一个可编程处理器的可编程系统上可执行和/或可解释的一个或多个计算机程序中的实现,可编程处理器可以是专用的或通用的,耦接到存储系统、至少一个输入设备以及至少一个输出设备以从其中接收数据和指令并向其发送数据和指令。客户机和服务器一般是互相远离的且通常通过通信网络进行交互。客户机和服务器之间的关系由运行在各自计算机上的并具有客户机-服务器相互关系的计算机程序虚拟产生。这些计算机程序,其还可以被称为程序、软件、软件应用程序、应用程序、组件、或代码,包括可编程处理器的机器指令,并且可以用高级程序和/或面向对象的编程语言,和/或汇编/机器语言来实现。如此处使用的,术语“机器可读介质”是指用于向可编程处理器提供机器指令和/或数据的任何计算机程序产品、装置和/或设备,比如磁盘、光盘、存储器和/或可编程逻辑器件(PLD),包括接收机器指令作为机器可读信号的机器可读介质。术语“机器可读信号”指任何用于提供机器指令和/或数据给可编程处理器的信号。机器可读介质可以非暂时性地存储这种机器指令,比如作为非暂时性的固态存储器或磁硬盘驱动器或任何其它等效的存储介质。机器可读介质可以可选地或另外地以暂时的方式存储这种机器指令,比如作为处理器高速缓存或其它与一个或多个物理处理器核心相关联的随机存取存储器。为提供与用户的交互,此处描述的主题的一个或多个方面或特征可以在计算机上实现,该计算机具有诸如用于向用户显示信息的阴极射线管(CRT)或液晶显示器(LCD)或光发射二极管(LED)监视器的显示设备和用户用来向计算机提供输入的键盘以及诸如鼠标或轨迹球的指示设备。其它种类的设备也可以用于提供和用户的交互。例如,提供到用户的反馈可以是任何形式的感测反馈,比如视觉反馈、听觉反馈或触觉反馈;并且来自用户的输入可以以任何形式接收,包括但不限于,声音、语音或触觉输入。其它可能的输入设备包括但不限于,触摸屏或其它诸如单一或多点电阻或电容轨迹板、语音识别硬件和软件、光学扫描仪、光学指示器、数字图像捕获设备及相关联的解译软件等等。此处描述的主题可以基于想要的配置而体现为系统、装置、方法和/或物品。在前面的说明中提出的实施方式不代表与此处描述的主题一致的所有实施方式。相反,它们仅仅是与所描述主题一致的一些例子。尽管上面已经详细描述了一些变化形式,但是可能做出其它的修改或添加。特别是,可以在此处提出的这些内容之外提供进一步的特征和/或变化。例如,上述实施方式可以指导出所公开的特征的各种组合和子组合和/或上述公开的一些进一步的特征的组合和子组合。另外,附图中示出的和/或本文描述的逻辑流程并不必然要求所显示的特定顺序或连续顺序以获得想要的结果。其它实施方式也在权利要求书的范围之内。权利要求1.一种计算机程序产品,包括存储指令的机器可读介质,当所述指令由至少一个可编程处理器执行时引起所述至少一个可编程处理器执行包括下列操作的操作:访问数据库的排序的历史表格,该历史表格包括与对数据库表格中的值的一个或多个更新、插入和删除相关联的多个提交标识符,该排序的历史表格包括与一个或多个值的变化的首次发生相关联的提交标识符的顺序列表;在单向过程中遍历排序的历史表格,以使用优化算法来计算聚合函数,该优化算法启动基于所选择的用于跟踪被无效的值到其相应的提交标识符的方法来计算值的聚合度量值;为数据库表格的当前版本生成计算的度量值;以及提升所计算的度量值。2.如权利要求1所述的计算机程序产品,其中所述提升包括下列事项中的一个或多个:存储计算的度量值、通过用户界面显示器呈现计算的度量值、以及发送包含该计算的度量值的电子消息。3.如权利要求1所述的计算机程序产品,其中所述优化算法包括下列事项中的一个或多个:生成无效索引、为多个提交标识符中的每个提交标识符生成单独的位列表、以及生成先前版本数组。4.如权利要求3所述的计算机程序产品,其中所述操作还包括根据聚合函数从多个算法中选择所述优化算法,该选择包括对多个算法中的每一个算法评估与一组优化标准相关的数据库表格的一个或多个属性。5.如权利要求1所述的计算机程序产品,其中所述遍历包括下列事项中的一个或多个:基于在每一个提交标识符处的值的变化递增变量、创建对应于每一个提交标识符的链接列表、以及创建对应于每一个提交标识符的排序的列表。6.如权利要求1所述的计算机程序产品,其中所计算的度量值包括和值、计数值、平均值、最小值、最大值、中值、模值和偏值中的一个或多个。7.如权利要求1所述的计算机程序产品,其中所述操作还包括通过以提交标识符依序对历史表格进行排序而生成所述排序的历史表格。8.一种系统,包括:至少一个可编程处理器,以及存储指令的机器可读介质,当所述指令由所述至少一个可编程处理器执行时,引起所述至少一个可编程处理器执行包括下列操作的操作:访问数据库的排序的历史表格,该历史表格包括与对数据库表格中的值的一个或多个更新、插入和删除相关联的多个提交标识符,该排序的历史表格包括与一个或多个值的变化的首次发生相关联的提交标识符的顺序列表;在单向过程中遍历排序的历史表格,以使用优化算法来计算聚合函数,该优化算法启动基于所选择的用于跟踪被无效的值到其相应的提交标识符的方法来计算值的聚合度量值;为数据库表格的当前版本生成计算的度量值;以及提升所计算的度量值。9.如权利要求8所述的系统,其中所述提升包括下列事项中的一个或多个:存储计算的度量值、通过用户界面显示器呈现计算的度量值、以及发送包含该计算的度量值的电子消息。10.如权利要求8所述的系统,其中所述优化算法包括下列事项中的一个或多个:生成无效索引、为多个提交标识符中的每个提交标识符生成单独的位列表、以及生成先前版本数组。11.如权利要求10所述的系统,其中所述操作还包括从多个算法中选择所述优化算法,该选择包括对多个算法中的每一个算法评估与一组优化标准相关的数据库表格的一个或多个属性。12.如权利要求8所述的系统,其中所述遍历包括下列事项中的一个或多个:基于在每一个提交标识符处的值的变化递增变量、创建对应于每一个提交标识符的链接列表、以及创建对应于每一个提交标识符的排序的列表。13.如权利要求8所述的系统,其中所计算的度量值包括和值、计数值、平均值、最小值、最大值、中值、模值和偏值中的一个或多个。14.一种计算机实现的方法,包括:访问数据库的排序的历史表格,该历史表格包括与对数据库表格中的值的一个或多个更新、插入和删除相关联的多个提交标识符,该排序的历史表格包括与一个或多个值的变化的首次发生相关联的提交标识符的顺序列表;在单向过程中遍历排序的历史表格,以使用优化算法来计算聚合函数,该优化算法启动基于所选择的用于跟踪被无效的值到其相应的提交标识符的方法来计算值的聚合度量值;为数据库表格的当前版本生成计算的度量值;以及提升所计算的度量值。15.如权利要求14所述的计算机实现的方法,其中所述提升包括下列事项中的一个或多个:存储计算的度量值、通过用户界面显示器呈现计算的度量值、以及发送包含该计算的度量值的电子消息。16.如权利要求14所述的计算机实现的方法,其中所述优化算法包括下列事项中的一个或多个:生成无效索引、为多个提交标识符中的每个提交标识符生成单独的位列表、以及生成先前版本数组。17.如权利要求16所述的计算机实现的方法,还包括从多个算法中选择所述优化算法,该选择包括对多个算法中的每一个算法评估与一组优化标准相关的数据库表格的一个或多个属性。18.如权利要求14所述的计算机实现的方法,其中所述遍历包括下列事项中的一个或多个:基于在每一个提交标识符处的值的变化递增变量、创建对应于每一个提交标识符的链接列表、以及创建对应于每一个提交标识符的排序的列表。19.如权利要求14所述的计算机实现的方法,其中所计算的度量值包括和值、计数值、平均值、最小值、最大值、中值、模值和偏值中的一个或多个。20.如权利要求14所述的计算机实现的方法,其中所述排序、遍历、生成、和提升中的至少一个是由一个或多个可编程处理器执行的。全文摘要提供了用于优化对历史表格中的聚合值的计算的方法、计算机程序产品和系统,其中可以对历史表格进行访问。排序的历史表格可以包括提交标识符的顺序列表,所述提交标识符与对数据库表格中的值的更新、插入和/或删除相关联。可以在单向过程中遍历排序的历史表格,以使用优化算法来计算聚合函数。优化算法可以启动基于所选择的用于跟踪被无效的值到其相应的提交标识符的方法来计算值的聚合度量值。为数据库表格的当前版本生成计算的度量值;以及提升所计算的度量值。文档编号G06F17/30GK103177063SQ201210462088公开日2013年6月26日申请日期2012年9月28日优先权日2011年12月23日发明者M·考夫曼,N·梅,A·汤德,D·科斯曼申请人:Sap股份公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1