Partitioned batch processing for a usage analysis system
First Claim
1. A system, comprising:
- one or more memory or storage devices to implement a data store that stores an application usage table comprising a plurality of records, each record corresponding to a particular one of a plurality of applications and including one or more aggregated usage metrics for the respective application;
one or more computing devices, comprising one or more hardware processors and associated memory, configured to implement one or more session event nodes configured to;
generate updates for the records in the application usage table according to session events received from a plurality of devices of a plurality of users, each session event indicating new usage data for a respective application instance on a respective device, and each update including an application identifier indicating one of the plurality of applications and increments for the one or more aggregated usage metrics of the respective application, wherein, for at least one of the plurality of applications, the session events received from two or more different devices of two or more different users indicate new usage data for two or more different application instances of the same application, and wherein the updates are generated as the session events are received; and
partition the updates into a plurality of partitions according to the application identifier;
a plurality of computing devices, each comprising one or more hardware processors and associated memory, configured to implement a plurality of application usage update nodes distinct from the one or more session event nodes, each application usage update node associated with a different one of the plurality of partitions, and responsible for updating a different one of the records in the application usage table according to the updates from its associated partition, and each application usage update node configured to;
obtain the updates from the respective different one of the plurality of partitions; and
apply the updates to the respective different one of the plurality of records in the application usage table corresponding to the respective particular one of the plurality of applications;
wherein the updates obtained and applied by at least one of the plurality of application usage update nodes to the respective different one of the plurality of records corresponds to session events received, by one or more of the session event nodes, from two or more different devices of two or more different users.
1 Assignment
0 Petitions
Accused Products
Abstract
A usage analysis service that obtains session events from application instances, updates usage metrics for the application instances according to the session events, and stores or updates aggregated usage metrics for each application according to the session events. Updates for the instance usage metrics may be partitioned according to instance identifier, collected in batches, and applied to respective instance records in an instances table by one or more instance update nodes. Updates for the aggregated usage metrics may be partitioned according to application identifier, collected in batches, processed to combine multiple updates, and applied to respective aggregate records in an application usage table by multiple application usage update nodes. The system may provide an interface that retrieves aggregated usage metrics from the application usage table and presents application usage information for the applications to consumers.
20 Citations
20 Claims
-
1. A system, comprising:
-
one or more memory or storage devices to implement a data store that stores an application usage table comprising a plurality of records, each record corresponding to a particular one of a plurality of applications and including one or more aggregated usage metrics for the respective application; one or more computing devices, comprising one or more hardware processors and associated memory, configured to implement one or more session event nodes configured to; generate updates for the records in the application usage table according to session events received from a plurality of devices of a plurality of users, each session event indicating new usage data for a respective application instance on a respective device, and each update including an application identifier indicating one of the plurality of applications and increments for the one or more aggregated usage metrics of the respective application, wherein, for at least one of the plurality of applications, the session events received from two or more different devices of two or more different users indicate new usage data for two or more different application instances of the same application, and wherein the updates are generated as the session events are received; and partition the updates into a plurality of partitions according to the application identifier; a plurality of computing devices, each comprising one or more hardware processors and associated memory, configured to implement a plurality of application usage update nodes distinct from the one or more session event nodes, each application usage update node associated with a different one of the plurality of partitions, and responsible for updating a different one of the records in the application usage table according to the updates from its associated partition, and each application usage update node configured to; obtain the updates from the respective different one of the plurality of partitions; and apply the updates to the respective different one of the plurality of records in the application usage table corresponding to the respective particular one of the plurality of applications; wherein the updates obtained and applied by at least one of the plurality of application usage update nodes to the respective different one of the plurality of records corresponds to session events received, by one or more of the session event nodes, from two or more different devices of two or more different users. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A method, comprising:
-
generating, by one or more session event nodes implemented on one or more computing devices, updates for a plurality of application usage records according to session events received from a plurality of devices of a plurality of users, each session event indicating new usage data for a respective application instance on a respective device of a respective user, and each update including an application identifier indicating one of a plurality of applications and increments for one or more aggregated usage metrics of the respective application, wherein, for at least one of the plurality of applications, the one or more session event nodes receives a plurality of session events from two or more different devices of two or more different users indicating new usage data for two or more different application instances of the same application, and wherein the updates are generated as the session events are received; partitioning, by the one or more session event nodes, the updates into a plurality of partitions according to the application identifier; and applying, by a plurality of application usage update nodes distinct from the one or more session event nodes, batches of the updates from the partitions to respective ones of the plurality of application usage records, each application usage record corresponding to a particular one of the plurality of applications and including one or more aggregated usage metrics for the respective application, wherein each application usage update node is associated with a different partition of the plurality of partitions, and applies updates from the different partition of the plurality of partitions to a different one of the plurality of application usage records; wherein the updates obtained and applied by at least one of the plurality of application usage update nodes to the respective different one of the plurality of application usage records corresponds to session events received, by one or more of the session event nodes, from two or more different devices of two or more different users. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16)
-
-
17. A non-transitory computer-readable storage medium storing program instructions that when executed on one or more computers cause the one or more computers to implement a usage analysis system comprising:
-
one or more session event nodes configured to; generate updates for a plurality of records in an application usage table according to session events received from a plurality of devices of a plurality of users, each session event indicating new usage data for a respective application instance on a respective device of a respective user, and each update including an application identifier indicating one of a plurality of applications and increments for one or more aggregated usage metrics of the respective application, wherein, for at least one of the plurality of applications, the session events from two or more different devices of two or more different users indicate new usage data for two or more different application instances of the same application, and wherein the updates are generated as the session events are received; and partition the updates into a plurality of partitions according to the application identifier; a plurality of application usage update nodes distinct from the one or more session event nodes configured to; obtain the updates from respective ones of the plurality of partitions; and apply the updates to respective ones of the plurality of records in the application usage table, each record in the application usage table corresponding to a particular one of the plurality of applications and including one or more aggregated usage metrics for the respective application, wherein each application usage update node is associated with a different partition of the plurality of partitions, and applies updates from the different partition to a different record of the plurality of records; wherein the updates obtained and applied by at least one of the plurality of application usage update nodes to the respective different one of the plurality of records corresponds to session events received, by one or more of the session event nodes, from two or more different devices of two or more different users. - View Dependent Claims (18, 19, 20)
-
Specification