CN1601541B - 用于自维护的实时数据聚集的方法和数据处理装置 - Google Patents

用于自维护的实时数据聚集的方法和数据处理装置 Download PDF

Info

Publication number
CN1601541B
CN1601541B CN2004100552395A CN200410055239A CN1601541B CN 1601541 B CN1601541 B CN 1601541B CN 2004100552395 A CN2004100552395 A CN 2004100552395A CN 200410055239 A CN200410055239 A CN 200410055239A CN 1601541 B CN1601541 B CN 1601541B
Authority
CN
China
Prior art keywords
data
subregion
record
gathering
cluster set
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.)
Expired - Fee Related
Application number
CN2004100552395A
Other languages
English (en)
Other versions
CN1601541A (zh
Inventor
G·B·齐克德罗夫
R·Z·加森
E·A·里尔
余春
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN1601541A publication Critical patent/CN1601541A/zh
Application granted granted Critical
Publication of CN1601541B publication Critical patent/CN1601541B/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/08Logistics, e.g. warehousing, loading or distribution; Inventory or stock management
    • G06Q10/087Inventory or stock management, e.g. order filling, procurement or balancing against orders
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • G06F16/24556Aggregation; Duplicate elimination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24564Applying rules; Deductive queries
    • G06F16/24565Triggers; Constraints
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2477Temporal data queries
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99937Sorting

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Economics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Operations Research (AREA)
  • Finance (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Strategic Management (AREA)
  • Marketing (AREA)
  • Development Economics (AREA)
  • Accounting & Taxation (AREA)
  • Human Resources & Organizations (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Probability & Statistics with Applications (AREA)
  • Fuzzy Systems (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

形成能够作为聚集数据表中的多个分区的多个聚集群。每个群包括多个聚集记录;每条聚集记录包括多个数据库记录的不同子集所包含的各值的聚集。当单个程序线程在聚集群更新事务期间访问聚集群时,不允许其他线程访问该群。各聚集群被组合成单个聚集记录表。多个数据库记录中的每一个可以与组织活动的一实例相对应且包括具有指示处于若干过程状态之一的相对应实例的值的字段。每个聚集群还可以包含按时间排序的聚集记录,每个按时间排序的聚集记录包含在与该按时间排序的聚集记录相关联的时间段期间处于若干过程状态之一的实例的聚集值。删除与在预选时窗之外完成的实例相对应的聚集记录。

Description

用于自维护的实时数据聚集的方法和数据处理装置
本专利文档公开的一部分包括受版权保护的资料。版权所有人不反对任何人按照其在(美国)专利和商标局的专利文献或记录中的形式对该专利文献或专利公开内容进行复制,但版权所有人保留其他所有的权利。
发明领域
本发明涉及用于监视公司或者其他组织的工作流程的方法和计算机系统。本发明更具体地涉及用于聚集与活动的多个实例相关的信息以及用于维护该聚集的方法。
发明背景
公司和其他组织使用计算机,并且尤其是计算机数据库应用程序,来监视和记录关于组织活动的信息。通常,该组织会有必须执行且频繁再现的各种过程或者活动。的确,在任何给定时间,公司具有活动的处于不同完成阶段的多个实例是很常见的。作为一个示例,一公司可能基于从客户接收到的订单来销售商品。感兴趣的活动可以是履行这些客户订单;每一个购买订单表示该活动的一个单独实例。在任何特定时间,该公司可具有该活动的处于完成的各个阶段的多个实例(即,来自多个客户的多个订单)。作为另一示例,一个金融机构可基于来自客户的申请而贷款给这些客户。感兴趣的活动可以是处理贷款申请以完成(例如,批准或拒绝),每一个贷款申请表示该活动的一个单独实例。在任何特定时间,司存在处于处理的不同阶段的多个贷款申请实例。在又一示例中,负责签发许可的政府实体可具有处于不同的处理阶段的多个许可申请。
为了能够监视活动的多个实例,许多组织将关于这些活动实例的信息存储在数据库程序中。具体而言,可为活动的每个实例创建记录或其他数据对象。然后建立一个单独的字段或该记录的其他组成,以持有每个实例所共有的一些信息类型的值。使用前述示例之一作为说明,销售商品的公司可为每个客户订单创建单独的数据库记录。在该记录中,可以存在用于以下各项的分开字段:接收到订单的时间,订单是从何处接收到的,订购的是什么,订单何时发货,等等。数据库程序的这种使用通常被概念化为一个表。活动的每个实例被分配了该表的一个单独的行(或元组)。多个实例所共有的信息的每个类型随后被分配了该表的一个单独的列。
尽管有时需要个别记录中的个别字段的值,但许多组织频繁需要关于一群记录的信息。而且,经常实时地需要该信息。诸如,许多销售商品的公司需要了解当前有多少订单正待处理,有多少订单已被完成,以及有多少订单正处于完成的一个或更多个中间阶段。某些数据库程序可以通过聚集该数据库的多个记录中的值来提供这样的报告。然而,仅此而已,但在数据库很庞大的情况下,这通常是不可接受的解决方案。
随着越来越多的记录累积,数据库的访问速度会显著降低。对于诸如每天接收到成百上千订单的商品销售商等大型公司而言,记录的数量能达到数十万或数百万。在每次查询数据库时,需要有限的时间来搜索盘驱动器或其他存储设备。类似地,当创建新记录和更新旧记录时,需要有限的时间来创建或更新每个记录。随着记录数目的增长,找到特定记录所需的时间在增加。在具有数百(或数千)用户和数十万(或数百万)数据库记录的公司或者组织中,数据库系统访问的等待时间变得相当长。此外,在众多用户尝试访问数据库中的同一信息的情况下,在尝试访问同一记录的用户之间会发生死锁。如果众多用户将记录插入或者更新到大型数据库中而其他用户尝试访问该数据库以生成各个字段的摘要,则所有用户都将体验欠满意的数据库性能。
另一个可能的解决方案是为数据库中的数据生成联机分析处理(OLAP)立方体。然而,生成OLAP立方体所需要的处理也相当耗时。如果存在大量数据库记录,则通常只能在每天的的基础上(或有时是在每小时的基础上)生成OLAP立方体。如果组织实时地需要聚集信息,则OLAP立方体常常会力不从心。
发明概述
本发明解决与维护关于活动的多个实例的聚集信息相关联的上述和其他挑战。在至少一个实施例中,本发明包括一种用于维护多个数据库记录的各字段所包含的各值的聚集的方法。该方法包括创建多个聚集群。每一个群包括多个聚集记录,并且每个聚集记录包括该多个数据库记录的不同子集的各字段所包含的各值的聚集的值。该方法还包括,在插入或更新该多个数据库记录的第一数据库记录时,选择第一聚集群。该方法还包括基于所插入或更新的第一数据库记录中的一个或多个的值并作为第一聚集群更新事务的一部分来修订第一聚集群的各聚集记录之一的聚集值。阻止对该第一聚集群的随后选择,直至完成第一聚集群的更新事务为止。在执行第一聚集群的更新事务且在插入或更新该多个数据库记录中的第二数据库记录时,选择第二聚集群。基于所插入或更新的第二数据库记录中的一个或多个值且在第一聚集群更新事务期间,修订第二聚集群的各聚集记录之一的聚集值。在本发明的其他方面,各聚集群被组合成聚集记录的单个表。
在至少另一实施例中,本发明包括一种用于维护关于组织活动的多个实例的聚集数据的方法,该活动的每个实例具有多个过程状态中的一个状态。该方法包括在聚集数据表中创建多个记录,每条记录包含在同一时间段期间处于同一过程状态的多个实例的子集的聚集值。该方法还包括更新聚集数据表来反映将与处于各过程状态中的一个状态的实例相对应的数据删除到预选时间窗口之外。
结合附图,本发明的这些和其他特征和优点将从优选实施例的以下详细描述中将显而易见并易于完全理解。
附图简述
图1是示出了假设的批发公司对客户订单的处理的框图。
图2是用于图1的公司的实例数据表的一部分。
图3是聚集了来自图2的表的各个字段的数据的表。
图4示出了对聚集数据表的更新以反映新实例数据记录。
图5示出了对聚集数据表的更新以反映已有实例数据记录的更新。
图6示出了在多个程序线程之间的死锁。
图7示出了根据本发明的至少一个实施例的多分区聚集表。
图8示出了根据本发明的至少一个实施例的图7的聚集表的实现。
图9示出了根据本发明的至少一个实施例的组合了多分区聚集表的各分区的视图。
图10示出了用于将各分区分配给各程序线程的存储过程的一个实现。
图11示出了提供聚集数据且其中使用公司里程碑时间戳来作为聚集准则的另一个表。
图12示出了根据本发明的至少一个实施例方便对陈旧聚集数据进行删除的表。
图13是示出了根据本发明的至少一个实施例的用于维护实时数据聚集表的触发器的逻辑的流程图。
优选实施例的详细描述
本发明可通过结合于2002年5月31日提交的、序号为10/157,968、题为“Support for Real-Time Queries Concerning Current State.Data and history of aprocess(对关于过程的当前状态、数据和历史的实时查询的支持)”的美国专利申请中所描述的方法、装置和系统来有利地使用,该专利申请的内容通过引用结合与此。
将参考可在可从华盛顿州雷德蒙市的微软公司获得的SQL SERVERTM2000关系数据库管理系统(RDBMS)软件和相关联的RDBMS联机分析处理(OLAP)软件中找到的结构化查询语言(SQL)指令和其他数据分析特征来描述本发明。尽管在这里描述了可用来实现本发明的某些实施例的SQL指令的某些方面,然而,只要向本领域技术人员提供了这里所提供的说明书,则用于实现本发明的其他指令、程序设计算法和过程对于这些人员而言将是显而易见的。可从各种源获得SQL SERVERTM 2000RDBMS软件和相关联的OLAP服务软件的概括描述,包括可从http://www.microsoft.com/sql/techinfo/productdoc/2000/>获得的Karen Delaney(2001Microsoft press)的Inside
Figure GSB00000232176500041
SQL SERVERTM 2000和
Figure GSB00000232176500042
SQL SERVERTM 2000Books Online。本发明不限于使用SQLSERVERTM2000 RDBMS软件和相关联的OLAP服务软件的实现,并且可使用其他类型的RDBMS软件和OLAP软件来实现。
还可以参考在服务器上操作并由一个或多个客户机访问的RDBMS软件(例如上述的SQL SERVERTM2000软件)来描述本发明。这种配置在本领域中是已知的,且在例如在先前包括的美国专利申请10/157,968中描述。然而,客户机-服务器配置仅是可以实现本发明的方式的一个示例。本发明也能够在其他物理系统配置中实现。
图1是示出了基于客户购买订单来向客户销售商品的假设的批发公司对客户订单的处理的框图。为方便起见,公司在此被称为“公司X”。公司X接收来自多个客户的购买订单。在接收到每个购买订单时,公司X将关于该订单的信息输入到在数据库服务器上维护的数据库中。具体而言,公司X在数据库中为该购买订单创建新记录,连同用于各单个购买订单所共有的各种信息类型的字段。在该示例中,每条记录包括用于购买订单数目、接收的日期和时间、客户所在城市、订购的商品的数量的各个字段。公司X确定每个订单将被接受还是拒绝,并接着更新数据库内的一个或者多个其他字段来反映这一接受或拒绝。如果一个购买订单被接受,则将生成相对应的销售订单并将其发送给公司X的处于订购客户所在城市的仓库。当商品被发货给客户时,将发货时间输入(通过仓库之一处的客户计算机)到该记录的另一字段。当商品交付时,更新又一字段。
尽管创建了上述示例来描述本发明,但是该示例(包括在此描述的附加方面)表示许多实际公司,尽管是以简化的形式。此外,本领域技术人员将明白,相对于假设的公司X所描述的概念广泛适用于公司和其他组织活动。的确,可以一般参考“组织”而非“公司X”来替换地描述本发明。类似地,代替参考购买订单和订单履行的各个阶段,可以使用一般术语来描述本发明,例如“组织过程的实例”、组织过程实例的“状态”、组织过程实例的完成,等等。虽然使用了实际公司类型的简化示例来提供更易读的描述,但本发明不限于特定类型的组织或组织活动。
图2是来自图1的数据库的数据表的一部分,而且由公司X维护并用于存储关于各单独的购买订单实例的数据。这一实例数据表具有每个购买订单的单独记录(例如,行)和各种数据类型的单独字段(列)。在该示例中,“PO#”是购买订单号码。“接收时间”是接收购买订单的日期和时间,“城市”是最接近于发出购买订单的客户的仓库的所在城市,且“数量”是订购的项目的数目。“发货时间”是购买订单的商品的发货时间,且“交付时间”是商品交付的时间。“过程状态”是用来描述购买订单当前正在经历的那一部分过程的变量。如果已接收了购买订单但还未发货,则购买订单是“处理中”。如果已经发货但尚未交付,则购买订单是“已发货”。如果商品已经交付,则购买订单是“已交付”。尽管没有示出,但还可存在其他过程状态值(例如,被拒绝的购买订单的“已拒绝”)。商品尚未发货的购买订单在发货时间字段会有一个<NULL>(空)值。类似地,尚未交付的购买订单在“交付时间”字段中会有一个<NULL>值。在购买订单发货和/或交付时,将用适当的时间值来更新这些字段。
如可从图2看到的,并且即使在只有有限数目的记录的情况下,当需要聚集信息的时候,原始数据的表将变得难以使用。例如,如果需要来自特定仓库的所交付的所有商品,则必须检查每一行。用于获取聚集数据的更加有用的表格式在图3中示出。具体而言,图3通过仓库示出当前已交付、处理中或已发货的购买订单的总数(“计数”)。图3还在“数量”列中示出了每个仓库已交付、已发货和正在处理以供发货的商品的总数。
图4示出如何更新图3的表以反映接收到来自雷蒙德市的30个单位的新购买订单135号。具体而言,雷蒙德市的“处理中”总数增加了30且“计数”总数增加了1。图5示出了当购买订单135号已发货时对图4的表的更新。雷蒙德/处理中购买订单的“数量”和“计数”总数分别减少了30和1,而雷蒙德/已发货购买订单的相同字段分别增加了30和1。
尽管图4和图5的更新相对简单,然而当多个编程线程同时访问同一的聚集数据表时会发生问题。图6示出了尝试同时对同一个表执行事务的两个程序线程。为简单起见,假定存在关于“城市”和“过程状态”的群集索引(即,数据行基于群集索引键而按顺序存储),从而允许以图6所示的次序从上至下地访问记录。在许多数据库环境中,多个记录作为访问表的单个事务的一部分而被修改。由于每一事务所需的处理开销,因此批处理多个记录通常更高效。要求在“全部或没有”的基础上执行事务也是一般惯例。换言之,没有记录被修改,直至完成了事务的所有部分为止。否则,将会破坏表的完整性。
这些数据库处理约束可导致死锁。当程序线程A尝试在一个事务中更新三个记录时:更新雷蒙德/处理中和雷蒙德/已发货以反映购买订单134已发货,并更新西雅图/处理中以反映新购买订单136,死锁在图6中发生。同时,程序线程B也尝试在一个事务中更新三个记录:更新西雅图/处理中和西雅图/已发货以反映购买订单133已发货,以及接下来更新雷蒙德/处理中以反映新购买订单135。为了执行其事务,线程A在雷蒙德/处理中和雷蒙德/已发货上获得排它锁,以便在线程A更新这些记录的时候防止其他线程影响这些记录。线程A随后尝试在西雅图/处理中上获得排它锁。与此同时,线程B在记录西雅图/处理中和西雅图/已发货上获得排它锁并进行修改,并且随后尝试在雷蒙德/处理中上获得排它锁。由于线程A已经锁定了雷蒙德/处理中,所以线程B不能完成其事务的第一部分。然而,线程B能够在线程A尝试锁定西雅图/处理中之前锁定西雅图/处理器和西雅图/已发货。线程A从而被阻止完成其事务的第二部分。事实上,每个线程都在等待另一线程结束,而且两个都不能完成其事务。一些系统将选择线程之一作为死锁牺牲品,退回该牺牲品的事务的任何部分完成的部分,并向该牺牲品报告错误。尽管这允许另一线程继续进行,且尽管牺牲品可重试其事务,但是系统性能仍然降级。具体而言,取消部分完成的事务浪费了处理资源和存储器,并且随后由于重复事务先前所完成的部分而导致了进一步的浪费。
图7示出了根据本发明的至少一个实施例来如何防止死锁。将聚集值的表分割成各个单独的表。图7示出了两个分区(由粗线分开),并且附加部分的存在由垂直省略号来指示。每个单独的分区表0、1等包含相同的记录,但是这些记录中的值在分区之间通常将各不相同。在图7的示例中,分区0具有雷蒙德/已交付、雷蒙德/处理中、雷蒙德/已发货、西雅图/已交付、西雅图/处理中以及西雅图/已发货的记录。分区1也具有雷蒙德/已交付、雷蒙德/处理中、雷蒙德/已发货、西雅图/已交付、西雅图/处理中以及西雅图/已发货的记录。然而,分区0中的雷蒙德/已交付的“数量”和“计数”的值与分区1中雷蒙德/已交付“数量”和“计数”的值不同,等等。一次只准许单个程序线程访问特定分区。为了说明,图6中的线程A和线程B现在在图7中示出。在图7中,线程A在分区0上执行其事务,而线程B同时在分区1上执行其事务。因为这些线程不再竞争对同一记录的访问,因而避免了死锁。
在本发明的使用SQL SERVERTM2000 RDBMS软件来实现的一个实施例中,图7的分区表被实现成单独的SQL表,如图8所示。分区号作为附加字段(“分区ID”)而被包括。该多分区聚集表由在图2的实例数据表上的触发器来维护。如本领域所公知的,“触发器”是由INSERT(插入)、UPDATE(更新)或DELETE(删除)语句自动地调用的特殊类型的SQL存储过程。无论在何时将新记录插入到图2的实例数据表中,触发器都会使得对图8的多分区聚集表的分区之一作出贡献。类似地,当更新实例数据表(图2)中的记录时,多分区聚集表(图8)的对应记录也被更新。
在任何给定时间,图8的表中的单独分区将不具有关于公司X的完整信息。对实例数据表(图2)的一个更新可造成分区0内的更新,而对该实例数据表的另一个更新可造成分区1内的更新,等等。此外,在实例数据表中创建记录可造成图8的一个分区的表中的记录的更新,且该同一实例数据记录的稍后更新可造成不同分区中的记录的更新。例如,将新购买订单140号(雷蒙德,数量=200)添加到图2可造成图8中的<分区ID=1>/<城市=雷蒙德>/<过程状态=处理中>记录的“数量”和“计数”字段增加200和1。然而,当购买订单140的商品已发货时,图8中的<分区ID=3>/<城市=雷蒙德>/<过程状态=处理中>记录的“数量”和“计数”字段可减少200和1,且<分区ID=3>/<城市=雷蒙德>/<过程状态=已发货>记录的相同字段增加200和1。因此,组合各分区以便提供公司X的完整的数据聚集表。具体而言,下面的SQL代码在至少一个实例使用:
CREATE VIEW<view_name>
AS
SELECT City,ProcessState,SUM(Quantity),SUM(Count)
FROM<multi_partition_table>
GROUP BY City,ProcessState
第一个斜体名(“view_name(视图名)”)是在其中组合各单独的分区的视图的名称。第二个斜体名(“multi_partition_table(多分区表)”)是图8的多分区聚集表的名称。所得表(“view_name”)将是图9所示的形式。由于多分区聚集表的每个分区包含相对少量的记录,因此各分区可以相对快速地进行组合。事实上,概括了概要。在其他实施例中,每个分区可以实现成单独的表,并随后使用SQL JOIN(加入)语句来加入到CREATE VIEW(创建视图)命令。
因而每个分区一次只由一个程序线程访问,一个线程必须拥有虚拟权标才能访问一个分区。在本发明的一个实施例中,通过对名为Get_Mutex(获得互斥)的特殊存储过程的调用来获得该权标。如上所述,多分区聚集表由SQL触发器来维护。在可以更新多分区聚集表中的一行之前,触发器中的一个或多个指令必须指示要更新哪一行。作为这些指令的一部分,调用Get_Mutex存储过程。该Get_Mutex过程随后返回该表的分区ID列的值。当线程在具有该所返回的分区ID值的记录上执行事务时,阻止其他线程获得同一值,并且从而在分区正由另一线程更新时阻止对该分区的访问。
参考先前示例,当最初在实例数据表(图2)中创建购买订单140的记录时,激发触发器。该触发器随后:
调用Get_Mutex并接收分区ID的值;
确定该分区中的要被更新的行;
标识多分区聚集表的、其中“分区ID”等于Get_Mutex过程所返回的分区ID值、其中“城市”等于购买订单140的实例数据记录中的城市的值、并且其中“过程状态”等于“处理中”的行;
将该行中的“数量”的值增加购买订单140的实例数据记录中的“数量”的值;以及
将该行中的“计数”值加1。
作为进一步的说明,稍后更新购买订单140的已有实例数据表记录,以将“过程状态”从“处理中”改为“已发货”。触发器中的附加逻辑随后:
调用Get_Mutex并接收分区ID的值;
确定该分区中的要被更新的行;
标识多分区聚集表的、其中“分区ID”等于Get_Mutex过程所返回的值、
其中“城市”等于购买订单140的实例数据记录中的城市值、并且其中“过程状态”等于处理中的行;
将该行中的“数量”值减去购买订单140的实例数据记录中的“数量”值;
将该行中的“计数”值减1;
标识多分区聚集表的、其中“分区ID”等于Get_Mutex过程所返回的值、其中“城市”等于订单140的实例数据记录中的城市值、并且其中“过程状态”等于已发货的行;
将该行中的“数量”值增加购买订单140的实例数据记录中的“数量”值;以及
将该行中的“计数”值加1。
当购买订单140过程状态从已发货改为已交付时,类似的逻辑将标识并修改多分区聚集表中的适当的行。
Get_Mutex的一个实现在图10中示出。首先,创建名为RTA_Mutex的单列表(“create table RTA_Mutex(创建RTA_Mutex)”)。RTA_Mutex表具有与图8的多分区聚集表中的分区数相同的行数;接着为每个字段分配分区ID值之一。在图10的示例中,假定图8的表包括10个分区(即,分区ID具有从0到9的整数值)。接下来,创建Get_Mutex存储过程。在声明局部变量par之后,向局部par变量分配来自RTA_Mutex表中的各行之一的值。具体而言,“select(选择)”语句将来自RTA_Mutex表的其中分区ID等于“spid%10”的分区ID的值分配给par。系统函数spid返回当前用户进程的服务进程标识符。换言之,该spid函数返回标识调用Get_Mutex存储过程的程序线程的数字。模算术运算符(“%”)随后返回程序线程标识符除以10的余数。该过程随后找出RTA_Mutex的分区ID的值等于该余数的行,并使用排它锁锁定提示(“(xlock)”)来锁定该行。该锁定的RTA_Mutex行中的分区ID的值随后作为Get_Mutex存储过程的结果而被返回。因为该行上的排它锁,所以没有其他程序线程被允许访问RTA_Mutex表的该行,因此直到先前获得该分区ID值的事务完成为止都不能获得该分区ID值。
作为说明,具有标识符231的程序线程调用Get_Mutex。231除以10的余数是1;从而Get_Mutex返回给该程序线程的值是RTA_Mutex中的分区ID等于1的字段的值。在从Get_Mutex返回了值之后,线程231收能够更新图8中分区1的各行。当线程231更新分区1时,程序线程161调用Get_Mutex。然而,由于线程231的事务没有完成,因此线程161不能够访问RTA_Mutex的持有分区ID的值为1的行。线程161随后排队,直到必需的RTA_Mutex行上的排它锁被释放(即,线程231的事务完成)时为止。如果附加线程尝试访问该RTA_Mutex行,则它们也在先进先出(或其他)的基础上排队。值得注意的是,线程161不会继续进行,直至从它对Get_Mutex的调用返回了值为止,并且线程161因而不在线程231访问分区1时尝试访问分区1。当线程161在队列中等待释放xlock时,线程154调用Get_Mutex。由于当前在RTA_Mutex的其中分区ID=4的行上没有锁,因此Get_Mutex向线程154返回值(4)。
图10只是可实现Get_Mutex过程的方式的一个示例。作为另一示例,尝试访问一个分区的所有线程可进入先进先出的队列。该队列中的每个线程随后可被分配第一可用分区。
在一个实施例中,分区的数量至少等于且优选地大于数据库服务器上的处理器的数量。
如上所示,实例数据表(图2)的大小将会随着时间的推移接收到越来越多的购买订单而不断增加。然而,图9的聚集表(或者图8的多分区聚集表)的大小不会增加,除非增加附加聚集字段(例如,雷蒙德/已拒绝和西雅图/已拒绝)。尽管表的大小不会增加,然而“数量”和“计数”列的值将会增加。通常,组织仅仅需要某个时“窗”内的事件的聚集数据。例如,公司X可能需要当前正在处理的购买订单的聚集数据、当前正在发货的订单的聚集数据、以及已在最近24小时内交付的订单的聚集数据。此外,公司X可能想要基于例如事件在一天中发生的时间来对数据进行排序。参考图11,公司X管理人员们希望了解在最近的上午8点钟期间且尚未发货(在该示例中是0)、在最近的上午9点钟期间(在该示例中也是0)、在最近的上午10点钟期间(2和1)等等在雷蒙德和西雅图有多少购买订单变得正在处理中。类似地,这些管理人员们还想了解有多少购买订单已在上午8:00发货但是尚未交付、有多少购买订单已在上午9:00发货但尚未交付,等等。这些管理人员们还想知道在这些时间段期间有多少购买订单已从它们的位置处交付。然而,这意味着聚集表每小时都增长。与“处理中”或者“已发货”的且最终将变成“已交付”的购买订单不同,“已交付”购买订单不转到另一状态。换言之,一旦购买订单在特定一天中的特定几点钟中变成“已交付”,则记录将持久存储在聚集表中的该时刻/天,除非采取某些动作。随着时间的推移,该表将因而变得巨大且查询缓慢。另一方面,这些管理人员们对了解在较长时间段(例如,上周,等等)期间已从一个地点交付的购买订单的总数不感兴趣。尽管该信息对于某些目的而言也许有用,但其相对较少需要。
图12示出了在本发明的至少一个实施例中在不活动的购买订单(例如,已交付的购买订单)的数据到了一定年龄时可如何将该数据从实时聚集表中清除。为简单起见,只示出了单个分区。然而,并且如本领域技术人员将基于以下描述所明白的,可结合上述多分区实施例来实现图12的实施例。
如在图12中看到的,“时间片”和“时刻”列已经被添加到图9的实时聚集表中。“时间片”是更新该实例数据表(图2)以反映一个实例已完成的服务器日期和时间(精确到小时)。在该示例中,当订购的商品已交付给客户时,购买订单就完成了。“时刻”是感兴趣的事件在当天发生的钟点。在该示例中,“时间片”的时间组成与完成记录的“时刻”相同,但不必是这种情况。
如先前示例一样,图12的实时聚集表的数据由触发器修改,当该实例数据表的数据记录被插入或更新时该触发器就激发。“时间片”列的值由触发器根据两个规则自动生成。如果一个记录预期有更多更新(例如,商品尚未交付),则“时间片”为NULL(空)。否则,生成表示当前时间(精确到小时)和日期的数字。值得注意的是,已完成的购买订单的非空“时间片”值并不阻止已完成的购买订单的数据的聚集。因为“时间片”的时间组成只精确到小时,所以在同一个小时时间段期间从同一个仓库交付的购买订单可聚集在单个记录中。例如,购买订单126和128(图2)在分别在下午3:10和3:05交付。如在图12中看到的,1月20日下午3点/3/西雅图/已交付示出了“计数”2和“数量”790,这将图2中的购买订单126和购买订单128的数据记录联系起来。
每当触发器修改图12的实时聚集表时,该触发器还确定该表中的已完成实例聚集数据中的任一个是否是陈旧的,即不再需要的。在该示例中,假定超过24小时以前完成的实例的聚集数据是陈旧的且应该从聚集数据表中移除。因此,每次触发器修改图12的表时,该触发器删除具有时间片期间中的最近时间超过当前时间的24小时之前的“时间片”值的记录。如果触发器在1月21日下午1:05更新了图12的表,则1月20日下午12点/12/西雅图/已交付的记录就会被删除,因为该记录中的所有数据与超过24小时之前所完成的购买订单相对应。在至少一个实施例中,图12的表被显示在向用户隐藏“时间片”数据的视图中。
图13是示出了在多分区中维护实时数据聚集表(例如图12)的触发器的逻辑的流程图。具体而言,图13的流程图示出了在更新分区中的一个或多个聚集数据记录的事务期间,每个单独的程序线程中的触发器所遵循的逻辑。每个线程更新一个单独分区,每个分区都具有与图12的表相似的格式。在执行期间,触发器访问由SQL数据库服务器在存储器(例如RAM)中维护的两个名为“已插入”和“已删除”的系统表。“已插入”和“已删除”表由数据库服务器自动生成,并且临时储存来自在先前尝试将记录插入到实例数据表或更新实例数据表的现有记录(比如图2)时受影响的行的数据的副本。具体而言,“已插入”表包括插入到实例数据表的一行中的值,“已删除”表包括在实例数据表的更新的行中被替换的值。
开始后,在框102,触发器首先获得权标。如上所述,触发器通过对诸如Get_Mutex之类的过程的调用来获得权标。在框104,触发器随后确定是否正在更新实例数据记录。具体而言,触发器确定“已删除”表是否为空。如果“已删除”表不为空,则在框106,使用“已删除”表中的“数量”值来减少分区的适当记录的“数量”值。具体而言,触发器标识分区中、其中“时刻”等于实例数据记录被更新到其以前的“过程状态”值期间的钟点、“城市”等于已更新实例数据记录的城市、并且其中“过程状态”等于该已更新记录的先前过程状态的记录。该记录的“计数”值也减1。在框108,触发器随后确定该分区中的任何记录是否具有“时间片”值NULL和“计数”值0。如果是,则删除这些记录。
在框110,触发器确定正被更新的(或插入的)实例数据记录是否完成。换言之,该触发器决定是否预期有进一步的更新。这可以用各种方式来执行。例如,可以将“完成”列添加到每个实例记录中并且当更新完成时将其设定成“1”。在其他实施例中,各种过程状态值(例如,“已交付”或“已拒绝”)可以通过信号来通知实例的过程完成。如果实例数据记录没有完成(即,关于正被更新的购买订单实例的过程仍然活动且预期有进一步的更新),则在框112,使用来自“已插入”表的“数量”值来增加聚集表分区中的、其中“时间片”等于NULL、“时刻”等于实例数据记录被更新为其当前”过程状态”值的钟点、“城市”等于已更新的实例数据记录的城市、且“过程状态”等于已更新的实例数据记录的当前过程状态值的记录的“数量”值。该分区记录中的“计数”值也增加1。触发器随后终止。
如果在框110,触发器确定正被更新的实例数据记录已完成,则在框114生成“时间片”值。在框116,触发器删除具有处于所选择的时窗之外(例如24小时之前的)的“时间片”值的所有记录。触发器随后标识(如果如有必要则创建)其中“时间片”的值等于刚生成的“时间片”值、其中“时刻”等于完成的钟点、其中“城市”等于已更新的实例数据记录的城市、并且其中“过程状态”等于来自已完成的实例数据记录(在该示例中是“已交付”)的值的分区记录。随后使用来自“已插入”表的“数量”值来增加所标识(或创建)的分区记录的“数量”值。该分区记录的“计数”值也增加1。触发器随后终止。
在其他实施例中,图13的触发器逻辑可以被修改以适应实例数据表中的多个记录的更新。代替在框112和118之后结束,触发器将确定是否要更新附加实例记录来作为实例数据表的批量更新的一部分。如果是,则触发器逻辑将返回框104。如果否,则触发器随后终止。在其他实施例中,时窗可以由用户来调整。
虽然使用假设的公司类型作为示例描述了本发明,但是应该记住,本发明不限于特定类型的公司、组织或活动。此外,本发明也不限于其中通过对数据库记录中的各字段的值进行求和来聚集各个值的实现。仅作为一个示例,可以创建其中聚集值表示数据库记录中各字段的值的平均值的聚集表。因此,虽然描述了执行本发明的各具体示例,但本领域技术人员将明白,存在着落入所附权利要求书所阐明的本发明的精神和范围内的、上述系统和技术的众多变型和置换。这些和其他修改都处于由所附权利要求书所限定的本发明的范围之中。

Claims (21)

1.一种用于聚集来自多个数据库记录的数据,从而概括关于组织活动的多个实例的信息的方法,其中所述多个数据库记录的每一个对应于所述组织活动的多个实例中的一个,其中所述多个数据库记录的每一个中的数据反映对应于该记录的组织活动实例的属性,并且其中所述方法由至少一个计算机中的多个程序线程来执行,该方法包括:
创建至少一个表示多个分区的聚集表,每个分组包括多个聚集记录,每个聚集记录包括聚集值,该聚集值表示所述多个数据库记录的一个独立子集的各字段所包含的各值的聚集;
当插入或更新所述多个数据库记录中的第一数据库记录时,选择所述多个分区中的第一分区,其中,选择第一分区是响应于多个程序线程中的第一程序线程访问所述多个分区之一的请求而启动的;
在第一分区的聚集记录的至少一个中更新聚集值,其中所述更新是由第一程序线程来执行并作为第一分区更新事务的一部分,并且所述第一分区更新事务是基于所插入或所更新的第一数据库记录中的一个或多个值的;
阻止其它程序线程访问所述第一分区,直到所述第一程序线程不再请求对所述第一分区的访问;
当执行所述第分区更新事务时,选择第二分区,其中,选择第二分区是响应于多个程序线程中的第二程序线程访问所述多个分区之一的请求而启动的;
在第二分区的聚集记录的至少一个中更新聚集值,其中所述更新由第二程序线程来执行并作为第二分区更新事务的一部分,并且所述第二分区更新事务是基于所插入或所更新的第二数据库记录中的一个或多个值的,并且其中所述第二分区更新事务是在第一分区更新事务执行期间执行的;以及
聚集来自所述多个分区的聚集值,并输出经聚集的聚集值以作为所述多个组织活动实例的一部分。
2.如权利要求1所述的方法,其特征在于,每个分区是多分区聚集表的一个单独分区。
3.如权利要求1所述的方法,其特征在于,还包括:
当启动更新所述多个数据库记录中的第一数据库记录的后续事务时,选择第三分区;以及
基于后续更新的第一数据库记录中的一个或多个值,修订所述第三分区的聚集记录的聚集值。
4.如权利要求1所述的方法,其特征在于,所述聚集来自所述多个分区的聚集值的步骤包括:
将所述多个分区组合成单个聚集记录表,该单个表的每个记录聚集了来自所述多个分区的每一个的聚集记录的值。
5.如权利要求1所述的方法,其特征在于,所述创建至少一个聚集表包括创建至少三个分区。
6.如权利要求1所述的方法,其特征在于,所述创建至少一个聚集表包括创建至少十个分区。
7.如权利要求1所述的方法,其特征在于,该方法在带有至少一个处理器的计算机上执行,并且其中所述创建至少一个聚集表包括创建一定数目的聚集群,并且其中所述数目超过所述计算机中的处理器的数目。
8.如权利要求1所述的方法,其特征在于,还包括:
当收到来自第一程序线程的访问分区的请求时,确定发出请求的程序线程的系统标识符;以及
基于所确定的系统标识符来将分区标识符分配给第一程序线程。
9.如权利要求1所述的方法,其特征在于:
所述多个数据库记录中的每一个包括具有指示对应的实例处于若干过程状态之一的值的字段,以及
每个分区包括按时间排序的聚集记录,每个按时间排序的聚集记录包括在与该按时间排序的聚集记录相关联的时间段期间处于所述若干过程状态之一的实例的聚集值。
10.如权利要求9所述的方法,其特征在于,所述若干过程状态之一包括实例已完成,并且所述方法还包括:
修订所述按时间排序的聚集记录的聚集值,从而从所述经修订聚集值中排除在预选时窗之外完成的实例相对应的记录的影响。
11.如权利要求9所述的方法,其特征在于,包括:
对于一个聚集记录,当确定在与其相关联的时间段期间,所述多个数据库记录中没有一个处于若干过程状态之一,则将该聚集记录从分区删除。
12.如权利要求9所述的方法,其特征在于,所述过程状态之一与实例已完成相对应,并且其中所述多个数据库记录中的每一个都包括完成时间字段;并且所述方法还包括:
为与未完成的实例相对应的数据库记录的完成时间字段分配空值;
为与处于已完成过程状态的实例相对应的数据库记录的完成时间字段分配非空值。
13.如权利要求12所述的方法,其特征在于,还方法包括:
确定所述多个数据库记录中的一个记录是否已经被更新;
当确定所述数据库记录已经被更新时,基于所述更新修订所述多个聚集记录中的所述一个的聚集值;
进一步确定已更新的数据库记录是否包括指示所述相应实例处于已完成过程状态的值;
当确定所述相应实例处于已完成过程状态时,生成所述实例的完成时间值;以及
基于所述实例的完成时间值来更新所述多个聚集记录中的所述一个。
14.一种用于聚集来自多个数据库记录,从而概括关于组织活动的多个实例的信息的数据处理装置,其中所述多个数据库记录的每一个对应于所述组织活动的多个实例中的一个,其中所述多个数据库记录的每一个中的数据反映对应于该记录的组织活动实例的属性,该数据处理装置,包括:
至少一个数据储存设备;
至少一个用户输入设备;以及
在操作上连接到所述储存设备和所述用户输入设备的处理器,其中所述至少一个数据储存设备上存储有一组指令,所述一组指令在被执行时将所述处理器配置成:
创建至少一个表示多个分区的聚集表,每个分组包括多个聚集记录,每个聚集记录包括聚集值,该聚集值表示所述多个数据库记录的一个独立子集的各字段所包含的各值的聚集;
当插入或更新所述多个数据库记录中的第一数据库记录时,选择所述多个分区中的第一分区,其中,选择第一分区是响应于多个程序线程中的第一程序线程访问所述多个分区之一的请求而启动的;
在第一分区的聚集记录的至少一个中更新聚集值,其中所述更新是由第一程序线程来执行并作为第一分区更新事务的一部分,并且所述第一分区更新事务是基于所插入或所更新的第一数据库记录中的一个或多个值的;
阻止其它程序线程访问所述第一分区,直到所述第一程序线程不再请求对所述第一分区的访问;
当执行所述第分区更新事务时,选择第二分区,其中,选择第二分区是响应于多个程序线程中的第二程序线程访问所述多个分区之一的请求而启动的;
在第二分区的聚集记录的至少一个中更新聚集值,其中所述更新由第二程序线程来执行并作为第二分区更新事务的一部分,并且所述第二分区更新事务是基于所插入或所更新的第二数据库记录中的一个或多个值的,并且其中所述第二分区更新事务是在第一分区更新事务执行期间执行的;以及
聚集来自所述多个分区的聚集值,并输出经聚集的聚集值以作为所述多个组织活动实例的一部分。
15.如权利要求14所述的数据处理装置,其特征在于,所述一组指令包括附加指令,所述附加指令在被执行时将所述处理器配置成:
当启动更新所述多个数据库记录中的第一数据库记录的后续事务时,选择第三分区,以及
基于后续更新的第一数据库记录中的一个或多个值,修订所述第三分区的聚集记录的聚集值。
16.如权利要求14所述的数据处理装置,其特征在于,所述聚集聚集值的步骤包括:
将所述多个分区组合成单个聚集记录表,该单个表的每个记录聚集了来自所述多个分区中的每一个的聚集记录的值。
17.如权利要求14所述的数据处理装置,其特征在于,所述一组指令包括附加指令,所述附加指令在被执行时将所述处理器配置成:
当收到来自第一程序线程的访问分区的请求时,确定第一程序线程的系统标识符,以及
基于所确定的系统标识符来将分区标识符分配给第一程序线程。
18.如权利要求14所述的数据处理装置,其特征在于,
所述多个数据库记录中的每一个包括具有指示对应的实例处于若干过程状态之一的值的字段,以及
每个分区包括按时间排序的聚集记录,每个按时间排序的聚集记录包括在与该按时间排序的聚集记录相关联的时间段期间处于所述若干过程状态之一的实例的聚集值。
19.如权利要求18所述的数据处理装置,其特征在于,所述一组指令包括附加指令,所述附加指令在被执行时将所述处理器配置成:
修订所述按时间排序的聚集记录的聚集值,从而从所述经修订聚集值中排除在预选时窗之外完成的实例相对应的记录的影响。
20.如权利要求18所述的数据处理装置,其特征在于,所述过程状态之一与实例已完成相对应,并且其中所述多个数据库记录中的每一个都包括完成时间字段,并且其中所述一组指令包括附加指令,所述附加指令在被执行时将所述处理器配置成:
为与未完成的实例相对应的数据库记录的完成时间字段分配空值;
为与处于已完成过程状态的实例相对应的记录的完成时间字段分配非空值。
21.如权利要求20所述的数据处理装置,其特征在于,所述一组指令包括附加指令,所述附加指令在被执行时将所述处理器配置成:
确定所述多个数据库记录中的一个记录是否已经被更新,
当确定所述数据库记录已经被更新时,基于所述更新修订所述多个聚集记录的所述一个记录的聚集值,
进一步确定已更新的数据库记录是否包括指示所述相应实例处于已完成过程状态的值,
当确定所述相应实例处于已完成过程状态时,生成所述实例的完成时间值,以及
基于所述实例的完成时间值来更新所述多个聚集记录中的所述一个记录。
CN2004100552395A 2003-09-26 2004-07-14 用于自维护的实时数据聚集的方法和数据处理装置 Expired - Fee Related CN1601541B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/670,561 US7149736B2 (en) 2003-09-26 2003-09-26 Maintaining time-sorted aggregation records representing aggregations of values from multiple database records using multiple partitions
US10/670,561 2003-09-26

Publications (2)

Publication Number Publication Date
CN1601541A CN1601541A (zh) 2005-03-30
CN1601541B true CN1601541B (zh) 2011-11-30

Family

ID=34194828

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2004100552395A Expired - Fee Related CN1601541B (zh) 2003-09-26 2004-07-14 用于自维护的实时数据聚集的方法和数据处理装置

Country Status (6)

Country Link
US (1) US7149736B2 (zh)
EP (2) EP2306381A1 (zh)
JP (1) JP4828102B2 (zh)
KR (1) KR20050030531A (zh)
CN (1) CN1601541B (zh)
AT (1) ATE521944T1 (zh)

Families Citing this family (92)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100922141B1 (ko) 2003-09-15 2009-10-19 아브 이니티오 소프트웨어 엘엘시 데이터 프로파일링 방법 및 시스템
US8315972B2 (en) * 2003-09-26 2012-11-20 Microsoft Corporation Method for maintaining databases information about multiple instances of an activity generating, updating virtual OLAP cube based on modified star-schema
US7392359B2 (en) * 2003-10-01 2008-06-24 Hewlett-Packard Development Company, L.P. Non-blocking distinct grouping of database entries with overflow
US7539652B2 (en) 2003-11-28 2009-05-26 Manyworlds, Inc. Adaptive self-modifying and recombinant systems
US7606772B2 (en) * 2003-11-28 2009-10-20 Manyworlds, Inc. Adaptive social computing methods
US7526459B2 (en) 2003-11-28 2009-04-28 Manyworlds, Inc. Adaptive social and process network systems
USRE45770E1 (en) 2003-11-28 2015-10-20 World Assets Consulting Ag, Llc Adaptive recommendation explanations
US8600920B2 (en) 2003-11-28 2013-12-03 World Assets Consulting Ag, Llc Affinity propagation in adaptive network-based systems
US8566263B2 (en) 2003-11-28 2013-10-22 World Assets Consulting Ag, Llc Adaptive computer-based personalities
US7526458B2 (en) * 2003-11-28 2009-04-28 Manyworlds, Inc. Adaptive recommendations systems
US20090018918A1 (en) 2004-11-04 2009-01-15 Manyworlds Inc. Influence-based Social Network Advertising
US12093983B2 (en) 2003-11-28 2024-09-17 World Assets Consulting Ag, Llc Adaptive and recursive system and method
US7275055B2 (en) * 2004-02-26 2007-09-25 International Business Machines Corporation Method and system for managing aggregation data structures
US8086607B2 (en) 2004-04-26 2011-12-27 Right90, Inc. Annotation of data in an operating plan data aggregation system
DE602004024293D1 (de) * 2004-06-23 2010-01-07 Sap Ag System und Verfahren zur Datenverarbeitung
US7278122B2 (en) * 2004-06-24 2007-10-02 Ftl Systems, Inc. Hardware/software design tool and language specification mechanism enabling efficient technology retargeting and optimization
US7359923B2 (en) * 2004-08-20 2008-04-15 International Business Machines Corporation Online incremental deferred integrity processing and maintenance of rolled in and rolled out data
US7516114B2 (en) * 2004-10-22 2009-04-07 International Business Machines Corporation Visual structuring of multivariable data
US20060190433A1 (en) * 2005-02-23 2006-08-24 Microsoft Corporation Distributed navigation business activities data
US20060224400A1 (en) * 2005-04-01 2006-10-05 Microsoft Corporation Business event notifications on aggregated thresholds
US7774359B2 (en) * 2005-04-26 2010-08-10 Microsoft Corporation Business alerts on process instances based on defined conditions
US8001015B2 (en) 2005-04-29 2011-08-16 Mercatus Technologies Inc. Systems and methods for managing and displaying dynamic and static content
US20060254861A1 (en) 2005-04-29 2006-11-16 Sprn Licensing Srl Electronic shopping cart handle
US7627544B2 (en) * 2005-05-20 2009-12-01 Microsoft Corporation Recognizing event patterns from event streams
GB0524348D0 (en) * 2005-11-30 2006-01-04 Ibm Method and system for concurrent processing of list items
US20070150585A1 (en) * 2005-12-28 2007-06-28 Microsoft Corporation Multi-dimensional aggregation on event streams
US7519613B2 (en) * 2006-02-28 2009-04-14 International Business Machines Corporation Method and system for generating threads of documents
CN100456295C (zh) * 2006-06-20 2009-01-28 华为技术有限公司 一种数据系统维护方法及装置
US8806495B2 (en) * 2006-11-20 2014-08-12 Microsoft Corp. Lightweight transactional memory for data parallel programming
US8095474B2 (en) * 2006-11-29 2012-01-10 Caterpillar Inc. Method for processing advanced ship notices (ASNs)
US20080133493A1 (en) * 2006-12-04 2008-06-05 Michael Bender Method for maintaining database clustering when replacing tables with inserts
US8424011B2 (en) * 2007-05-31 2013-04-16 Sap Ag Multiple instance management for workflow process models
US8229966B2 (en) * 2007-09-07 2012-07-24 Teradata Us, Inc. System to generate a structured query language query by using a dimensional hierarchy
GB2460626A (en) * 2008-05-22 2009-12-09 Geotate Bv File creation system and method
JP5086934B2 (ja) * 2008-08-07 2012-11-28 株式会社三菱東京Ufj銀行 データ処理装置及びプログラム
US20100146008A1 (en) * 2008-12-10 2010-06-10 Yahoo! Inc. Light-weight concurrency control in parallelized view maintenance
EP2290562A1 (en) * 2009-08-24 2011-03-02 Amadeus S.A.S. Segmented main-memory stored relational database table system with improved collaborative scan algorithm
US8645377B2 (en) * 2010-01-15 2014-02-04 Microsoft Corporation Aggregating data from a work queue
CN102129425B (zh) * 2010-01-20 2016-08-03 阿里巴巴集团控股有限公司 数据仓库中大对象集合表的访问方法及装置
US9292575B2 (en) 2010-11-19 2016-03-22 International Business Machines Corporation Dynamic data aggregation from a plurality of data sources
US9449057B2 (en) 2011-01-28 2016-09-20 Ab Initio Technology Llc Generating data pattern information
US10599620B2 (en) * 2011-09-01 2020-03-24 Full Circle Insights, Inc. Method and system for object synchronization in CRM systems
US10621206B2 (en) 2012-04-19 2020-04-14 Full Circle Insights, Inc. Method and system for recording responses in a CRM system
US8533804B2 (en) 2011-09-23 2013-09-10 Loyal3 Holdings, Inc. User login with redirect to home network
US8468129B2 (en) 2011-09-23 2013-06-18 Loyal3 Holdings, Inc. Asynchronous replication of databases of peer networks
JP5295395B2 (ja) * 2012-01-04 2013-09-18 株式会社三菱東京Ufj銀行 データ処理装置
US8938416B1 (en) * 2012-01-13 2015-01-20 Amazon Technologies, Inc. Distributed storage of aggregated data
US9218371B2 (en) 2012-02-29 2015-12-22 International Business Machines Corporation Automatic table cleanup for relational databases
US10180960B2 (en) 2012-05-15 2019-01-15 Entit Software Llc Query processing
US10061807B2 (en) 2012-05-18 2018-08-28 Splunk Inc. Collection query driven generation of inverted index for raw machine data
US8682925B1 (en) 2013-01-31 2014-03-25 Splunk Inc. Distributed high performance analytics store
US8516008B1 (en) 2012-05-18 2013-08-20 Splunk Inc. Flexible schema column store
US8935430B2 (en) 2012-06-29 2015-01-13 Verisign, Inc. Secondary service updates into DNS system
US8792633B2 (en) 2012-09-07 2014-07-29 Genesys Telecommunications Laboratories, Inc. Method of distributed aggregation in a call center
CN103729304B (zh) * 2012-10-11 2017-03-15 腾讯科技(深圳)有限公司 数据处理方法及装置
US9239741B2 (en) * 2012-10-16 2016-01-19 Futurewei Technologies, Inc. System and method for flexible distributed massively parallel processing (MPP)
KR102129643B1 (ko) 2012-10-22 2020-07-02 아브 이니티오 테크놀로지 엘엘시 소스 추적으로 데이터 프로파일링
US9756184B2 (en) 2012-11-08 2017-09-05 Genesys Telecommunications Laboratories, Inc. System and method of distributed maintenance of contact center state
US9900432B2 (en) 2012-11-08 2018-02-20 Genesys Telecommunications Laboratories, Inc. Scalable approach to agent-group state maintenance in a contact center
US10412121B2 (en) 2012-11-20 2019-09-10 Genesys Telecommunications Laboratories, Inc. Distributed aggregation for contact center agent-groups on growing interval
US9477464B2 (en) 2012-11-20 2016-10-25 Genesys Telecommunications Laboratories, Inc. Distributed aggregation for contact center agent-groups on sliding interval
WO2014081895A1 (en) * 2012-11-20 2014-05-30 Genesys Telecommunications Laboratories, Inc. Distributed aggregation for contact center agent-groups on growing interval
US9460135B2 (en) * 2012-12-18 2016-10-04 Webtrends Inc. Methods and automated systems for testing, optimization, and analysis that use robust statistical processing of non-binomial experimental results
US9892026B2 (en) * 2013-02-01 2018-02-13 Ab Initio Technology Llc Data records selection
US9578171B2 (en) 2013-03-26 2017-02-21 Genesys Telecommunications Laboratories, Inc. Low latency distributed aggregation for contact center agent-groups on sliding interval
JP5604554B2 (ja) * 2013-04-30 2014-10-08 株式会社三菱東京Ufj銀行 データ処理装置
US9917885B2 (en) 2013-07-30 2018-03-13 International Business Machines Corporation Managing transactional data for high use databases
CN103544302B (zh) * 2013-10-31 2018-06-19 北京锐安科技有限公司 数据库的分区维护方法和装置
US9569481B1 (en) * 2013-12-10 2017-02-14 Google Inc. Efficient locking of large data collections
US11487732B2 (en) 2014-01-16 2022-11-01 Ab Initio Technology Llc Database key identification
WO2015131961A1 (en) 2014-03-07 2015-09-11 Systema Systementwicklung Dip.-Inf. Manfred Austen Gmbh Real-time information systems and methodology based on continuous homomorphic processing in linear information spaces
AU2015225694B2 (en) 2014-03-07 2019-06-27 Ab Initio Technology Llc Managing data profiling operations related to data type
WO2016074370A1 (zh) * 2014-11-12 2016-05-19 华为技术有限公司 一种KeyValue数据库的数据表的更新方法与表数据更新装置
US10706073B1 (en) * 2014-12-03 2020-07-07 Amazon Technologies, Inc. Partitioned batch processing for a usage analysis system
US10229150B2 (en) * 2015-04-23 2019-03-12 Splunk Inc. Systems and methods for concurrent summarization of indexed data
US10417189B2 (en) 2015-10-30 2019-09-17 Netapp, Inc. Hybrid model of fine-grained locking and data partitioning
US10452633B2 (en) * 2015-10-30 2019-10-22 Netapp, Inc. Auto-expiring locks based on object stamping
US10546257B2 (en) * 2016-05-09 2020-01-28 International Business Machines Corporation Optimizing event aggregation in an event-driven system
US11182384B2 (en) * 2016-07-25 2021-11-23 Visa International Service Association Event-driven architecture using rolling aggregates
US20180067972A1 (en) 2016-09-07 2018-03-08 International Business Machines Corporation Automatically setting an auto-purge value to multiple tables within a database
CN106598823B (zh) * 2016-10-19 2019-01-25 同盾控股有限公司 一种网络行为特征的差量计算方法和系统
US10474674B2 (en) 2017-01-31 2019-11-12 Splunk Inc. Using an inverted index in a pipelined search query to determine a set of event data that is further limited by filtering and/or processing of subsequent query pipestages
US11379530B2 (en) 2017-01-31 2022-07-05 Splunk Inc. Leveraging references values in inverted indexes to retrieve associated event records comprising raw machine data
US11068540B2 (en) 2018-01-25 2021-07-20 Ab Initio Technology Llc Techniques for integrating validation results in data profiling and related systems and methods
US10776338B2 (en) 2018-03-29 2020-09-15 Hewlett-Packard Development Company, L.P. Data aggregation data structure
CN109034982B (zh) * 2018-09-05 2022-06-17 满金坝(深圳)科技有限公司 千万级订单表中订单信息加速处理方法及装置
CN109684398A (zh) * 2018-12-24 2019-04-26 普元信息技术股份有限公司 大数据环境下基于多状态实现数据优化管理功能的系统及方法
CN112579616A (zh) * 2019-09-29 2021-03-30 北京国双科技有限公司 任务处理方法、装置、存储介质和电子设备
US11841827B2 (en) * 2021-01-29 2023-12-12 Splunk Inc. Facilitating generation of data model summaries
US11892976B2 (en) 2021-01-29 2024-02-06 Splunk Inc. Enhanced search performance using data model summaries stored in a remote data store
US11748352B2 (en) * 2021-08-26 2023-09-05 International Business Machines Corporation Dynamical database system resource balance
CN113986932B (zh) * 2021-12-28 2022-04-12 恒生电子股份有限公司 数据处理方法、装置、计算机设备及可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6496909B1 (en) * 1999-04-06 2002-12-17 Silicon Graphics, Inc. Method for managing concurrent access to virtual memory data structures
US20030149702A1 (en) * 2002-02-05 2003-08-07 Compaq Information Technologies Group, L.P. Operational data store

Family Cites Families (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5319780A (en) * 1987-10-19 1994-06-07 International Business Machines Corporation System that implicitly locks a subtree or explicitly locks a node based upon whether or not an explicit lock request is issued
JPH04167056A (ja) * 1990-10-31 1992-06-15 Hitachi Ltd Almデータベースの更新方式
JPH052610A (ja) * 1991-06-25 1993-01-08 Mitsubishi Electric Corp リレーシヨナルデータベースにおける集約演算処理方式
US5713020A (en) * 1993-09-02 1998-01-27 Microsoft Corporation Method and system for generating database queries containing multiple levels of aggregation
US5590319A (en) * 1993-12-15 1996-12-31 Information Builders, Inc. Query processor for parallel processing in homogenous and heterogenous databases
US5537589A (en) * 1994-06-30 1996-07-16 Microsoft Corporation Method and system for efficiently performing database table aggregation using an aggregation index
CA2167790A1 (en) * 1995-01-23 1996-07-24 Donald S. Maier Relational database system and method with high data availability during table data restructuring
US5717919A (en) * 1995-10-02 1998-02-10 Sybase, Inc. Database system with methods for appending data records by partitioning an object into multiple page chains
US5794241A (en) * 1996-04-08 1998-08-11 Oracle Corporation Method and apparatus for dynamically disabling and enabling table locking for a database
US5822751A (en) * 1996-12-16 1998-10-13 Microsoft Corporation Efficient multidimensional data aggregation operator implementation
US6301616B1 (en) * 1997-04-11 2001-10-09 Microsoft Corporation Pledge-based resource allocation system
US6115705A (en) * 1997-05-19 2000-09-05 Microsoft Corporation Relational database system and method for query processing using early aggregation
US5926818A (en) * 1997-06-30 1999-07-20 International Business Machines Corporation Relational database implementation of a multi-dimensional database
US5940818A (en) * 1997-06-30 1999-08-17 International Business Machines Corporation Attribute-based access for multi-dimensional databases
US5905985A (en) * 1997-06-30 1999-05-18 International Business Machines Corporation Relational database modifications based on multi-dimensional database modifications
US5943668A (en) * 1997-06-30 1999-08-24 International Business Machines Corporation Relational emulation of a multi-dimensional database
US5978796A (en) * 1997-06-30 1999-11-02 International Business Machines Corporation Accessing multi-dimensional data by mapping dense data blocks to rows in a relational database
US6205447B1 (en) * 1997-06-30 2001-03-20 International Business Machines Corporation Relational database management of multi-dimensional data
JP3476349B2 (ja) * 1997-11-12 2003-12-10 三菱電機株式会社 データ処理装置
GB2332540B (en) * 1997-12-18 2002-12-04 Ibm An improved parcel trace system
BR9909896A (pt) * 1998-03-27 2001-09-11 Informix Software Inc Processamento de vistas pré-computadas
US6122640A (en) * 1998-09-22 2000-09-19 Platinum Technology Ip, Inc. Method and apparatus for reorganizing an active DBMS table
US20010051907A1 (en) * 1998-12-08 2001-12-13 Srihari Kumar Interactive financial portfolio tracking interface
US6502086B2 (en) * 1999-01-04 2002-12-31 International Business Machines Corporation Mapping binary objects in extended relational database management systems with relational registry
US6438537B1 (en) * 1999-06-22 2002-08-20 Microsoft Corporation Usage based aggregation optimization
US6442560B1 (en) * 1999-06-22 2002-08-27 Microsoft Corporation Record for multidimensional databases
US6430565B1 (en) * 1999-06-22 2002-08-06 Microsoft Corporation Path compression for records of multidimensional database
US6665682B1 (en) * 1999-07-19 2003-12-16 International Business Machines Corporation Performance of table insertion by using multiple tables or multiple threads
US6374263B1 (en) * 1999-07-19 2002-04-16 International Business Machines Corp. System for maintaining precomputed views
US6408292B1 (en) * 1999-08-04 2002-06-18 Hyperroll, Israel, Ltd. Method of and system for managing multi-dimensional databases using modular-arithmetic based address data mapping processes on integer-encoded business dimensions
US6546395B1 (en) * 1999-08-30 2003-04-08 International Business Machines Corporation Multi-dimensional restructure performance by selecting a technique to modify a relational database based on a type of restructure
US6542895B1 (en) * 1999-08-30 2003-04-01 International Business Machines Corporation Multi-dimensional restructure performance when adding or removing dimensions and dimensions members
US6895581B1 (en) * 2000-03-30 2005-05-17 Microsoft Corporation Replaceable classes and virtual constructors for object-oriented programming languages
WO2001077912A2 (en) * 2000-03-31 2001-10-18 Mdsi Mobile Data Solutions Inc. Configurable scheduling system
US6516322B1 (en) * 2000-04-28 2003-02-04 Microsoft Corporation XML-based representation of mobile process calculi
US6505189B1 (en) * 2000-06-15 2003-01-07 Ncr Corporation Aggregate join index for relational databases
US6735587B2 (en) * 2000-07-28 2004-05-11 International Business Machines Corporation Maintaining pre-computed aggregate views incrementally in the presence of non-minimal changes
US6603839B1 (en) * 2000-09-13 2003-08-05 International Business Machines Corporation Automatic transfer of electronic directory entries from directory assistance service to a directory within an electronic communication device
EP1197876A3 (en) * 2000-10-13 2003-04-16 Miosoft Corporation Persistent data storage techniques
WO2002042952A1 (en) * 2000-11-27 2002-05-30 Commonwealth Bank Of Australia Aggregation service
US6633884B2 (en) * 2001-04-03 2003-10-14 Bmc Software, Inc. System and method for analyzing a database for on-line reorganization
US20030005087A1 (en) * 2001-05-24 2003-01-02 Microsoft Corporation Server side sampling of databases
US6728709B1 (en) * 2001-06-22 2004-04-27 Unisys Corporation Locking partitioned database tables
US7024401B2 (en) * 2001-07-02 2006-04-04 International Business Machines Corporation Partition boundary determination using random sampling on very large databases
US20030061132A1 (en) * 2001-09-26 2003-03-27 Yu, Mason K. System and method for categorizing, aggregating and analyzing payment transactions data
US6792429B2 (en) 2001-12-19 2004-09-14 Hewlett-Packard Development Company, L.P. Method for fault tolerant modification of data representation in a large database
US7969306B2 (en) * 2002-01-11 2011-06-28 Sap Aktiengesellschaft Context-aware and real-time item tracking system architecture and scenarios
US7171427B2 (en) * 2002-04-26 2007-01-30 Oracle International Corporation Methods of navigating a cube that is implemented as a relational object
US20030204421A1 (en) * 2002-04-29 2003-10-30 Value Benefits Insurance Agency, Inc. Integrated system and method for insurance products
US7548935B2 (en) * 2002-05-09 2009-06-16 Robert Pecherer Method of recursive objects for representing hierarchies in relational database systems
US7571187B2 (en) * 2002-05-31 2009-08-04 Microsoft Corporation Support for real-time queries concerning current state, data and history of a process
US7155429B2 (en) * 2002-07-09 2006-12-26 Bridgelogix Corporation Method, apparatus and article of manufacture to aggregate automated transaction procession
US7730077B2 (en) * 2002-09-18 2010-06-01 Netezza Corporation Intelligent storage device controller
US6768995B2 (en) * 2002-09-30 2004-07-27 Adaytum, Inc. Real-time aggregation of data within an enterprise planning environment
WO2004036461A2 (en) * 2002-10-14 2004-04-29 Battelle Memorial Institute Information reservoir
US7146356B2 (en) * 2003-03-21 2006-12-05 International Business Machines Corporation Real-time aggregation of unstructured data into structured data for SQL processing by a relational database engine
US7089266B2 (en) * 2003-06-02 2006-08-08 The Board Of Trustees Of The Leland Stanford Jr. University Computer systems and methods for the query and visualization of multidimensional databases
US7152778B2 (en) * 2003-06-23 2006-12-26 Bitstock Collecting and valuating used items for sale
WO2005029275A2 (en) * 2003-09-19 2005-03-31 Thomson Global Resources Ag Leveraging informational assets across multiple business units
US8315972B2 (en) * 2003-09-26 2012-11-20 Microsoft Corporation Method for maintaining databases information about multiple instances of an activity generating, updating virtual OLAP cube based on modified star-schema
US7334002B2 (en) * 2004-02-27 2008-02-19 Microsoft Corporation System and method for recovery units in databases
EP1728138A1 (en) * 2004-03-16 2006-12-06 Grid Analytics Llc System and method for aggregation and analysis of information from multiple disparate sources while assuring source and record anonymity using an exchange hub

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6496909B1 (en) * 1999-04-06 2002-12-17 Silicon Graphics, Inc. Method for managing concurrent access to virtual memory data structures
US20030149702A1 (en) * 2002-02-05 2003-08-07 Compaq Information Technologies Group, L.P. Operational data store

Also Published As

Publication number Publication date
KR20050030531A (ko) 2005-03-30
ATE521944T1 (de) 2011-09-15
JP2005108186A (ja) 2005-04-21
EP1519283A2 (en) 2005-03-30
US7149736B2 (en) 2006-12-12
EP1519283A3 (en) 2006-05-10
US20050071320A1 (en) 2005-03-31
EP1519283B1 (en) 2011-08-24
CN1601541A (zh) 2005-03-30
JP4828102B2 (ja) 2011-11-30
EP2306381A1 (en) 2011-04-06

Similar Documents

Publication Publication Date Title
CN1601541B (zh) 用于自维护的实时数据聚集的方法和数据处理装置
JP5209001B2 (ja) アクティビティの複数のインスタンスに関する情報を維持する方法
US9466063B2 (en) Cluster processing of an aggregated dataset
US6029174A (en) Apparatus and system for an adaptive data management architecture
US7949694B2 (en) Management of contract data
KR101636594B1 (ko) 데이터 베이스 내 대용량 업데이트를 실시간으로 집적하는 방법
US20100235334A1 (en) Time in databases and applications of databases
EP1131767A1 (en) Method and apparatus for data management using an event transition network
WO2003104920A2 (en) Information distribution process and method
CN103177063A (zh) 用于时间数据聚合的时间滑动操作器
US20050166091A1 (en) Transaction processing
TW520476B (en) System and method for retrieving data from a database using a data management system
US20060129594A1 (en) Computer-implemented method for management of electronic data
US7571171B1 (en) Smart trigger for use in processing business transactions
CN111598507A (zh) 一种基于预定库存时生成库存信息的方法
JPH06149848A (ja) 製品在庫の自動引当方法
EP0992143B1 (en) Intelligent messaging
KR102479928B1 (ko) 퇴직연금관리시스템 및 그 방법
WO2000054200A2 (en) Methods and systems for managing financial accounts

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
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150428

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150428

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20111130

Termination date: 20190714

CF01 Termination of patent right due to non-payment of annual fee