Patent ID: 7149736

Claim:
A method for aggregating data from multiple records of a database in order to summarize information about multiple instances of an organizational activity, wherein each of the multiple database records corresponds to one of the multiple organizational activity instances, wherein data within each of the multiple database records reflects an attribute of the organizational activity instance corresponding to that record, and wherein the method is performed by a plurality of program threads in at least one computer, comprising: creating at least one aggregation table representing multiple partitions, each partition including a plurality of aggregation records, each aggregation record including an aggregation value representing an aggregation of values contained by fields of a distinct subset of the multiple database records; selecting a first of the multiple partitions upon insertion or update of a first of the multiple database records, wherein said selecting is initiated in response to a request by a first of the plurality of program threads to access one of the multiple partitions; updating the aggregation value in at least one of the aggregation records in the first partition, wherein the updating is performed by the first program thread as part of a first partition update transaction, and wherein the first partition update transaction is based on one or more values within the inserted or updated first database record; preventing other program threads from accessing the first partition until the first program thread no longer requires access to the first partition; selecting a second partition, while the first partition update transaction is being performed, wherein said selecting is initiated in response to a request by a second of the plurality of program threads to access one of the multiple partitions; updating the aggregation value in at least one of the aggregation records in the second partition, wherein the updating is performed by the second program thread as part of a second partition update transaction, wherein the second partition update transaction is based on one or more values within an inserted or updated second database record, and wherein the second partition update transaction is performed during performance of the first partition update transaction; and aggregating aggregation values from the multiple partitions and outputting said aggregated aggregation values as a part of a summary of the multiple organizational activity instances, and wherein each of the multiple database records includes a field having a value indicating the corresponding instance to be in one of several process states, and each partition includes time-sorted aggregation records, each time-sorted aggregation record containing an aggregation value for instances in one of the several process states during a time period associated with the time-sorted aggregation record.