# US 11,907,228 B2 · Techniques for in-memory stitching

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,907,228 B2
- Document ID: US11907228B2
- Status: Granted
- Kind: B2
- Application number: 17/834,827
- Filed: 2022-06-07
- Published: 2022-09-22
- Granted: 2024-02-20
- Earliest claimed: 2019-10-14
- Assignees: Oracle International Corporation
- Applicants: Oracle International Corporation
- Inventors: Eric Hsiao; Jeffrey Toillion; Amy Yang; Bingqing Shang; Dennis M. Chin; Robert Carina; Simone Geib; Santosh Kumar
- Web page: https://patentgrep.com/patent/US11907228B2

## CPC

- G06F 16/24568: {Data stream processing; Continuous queries}
- G06F 9/54: Interprogram communication
- G06F 9/546: {Message passing systems or structures, e.g. queues}
- G06F 16/168: {Details of user interfaces specifically adapted to file systems, e.g. browsing and visualisation, 2d or 3d GUIs (query results presentation G06F16/156)}
- G06F 16/1734: {Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs}
- G06F 16/2322: {using timestamps}
- G06F 16/2358: {Change logging, detection, and notification (replication G06F16/27)}
- G06F 16/2456: {Join operations}
- G06F 16/2477: {Temporal data queries}
- G06F 16/248: Presentation of query results
- G06F 21/16: Program or content traceability, e.g. by watermarking
- G06F 21/6218: {to a system of files or objects, e.g. local or distributed file system or database}
- G06Q 10/06316: {Sequencing of tasks or work}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06Q: INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR

## 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

### Claim 1

A method, comprising:
loading, by a computing device, a plurality of events corresponding to a time interval to a staging area, the staging area implemented in a random access memory (RAM) of the computing device;
identifying, by the computing device, that a first event and a second event of the plurality of events in the 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 random access memory (RAM) of the computing device, the combined database record comprising a combination of at least:
attribute information from the first event or second event; or
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.

### Claim 2 (depends on 1)

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.

### Claim 3 (depends on 1)

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.

### Claim 4 (depends on 1)

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

### Claim 5 (depends on 1)

The method of claim 1, wherein the single message to update the database is further based at least in part on a second combined database record, 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.

### Claim 6 (depends on 1)

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.

### Claim 7 (depends on 1)

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.

### Claim 8 (depends on 1)

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.

### Claim 9 (depends on 1)

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.

### Claim 10

A system, comprising:
one or more processors; and
a memory configured to store computer-executable instructions that, when executed by the one or more processors, cause the one or more processors to:
load a plurality of events corresponding to a time interval to a staging area, the staging area implemented in a random access memory (RAM) of a computing device;
identify that a first event and a second event of the plurality of events correspond to the time interval and share a value of a key attribute;
cause to be generated a combined database record in the random access memory (RAM) of the computing device, the combined database record comprising a combination of at least:
attribute information from the first event or the second event; or
the value of the key attribute; and
transmit a single message to update a database, the single message based at least in part on the combined database record.

### Claim 11 (depends on 10)

The system of claim 10, 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.

### Claim 12 (depends on 10)

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

### Claim 13 (depends on 10)

The system of claim 10, wherein the single message to update the database is further based at least in part on a second combined database record, 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.

### Claim 14 (depends on 10)

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

### Claim 15 (depends on 10)

The system of claim 10, 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.

### Claim 16

A non-transitory computer-readable medium storing computer-executable instructions that, when executed by a processor, cause the processor to perform operations comprising:
loading a plurality of events corresponding to a time interval to a staging area, the staging area implemented in a random access memory (RAM) of a computing device;
identifying that a first event and a second event of the plurality of events correspond to the time interval and share a value of a key attribute;
causing to be generated a combined database record in the random access memory (RAM) of the computing device, the combined database record comprising a combination of at least:
attribute information from the first event or the second event; or
the value of the key attribute; and
transmitting a single message to update a database, the single message based at least in part on the combined database record.

### Claim 17 (depends on 16)

The non-transitory computer-readable medium of claim 16, 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.

### Claim 18 (depends on 16)

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

### Claim 19 (depends on 16)

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

### Claim 20 (depends on 16)

The non-transitory computer-readable medium of claim 16, 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.
