US 11,874,794 B2
Entity snapshots partitioning and combining
Sergey Troshin, Santa Clara, CA (US); Sachin Bhatkar, Sunnyvale, CA (US); Sunil Kumar Kunisetty, Fremont, CA (US); and Shivakumar Subramanian Govindarajapuram, Dublin, CA (US)
Assigned to Oracle International Corporation, Redwood Shores, CA (US)
Filed by Oracle International Corporation, Redwood Shores, CA (US)
Filed on Apr. 30, 2019, as Appl. No. 16/399,256.
Claims priority of provisional application 62/748,354, filed on Oct. 19, 2018.
Prior Publication US 2020/0125531 A1, Apr. 23, 2020
Int. Cl. G06F 16/11 (2019.01); G06F 16/9035 (2019.01); G06F 16/9038 (2019.01); G06F 16/2458 (2019.01)
CPC G06F 16/128 (2019.01) [G06F 16/9035 (2019.01); G06F 16/9038 (2019.01)] 21 Claims
OG exemplary drawing
 
1. One or more non-transitory machine-readable media storing instructions which, when executed by one or more processors, cause:
storing, within a database, a plurality of entity properties for an entity in a plurality of snapshots including a first snapshot of a first partial state of the entity and a second snapshot of a second partial state of the entity; wherein the first snapshot includes values for a first subset of entity properties of the plurality of entity properties, and a first timestamp identifying a first point in time at which the values included in the first snapshot represent the first partial state of the entity; wherein the second snapshot includes values for a second subset of entity properties of the plurality of entity properties, and a second timestamp identifying a second point in time at which the values included in the second snapshot represent the second partial state of the entity; wherein the first subset of entity properties is not the same as the second subset of entity properties, and the first timestamp and the second timestamp represent different points in time;
receiving a database query including a statement referencing a third subset of entity properties as of a third point in time, wherein the third subset of entity properties is a partial subset of entity properties that does not include at least one entity property in the plurality of entity properties, wherein, when the database query is received, there is no existing snapshot in the plurality of snapshots in the database that comprises values for all of the third subset of entity properties as of the third point in time;
responsive to receiving the database query, identifying a subset of the plurality of snapshots stored in the database including at least the first snapshot and the second snapshot based on the referenced values for the third subset of entity properties as of the third point in time, wherein the subset of the plurality of snapshots are selected from a candidate set of partial snapshots stored in the database based on the statement included in the database query and timestamps associated with the partial snapshots;
creating, in the database, a third partial snapshot using only a subset of the plurality of snapshots that, in combination, comprise values for all of the third subset of entity properties as of the third point in time, wherein the third partial snapshot is not a complete snapshot of the entity at the third point in time and does not include a value of at least one entity property in the plurality of entity properties, wherein creating the third partial snapshot comprises creating a new row in a database table, for reuse in later computation, that is accessible to a snapshot manager using a table name for the database table, wherein the new row stores the third subset of entity properties and does not include all property values for the entity;
executing the database query using the third partial snapshot;
receiving a second database query including a statement referencing at least one of the third subset of properties and at least one other property not included in the third partial snapshot;
responsive to receiving the second database query, determining that the third partial snapshot is available within the database for reuse and, in response, creating a fourth snapshot by combining the third partial snapshot with at least one other snapshot from the plurality of snapshots; and
executing the second database query using the fourth snapshot.