Asynchronous Database Object Enrichment via Change Streams

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional database systems can only capture row-level changes, which are not suitable for customer-facing applications that require object-level changes, leading to inefficiencies and increased complexity, as they fail to maintain the object-level view due to asynchronous change capture and additional computation overhead.

Innovation Solution

The system converts row-level database changes to object-level changes using an enrichment database, leveraging existing change data capture technologies to build object-level changes asynchronously, thereby maintaining scalability and minimizing impact on customer traffic without additional computing costs or changes to the existing object relational mapping system.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If row-level change capture is used, then scalability is maintained, but object-level changes cannot be provided

Engineering Contradiction:
Improveobject-level change capabilityVSAvoidsystem complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent segments the change capture functionality into two independent layers: row-level change capture in the primary database maintains scalability, while object-level change construction is performed separately by consuming row-level changes and applying ORM mappings. This segmentation allows each layer to operate independently without compromising the other.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces an intermediary component that sits between row-level change capture and object-level change consumption. This intermediary consumes row-level changes, applies ORM object mappings, and constructs object-level changes, thereby bridging the gap between database operations and application-level object models without directly modifying either end.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If synchronous change capture is implemented, then object-level view is maintained, but computing overhead increases

Engineering Contradiction:
Improveobject-level view accuracyVSAvoidcomputing overhead
Core Design Contradiction:
ReliabilityVSUse of energy by moving object

Solution Approach 1:

The patent implements periodic (asynchronous) action for object-level change construction by having a separate process consume row-level changes at intervals and construct object-level changes using ORM mappings. This periodic construction approach maintains object-level view accuracy while avoiding the continuous computing overhead of synchronous capture, allowing the system to process changes in manageable batches.

Inventive Principle:
Principle #19Periodic action

3Adaptability or versatility

If object-level change streams are generated, then functionality is expanded, but additional computing costs are incurred

Engineering Contradiction:
Improvechange stream functionalityVSAvoidcomputing costs
Core Design Contradiction:
Adaptability or versatilityVSLoss of energy

Solution Approach 1:

The patent implements self-service by having the ORM framework automatically perform object mappings and construct object-level changes from row-level changes without requiring additional external computation. The system leverages existing ORM infrastructure to serve the object-level change stream generation needs, thereby expanding functionality while minimizing additional computing costs through resource reuse.

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS11494408B2Asynchronous row to object enrichment of database change streams
Publication Date: 2022.11.08 SALESFORCE INC
  • US11494408B2 patent drawing
  • US11494408B2 patent drawing
  • US11494408B2 patent drawing

AI summary

A first copy of a database object may be constructed prior to applying a designated database update request to a first database. The database object may be represented by a plurality of database table rows in the first database, and the request may update one or more of the plurality of rows. The request may be applied to the first database to update the one or more of the plurality of rows in the first database. A second copy of the database object may be constructed after applying the database update request to the first database. A message identifying a difference between the first copy of the database object and a second copy of the database object may be transmitted to a remote computing device.