IP Library Granted Patent US 12,417,228
Granted Patent B2
US 12,417,228 · App. 18/408,786 · Granted Sep 16, 2025

Techniques for in-memory stitching

Inventors: Eric Hsiao (San Mateo, CA); Jeffrey Toillion (Scottsdale, AZ); Amy Yang (Beijing, CN); Bingqing Shang (Beijing, CN); Dennis M. Chin (Stow, OH); Robert Carina (Pottersville, NJ); Simone Geib (Redwood City, CA); Santosh Kumar (Bangalore, IN)
Assignee: Oracle International Corporation
G06F16/24568G06F9/546G06F16/168G06F16/1734G06F16/2322G06F16/2358G06F16/2456G06F16/248G06F21/16G06Q10/06316
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 12,417,228
App. No.
18/408,786
Granted
Sep 16, 2025
Kind
B2
Abstract

Event processing techniques for updating a database in real time based on events in a continuous event stream are disclosed. The techniques can update the database to incorporate information from thousands of received events per second. The events can include metrics measuring milestones for an organizational process defined by a user. Moreover, multiple streams can include metrics from many tenants concurrently. The techniques include receiving a plurality of events corresponding to a time interval and identifying that two events share a value of a key attribute. The techniques then include causing to be generated an in-memory combined database record comprising a combination of first and second attribute information from the two events and the value of the key attribute. In response to a trigger signal, the techniques include transmitting a single message, based at least in part on the combined database record, to update the database.

Claims (33)

1. A method, comprising:

loading, by a computing device, a plurality of events corresponding to a time interval to an in-memory staging area implemented in a volatile memory of the computing device;

identifying, by the computing device, that a first event and a second event of the plurality of events in the in-memory staging area correspond to the time interval and share a value of a key attribute;

causing, by the computing device, a combined database record to be generated in the volatile memory of the computing device, the combined database record comprising a combination of at least one of a) attribute information from the first event or the second event, or b) the value of the key attribute; and

transmitting, to a database manager, a single message to update a database, the single message based at least in part on the combined database record, the single message to update the database being further based at least in part on a second combined database record, and the second combined database record comprising attribute information from other events corresponding to the time interval and sharing a second value of the key attribute.

2. The method of claim 1 , further comprising receiving a trigger signal, and wherein the transmitting is performed at least in response to receiving the trigger signal.

3. The method of claim 1 , wherein the single message comprises one or more of a database update statement, a database create statement, a database delete statement, or a database insert statement.

4. The method of claim 1 , wherein the single message comprises a Java Database Connectivity (JDBC) statement or a Hive statement.

5. The method of claim 1 , wherein causing the combined database record to be generated comprises applying a User Defined Aggregation Function (UDAF) or a custom function.

6. The method of claim 1 , wherein causing the combined database record to be generated comprises binding first attribute information from the first event and second attribute information together based at least in part on the first event and the second event sharing the value of the key attribute.

7. The method of claim 1 , wherein the plurality of events correspond to metrics of one or more workflows, wherein the one or more workflows are configured via a configuration user interface.

8. The method of claim 1 , further comprising:

generating a dashboard user interface comprising graphical controls configured to display statistics based at least in part on the updated database; and

providing the dashboard user interface to a client device for display.

9. A computing system, comprising:

one or more processors; and

a first memory configured to store computer-executable instructions that, when executed by the one or more processors, cause the one or more processors to:

loading, by a computing device, a plurality of events corresponding to a time interval to an in-memory staging area implemented in a volatile memory of the computing device;

identifying, by the computing device, that a first event and a second event of the plurality of events in the in-memory staging area correspond to the time interval and share a value of a key attribute;

causing, by the computing device, a combined database record to be generated in the volatile memory of the computing device, the combined database record comprising a combination of at least one of a) attribute information from the first event or the second event, or b) the value of the key attribute; and

transmitting, to a database manager, a single message to update a database, the single message based at least in part on the combined database record, the single message to update the database being further based at least in part on a second combined database record, and the second combined database record comprising attribute information from other events corresponding to the time interval and sharing a second value of the key attribute.

10. The system of claim 9 , wherein the second memory of the computing device comprises at least one of a volatile memory or a non-volatile memory.

11. The system of claim 9 , wherein causing the combined database record to be generated comprises applying a User Defined Aggregation Function (UDAF) or a custom function.

12. The system of claim 9 , wherein causing the combined database record to be generated comprises binding first attribute information from the first event and second attribute information together based at least in part on the first event and the second event sharing the value of the key attribute.

13. A non-transitory computer-readable medium storing computer-executable instructions that, when executed by one or more processors of a computing device, cause the one or more processors to perform operations comprising:

loading, by the computing device, a plurality of events corresponding to a time interval to an in-memory staging area implemented in a volatile memory of the computing device;

identifying, by the computing device, that a first event and a second event of the plurality of events in the in-memory staging area correspond to the time interval and share a value of a key attribute;

causing, by the computing device, a combined database record to be generated in the volatile memory of the computing device, the combined database record comprising a combination of at least one of a) attribute information from the first event or the second event, or b) the value of the key attribute; and

