IP Library Granted Patent US 9,069,681
Granted Patent B1
US 9,069,681 · App. 14/038,060 · Granted Jun 30, 2015

Real-time log joining on a continuous stream of events that are approximately ordered

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,069,681
App. No.
14/038,060
Granted
Jun 30, 2015
Kind
B1
Abstract

Aspects of the disclosure relate generally to a distributed event joining system for joining primary and secondary events based on a common key. In one example, a continuous stream of primary events may be stored at a cache layer. Each primary event may be associated with a primary event key which may be used to generate an index map for the cache layer. After a time T, the stream of primary events may be sent to long term memory. The system may also receive secondary events, each associated with a primary key. The primary key may be used to identify a primary event in the cache layer. If the primary event is not available in the cache layer, the long term memory may be searched for the primary key. Paired events may then be submitted to a distributed joined event storage system.

Claims (69)

1. A method comprising:

receiving a continuous stream of primary events corresponding to search queries submitted by one or more users, each received primary event being associated with a corresponding primary event key identifying a particular search query;

storing the received primary events in a short term memory;

generating, by a processor, an index map that tracks primary event keys of any received primary events currently stored in the short term memory;

after a time T has passed, storing the received primary events in a long term memory;

receiving a secondary event corresponding to an advertisement selected by one of the one or more users, the secondary event being associated with a particular primary key; and

using the index map to determine whether the particular primary event key is included in the short term memory.

2. The method of claim 1 , further comprising:

when the particular primary event key is included in the short term memory, joining the secondary event with the primary event that is associated with the primary event key in the short term memory; and

sending the joined primary event and secondary event to a joined event storage system.

3. The method of claim 1 , further comprising when the particular primary event key is not included in the short term memory, determining whether the particular primary event key is included in the long term memory.

4. The method of claim 3 , further comprising:

when the particular primary event key is included in the long term memory, joining the secondary event with the primary event that is associated with the primary event key in the short term memory; and

sending the joined primary event and secondary event to a joined event storage system.

5. The method of claim 1 , further comprising receiving a stream of secondary events such that the secondary event associated with the particular primary key is received as part of the stream of secondary events.

6. The method of claim 1 , wherein using the index map to determine whether the particular primary event key is included in the short term memory includes:

determining a maximum skew value for the index map;

determining an offset value for the particular primary event key based on a value of the primary event key and the maximum skew value; and

using the offset value to determine whether the particular primary event key is included in the short term memory.

7. The method of claim 1 , using the index map to determine whether the particular primary event key is included in the short term memory includes:

determining a maximum skew value for the index map;

seeking to an offset value returned by getting lower bound of a value of the primary event key minus the maximum skew value; and

using the offset value to determine whether the particular primary event key is included in the short term memory.

8. A system comprising:

a cache layer for storing a continuously received stream of primary events for a time T, each primary event of the continuously received stream of primary events corresponding to a search queries submitted by one or more users, each primary event of the continuously received stream of primary events having a corresponding primary event key identifying a particular search query;

a long term memory for storing the continuously received stream of primary events after a time T;

a processor configured to:

generate an index map that tracks primary event keys of the continuously received primary events currently stored in the short term memory;

receiving a secondary event corresponding to an advertisement selected by one of the one or more users, the secondary event being associated with a particular primary key; and

using the index map to determine whether the particular primary event key is included in the short term memory.

9. The system of claim 8 , wherein the processor is further configured to:

when the particular primary event key is included in the short term memory, join the secondary event with the primary event that is associated with the primary event key in the short term memory; and

send the joined primary event and secondary event to a joined event storage system.

10. The system of claim 8 , wherein the processor is further configured to, when the particular primary event key is not included in the short term memory, determine whether the particular primary event key is included in the long term memory.

11. The system of claim 10 , wherein the processor is further configured to:

when the particular primary event key is included in the long term memory, join the secondary event with the primary event that is associated with the primary event key in the long term memory; and

send the joined primary event and secondary event to a joined event storage system.

12. The system of claim 8 , wherein the processor is further configured to receive a stream of secondary events such that the secondary event associated with the particular primary key is received as part of the stream of secondary events.

13. The system of claim 8 , wherein the processor is further configured to use the index map to determine whether the particular primary event key is included in the short term memory by:

determining a maximum skew value for the index map;

determining an offset value for the particular primary event key based on a value of the primary event key and the maximum skew value; and

using the offset value to determine whether the particular primary event key is included in the short term memory.

14. The system of claim 8 , wherein the processor is further configured to use the index map to determine whether the particular primary event key is included in the short term memory by:

determining a maximum skew value for the index map;

seeking to an offset value returned by getting lower bound of a value of the primary event key minus the maximum skew value; and

using the offset value to determine whether the particular primary event key is included in the short term memory.

15. A non-transitory tangible computer-readable storage medium on which computer readable instructions of a program are stored, the instructions, when executed by a processor, cause the processor to perform a method, the method comprising method comprising:

receiving a continuous stream of primary events corresponding to search queries submitted by one or more users, each received primary event being associated with a corresponding primary event key identifying a particular search query;

storing the received primary events in a short term memory;

generating an index map that tracks primary event keys of any received primary events currently stored in the short term memory;

after a time T has passed, storing the received primary events in a long term memory;

receiving a secondary event corresponding to an advertisement selected by one of the one or more users, the secondary event being associated with a particular primary key; and

using the index map to determine whether the particular primary event key is included in the short term memory.

16. The medium of claim 15 , wherein the method further comprises

when the particular primary event key is included in the short term memory, joining the secondary event with the primary event that is associated with the primary event key in the short term memory; and

sending the joined primary event and secondary event to a joined event storage system.

17. The medium of claim 15 , wherein the method further comprises when the particular primary event key is not included in the short term memory, determining whether the particular primary event key is included in the long term memory.

18. The medium of claim 17 , wherein the method further comprises:

when the particular primary event key is included in the long term memory, joining the secondary event with the primary event that is associated with the primary event key in the short term memory; and

sending the joined primary event and secondary event to a joined event storage system.

19. The medium of claim 15 , wherein the method further comprises receiving a stream of secondary events such that the secondary event associated with the particular primary key is received as part of the stream of secondary events.

20. The medium of claim 15 , wherein the method further comprises using the index map to determine whether the particular primary event key is included in the short term memory by:

determining a maximum skew value for the index map;

determining an offset value for the particular primary event key based on a value of the primary event key and the maximum skew value; and

using the offset value to determine whether the particular primary event key is included in the short term memory.

21. The medium of claim 15 , wherein the method further comprises using the index map to determine whether the particular primary event key is included in the short term memory by:

determining a maximum skew value for the index map;

seeking to an offset value returned by getting lower bound of a value of the primary event key minus the maximum skew value;

using the offset value to determine whether the particular primary event key is included in the short term memory.

Assignments (2)
CHANGE OF NAME Recorded Oct 2, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044334/0466 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 14, 2013
From: QIU, TIANHAO; SINGH, MANPREET; JIANG, HAIFENG; GUPTA, ASHISH; DAS, SUMIT; BASKER, VENKATESH; ANANTHANARAYANAN, RAJAGOPAL
To: GOOGLE INC.
Reel/Frame 031475/0637 →