IP Library › Granted Patent US 11,068,488
Granted Patent B2
US 11,068,488 · App. 16/158,057 · Granted Jul 20, 2021

Efficient time based correlation of data streams

Inventors: Joshith Rayaroth Koderi (San Jose, CA); Manickavasagan Jayaraman (Santa Clara, CA); Ateet Kumar K. Shetty (Milpitas, CA)
Assignee: Cisco Technology, Inc.
G06F16/24568G06F16/2255G06F16/24554
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 11,068,488
App. No.
16/158,057
Granted
Jul 20, 2021
Kind
B2
Abstract

Techniques for efficient data correlation are provided. A first data partition is received, and a first hash table of a plurality of hash tables is selected based on a timestamp associated with the first data partition. Additionally, a first hash bucket in the first hash table is identified based on the first data partition. It is determined that the first hash bucket includes a second data partition. Upon determining that the first hash bucket satisfies a predefined criterion, the second data partition is removed from the first hash bucket, and the first and second data partitions are associated.

Claims (76)

1. A method comprising:

receiving a first data record of a plurality of data records in a data stream;

selecting a first element in a ring buffer based on a timestamp of the first data record, wherein the ring buffer comprises a plurality of elements, each corresponding to a respective window of time;

identifying a first hash table associated with the first element in the ring buffer;

generating a first hash value based on the first data record; and

upon determining that a second data record is already associated with the first hash value in the first hash table:

removing the second data record from the first hash table;

linking the first and second data records; and

transmitting the linked first and second data records to a downstream operator.

2. The method of claim 1 , the method further comprising:

receiving a third data record; and

upon determining that a timestamp associated with the third data record is newer than a predefined threshold:

selecting a second element in the ring buffer, wherein the second element corresponds to an oldest window of time of the respective windows of time;

identifying a second hash table associated with the second element; and

discarding the second hash table.

3. The method of claim 1 , wherein removing the second data record from the first hash table, linking the first and second data records, and transmitting the linked first and second data records to the downstream operator are performed upon further determining that a predefined criterion is satisfied.

4. The method of claim 3 , wherein determining that the predefined criterion is satisfied comprises determining that a number of data records associated with the first hash value in the first hash table exceeds a predefined threshold.

5. The method of claim 1 , the method further comprising:

receiving a third data record;

generating a second hash value, based on the third data record;

determining, based on the first hash value, a number of data records associated with the second hash value in the first hash table does not exceed a predefined threshold; and

inserting the third data record into the first hash table.

6. The method of claim 1 , the method further comprising:

receiving a third data record; and

upon determining that a timestamp associated with the third data record is older than a predefined threshold, discarding the third data record.

7. A computer program product comprising:

a computer-readable storage medium having computer-readable program code embodied therewith, the computer-readable program code executable by one or more computer processors to perform an operation comprising:

receiving a first data partition;

selecting a first hash table of a plurality of hash tables based on a timestamp associated with the first data partition;

identifying a first hash bucket in the first hash table based on the first data partition;

determining that the first hash bucket includes a second data partition; and

upon determining that the first hash bucket satisfies a predefined criterion based on determining that a threshold number of data partitions are stored in the first hash bucket:

removing the second data partition from the first hash bucket; and

associating the first and second data partitions.

8. The computer program product of claim 7 , the operation further comprising transmitting the first and second data partitions to one or more data sinks.

9. The computer program product of claim 7 , wherein receiving a first data partition comprises:

receiving a data stream, wherein the data stream includes a plurality of logical units of data; and

portioning the data stream into a plurality of data partitions, based on the plurality of logical units of data.

10. The computer program product of claim 7 , wherein selecting the first hash table of the plurality of hash tables comprises identifying a first element in a ring buffer containing a plurality of elements, wherein each of the plurality of elements is associated with a respective hash table of the plurality of hash tables.

11. The computer program product of claim 10 , wherein each respective element of the plurality of elements is associated with a respective window of time.

12. The computer program product of claim 11 , the operation further comprising:

receiving a third data partition; and

upon determining that a timestamp associated with the third data partition is newer than a predefined threshold:

selecting a second hash table of the plurality of hash tables, wherein the second hash table is associated with a second data element, wherein the second data element is associated with an oldest window of time of the respective windows of time; and

discarding the second hash table.

13. The computer program product of claim 7 , wherein identifying the first hash bucket in the first hash table comprises:

generating a hash key based on the first data partition, according to a predefined configuration;

generating a hash value based on the hash key; and

identifying the first hash bucket based on the generated hash value.

14. The computer program product of claim 7 , the operation further comprising:

receiving a third data partition;

identifying a second hash bucket in the first hash table based on the third data partition; and

upon determining that the second hash bucket does not satisfy the predefined criterion, inserting the third data partition into the second hash bucket.

15. The computer program product of claim 7 , the operation further comprising:

receiving a third data partition; and

upon determining that a timestamp associated with the third data partition is older than a predefined threshold, discarding the third data partition.

16. A system comprising:

one or more physical computer processors; and

a memory containing a program which when executed by the one or more computer processors performs an operation, the operation comprising:

receiving a first data partition;

selecting a first hash table of a plurality of hash tables based on a timestamp associated with the first data partition;

identifying a first hash bucket in the first hash table based on the first data partition; and

upon determining that the first hash bucket does not satisfy a predefined criterion, inserting the first data partition into the first hash bucket.

17. The system of claim 16 , wherein selecting the first hash table of the plurality of hash tables comprises identifying a first element in a ring buffer containing a plurality of elements, wherein each of the plurality of elements is associated with a respective hash table of the plurality of hash tables, and wherein each respective element of the plurality of elements is associated with a respective window of time.

18. The system of claim 17 , the operation further comprising:

receiving a second data partition; and

upon determining that a timestamp associated with the second data partition is newer than a predefined threshold:

selecting a second hash table of the plurality of hash tables, wherein the second hash table is associated with a second data element, wherein the second data element is associated with an oldest window of time of the respective windows of time; and

discarding the second hash table.

19. The system of claim 16 , the operation further comprising:

receiving a second data partition;

identifying a second hash bucket in the first hash table based on the second data partition;

determining that the second hash bucket includes a third data partition; and

upon determining that the second hash bucket satisfies the predefined criterion:

removing the third data partition from the second hash bucket; and

associating the second and third data partitions.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 11, 2018
From: RAYAROTH KODERI, JOSHITH; JAYARAMAN, MANICKAVASAGAN; SHETTY, ATEET KUMAR K.
To: CISCO TECHNOLOGY, INC.
Reel/Frame 047139/0209 →
Continuity (2)
Provisional Application 62694403 · Jul 5, 2018
Related Publication 20200012737A1 · Jan 9, 2020
Cited By (1)
US 12,640,929