transmitting, to a database manager, a single message to update a database, the single message based at least in part on the combined database record, the single message to update the database being further based at least in part on a second combined database record, and the second combined database record comprising attribute information from other events corresponding to the time interval and sharing a second value of the key attribute.

14. The non-transitory computer-readable medium of claim 13 , wherein the single message comprises one or more of a database update statement, a database create statement, a database delete statement, or a database insert statement.

15. The non-transitory computer-readable medium of claim 13 , wherein the single message comprises a Java Database Connectivity (JDBC) statement or a Hive statement.

16. The non-transitory computer-readable medium of claim 13 , wherein causing the combined database record to be generated comprises applying a User Defined Aggregation Function (UDAF) or a custom function.

17. The non-transitory computer-readable medium of claim 13 , wherein causing the combined database record to be generated comprises binding first attribute information from the first event and second attribute information together based at least in part on the first event and the second event sharing the value of the key attribute.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 18, 2024
From: HSIAO, ERIC; TOILLION, JEFFREY; YANG, AMY; SHANG, BINGQING; CHIN, DENNIS M.; CARINA, ROBERT; GEIB, SIMONE; KUMAR, SANTOSH
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 066164/0828 →
Continuity (5)
Continuation 17834827 · Jun 7, 2022
Continuation 16896891 · Jun 9, 2020
Provisional Application 62914938 · Oct 14, 2019
Provisional Application 62914939 · Oct 14, 2019
Related Publication 20240202199A1 · Jun 20, 2024
References Cited (42)
US 9639662B2 · Sethumadhavan et al. · 2017 [cited by applicant]
US 10764315B1 · Carroll · 2020 [cited by applicant]
US 11106658B2 · Cseri et al. · 2021 [cited by applicant]
US 11308078B2 · Cseri et al. · 2022 [cited by applicant]
US 11386094B2 · Hsiao et al. · 2022 [cited by applicant]
US 11687863B2 · Granholm et al. · 2023 [cited by applicant]
US 11715106B2 · Allbright · 2023 [cited by examiner]
US 11741415B2 · Granholm et al. · 2023 [cited by applicant]
US 11899718B2 · Nair · 2024 [cited by examiner]
US 11907228B2 · Hsiao · 2024 [cited by examiner]
US 20030229900A1 · Reisman · 2003 [cited by applicant]
US 20120243028A1 · Dumitrescu et al. · 2012 [cited by applicant]
US 20140095483A1 · Toillion et al. · 2014 [cited by applicant]
US 20140108382A1 · Garg et al. · 2014 [cited by applicant]
US 20150135206A1 · Reisman · 2015 [cited by applicant]
US 20150135214A1 · Reisman · 2015 [cited by applicant]
US 20150317399A1 · Akselrod et al. · 2015 [cited by applicant]
US 20150339339A1 · Mastrodonato et al. · 2015 [cited by applicant]
US 20160170838A1 · Erickson et al. · 2016 [cited by applicant]
US 20160364405A1 · Konik et al. · 2016 [cited by applicant]
US 20170236067A1 · Tjiong · 2017 [cited by applicant]
US 20170270529A1 · Ebel · 2017 [cited by examiner]
US 20170366440A1 · Sheleheda et al. · 2017 [cited by applicant]
US 20180136987A1 · He et al. · 2018 [cited by applicant]
US 20180239796A1 · Song et al. · 2018 [cited by applicant]
US 20180268167A1 · Alberton et al. · 2018 [cited by applicant]
US 20190294720A1 · Beringer et al. · 2019 [cited by applicant]
US 20200012601A1 · Jeong et al. · 2020 [cited by applicant]
US 20210109935A1 · Hsiao et al. · 2021 [cited by applicant]
US 20210110328A1 · Hsiao et al. · 2021 [cited by applicant]
US 20210357391A1 · Cseri et al. · 2021 [cited by applicant]
US 20220300515A1 · Hsiao et al. · 2022 [cited by applicant]
Applying Update Streams in a Soft Real Time Database System (Year: 1995). [cited by examiner]
U.S. Appl. No. 16/896,891 , “Non-Final Office Action”, Nov. 24, 2021, 6 pages. [cited by applicant]
U.S. Appl. No. 16/896,891 , “Notice of Allowance”, May 10, 2022, 14 pages. [cited by applicant]
U.S. Appl. No. 16/896,990 , “Final Office Action”, May 9, 2023, 22 pages. [cited by applicant]
U.S. Appl. No. 16/896,990 , “Non-Final Office Action”, Oct. 4, 2022, 20 pages. [cited by applicant]
U.S. Appl. No. 16/896,990 , “Non-Final Office Action”, Sep. 22, 2023, 23 pages. [cited by applicant]
U.S. Appl. No. 17/834,827 , “Non-Final Office Action”, Mar. 27, 2023, 10 pages. [cited by applicant]
U.S. Appl. No. 17/834,827 , “Notice of Allowance”, Oct. 10, 2023, 8 pages. [cited by applicant]
U.S. Appl. No. 16/896,990, Final Office Action mailed on Apr. 5, 2024, 24 pages. [cited by applicant]
U.S. Appl. No. 16/896,990, Non-Final Office Action mailed on Aug. 30, 2024, 26 pages. [cited by applicant]