IP Library Granted Patent US 9,747,313
Granted Patent B2
US 9,747,313 · App. 13/720,469 · Granted Aug 29, 2017

Timeline index for managing temporal data

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,747,313
App. No.
13/720,469
Granted
Aug 29, 2017
Kind
B2
Abstract

Embodiments described herein generally relate to creating a timeline index for executing queries on temporal data. A computer-implemented method is described. The method includes creating a first list of tuples that are invalidated in a temporal table and sorting the first list of the invalidated tuples. The method can further include creating a second list of tuples that are activated in the temporal table and combining the first list and the second list into a third list that includes the activated tuples and the invalidated tuples, wherein the third list contains ROW_IDs of both the activated tuples and the invalidated tuples.

Claims (49)

1. A computer-implemented method, comprising:

creating an activation list that contains tuples that have been activated in a temporal table within a temporal database, wherein the temporal table stores multiple versions of data contained within a tuple, and wherein each tuple in the temporal table uniquely identifies data contained within the tuple at a given point in time;

creating an invalidation list that contains tuples that have been invalidated in the temporal table;

combining the activation list and the invalidation list into an events list that includes the activated tuples and the invalidated tuples, wherein the events list includes unique row identifiers of each of the activated tuples and the invalidated tuples;

sorting the events list;

creating a version map that maps a version of the temporal table, represented by a version identifier, to a position of a tuple in the events list, wherein each temporal table version signifies a particular time interval; and

creating an array of accumulated positions that represent positions in the events list corresponding to, for each temporal table version, an end position of an interval of activated and invalidated tuples for the version, wherein the position mapped to each version identifier in the version map is an accumulated position from the array of accumulated positions,

wherein the events list, the version map, and the array of accumulated positions are part of a timeline index for the temporal table.

2. The method of claim 1 , further comprising:

sorting the events list based on a non-NULL time attribute of each of the activated and invalidated tuples.

3. The method of claim 1 , wherein a bit vector is configured to identify whether a tuple was activated or invalidated in the events list.

4. The method of claim 1 , further comprising:

creating one or more checkpoints in the temporal table, wherein a checkpoint comprises:

a set of active tuples represented by a bit vector wherein an i-th bit indicates whether a tuple with a ROW_ID i is active.

5. The method of claim 1 , wherein the temporal database supports temporal aggregations from a list comprising one or more of SUM, COUNT, MINIMUM, MAXIMUM, AVERAGE, VARIANCE, STANDARD DEVIATION, and custom aggregation functions.

6. The method of claim 1 , wherein the temporal database supports a time-travel query and a temporal join query.

7. The method of claim 1 , wherein a tuple is invalidated by setting a time attribute of the tuple to a non-NULL value.

8. The method of claim 1 , wherein creating the array of accumulated positions further comprises:

grouping the positions in the events list by each version identifier of the temporal table to generate the array of accumulated positions.

9. The method of claim 1 , wherein each tuple in the temporal table is immutable.

10. The method of claim 1 , further comprising sorting the tuples of the temporal table in order of a time of activation of each tuple.

11. A system, comprising:

one or more processors; and

a memory, the memory storing instructions that, when executed by the one or more processors, cause the one or more processors to:

create an activation list that contains tuples that have been activated in a temporal table, wherein the temporal table stores multiple versions of data contained within a tuple, and wherein each tuple in the temporal table uniquely identifies data contained within the tuple at a given point in time;

create an invalidation list that contains tuples that have been invalidated in the temporal table;

combine the activation list and the invalidation list into an events list that includes the activated tuples and the invalidated tuples, wherein the events list includes unique row identifiers of each of the activated tuples and the invalidated tuples;

sort the events list;

create a version map that maps a version of the temporal table, represented by a version identifier, to a position of a tuple in the events list, wherein each temporal table version signifies a particular time interval; and

create an array of accumulated positions that represent positions in the events list corresponding to, for each temporal table version, an end position of an interval of activated and invalidated tuples for the version, wherein the position mapped to each version identifier in the version map is an accumulated position from the array of accumulated positions,

wherein the events list, the version map, and the array of accumulated positions are part of a timeline index for the temporal table.

12. The system of claim 11 , wherein the memory further stores instructions that cause the one or more processors to:

configure a bit vector to identify whether a tuple was activated or invalidated in the events list; and

create one or more checkpoints in the temporal table, wherein a checkpoint comprises a set of active tuples represented by a bit vector wherein an i-th bit indicates whether a tuple with a ROW_ID i is active.

13. The system of claim 11 , wherein the memory further stores instructions that cause the one or more processors to:

support temporal aggregations from a list comprising one or more of SUM, COUNT, MINIMUM, MAXIMUM, AVERAGE, VARIANCE, STANDARD DEVIATION, and custom aggregation functions.

14. A non-transitory computer-readable medium having instructions stored thereon, execution of which, by a computing device, causes the computing device to perform operations comprising:

creating an activation list that contains tuples that have been activated in a temporal table within a temporal database, wherein the temporal table stores multiple versions of data contained within a tuple, and wherein each tuple in the temporal table uniquely identifies data contained within the tuple at a given point in time;

creating an invalidation list that contains tuples that have been invalidated in the temporal table;

combining the activation list and the invalidation list into an events list that includes the activated tuples and the invalidated tuples, wherein the events list includes unique row identifiers of each of the activated tuples and the invalidated tuples;

sorting the events list;

creating a version map that maps a version of the temporal table, represented by a version identifier, to a position of a tuple in the events list, wherein each temporal table version signifies a particular time interval; and

creating an array of accumulated positions that represent positions in the events list corresponding to, for each temporal table version, an end position of an interval of activated and invalidated tuples for the version, wherein the position mapped to each version identifier in the version map is an accumulated position from the array of accumulated positions,

wherein the events list, the version map, and the array of accumulated positions are part of a timeline index for the temporal table.

15. The computer-readable medium of claim 14 , the operations further comprising:

configuring a bit vector to identify whether a tuple was activated or invalidated in the events list; and

creating one or more checkpoints in the temporal table, wherein a checkpoint comprises:

a set of active tuples represented by a bit vector wherein an i-th bit indicates whether a tuple with a ROW_ID i is active.

16. The computer-readable medium of claim 14 , wherein the temporal database supports temporal aggregations from a list comprising one or more of SUM, COUNT, MINIMUM, MAXIMUM, AVERAGE, VARIANCE, STANDARD DEVIATION, and custom aggregation functions.

Assignments (2)
CHANGE OF NAME Recorded Aug 26, 2014
From: SAP AG
To: SAP SE
Reel/Frame 033625/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 4, 2013
From: KAUFMANN, MARTIN; MAY, NORMAN; AMIRI MANJILI, AMIN; KOSSMANN, DONALD
To: SAP GLOBAL IP GROUP, SAP AG
Reel/Frame 029568/0333 →