Application-Level Replication for Database Failover

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

High-availability middleware systems face lengthy recovery times due to the need for database-level replication, which prolongs failover processes in case of database failures.

Innovation Solution

Implementing application-level replication, where application servers synchronize data updates across multiple redundant databases, eliminating the need for database-level replication and enabling quick recovery by using message queues and recovery servers to manage transactions and cache synchronization.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If database-level replication is used to ensure high availability, then data consistency is maintained, but failover time becomes excessively long (several minutes)

Engineering Contradiction:
Improvedata consistencyVSAvoidfailover time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent segments the replication function from the database level to the application level. Instead of relying on database-level replication mechanisms, the application server independently manages replication to multiple databases, allowing failover to proceed without waiting for database-level synchronization processes.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent implements preliminary action by maintaining multiple databases in advance with near-real-time synchronization through message queues. When failover is needed, the standby database is already prepared and synchronized, eliminating the need for lengthy recovery log processing during the failover event itself.

Inventive Principle:
Principle #10Preliminary action

2Reliability

If multiple redundant databases are maintained with database-level replication, then high availability is achieved, but system complexity increases

Engineering Contradiction:
Improvehigh availabilityVSAvoidsystem complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent introduces message queues as an intermediary layer between the application server and multiple databases. This intermediary simplifies the complexity by providing a standardized mechanism for data synchronization, allowing the application server to manage multiple databases without direct complex interactions with each database's replication mechanisms.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The application server performs self-service by independently managing the replication and synchronization of data across multiple databases without relying on external database-level replication tools. This consolidates control and reduces the complexity of coordinating multiple database replication systems.

Inventive Principle:
Principle #25Self-service

3Loss of time

If application servers synchronize all updates to multiple redundant databases, then failover time is reduced, but network overhead increases

Engineering Contradiction:
Improvefailover timeVSAvoidnetwork overhead
Core Design Contradiction:
Loss of timeVSLoss of energy

Solution Approach 1:

The patent changes the parameter of data transmission by using message queues to send only essential synchronization information (inserts, updates, deletes) rather than full data sets. This reduces network overhead while maintaining the ability to quickly synchronize multiple databases for rapid failover.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS10114710B1High availability via data services
Publication Date: 2018.10.30 PROGRESS SOFTWARE CORP
  • US10114710B1 patent drawing
  • US10114710B1 patent drawing
  • US10114710B1 patent drawing

AI summary

Application-level replication, the synchronization of data updates within a cluster of application servers, may be provided by having application servers themselves synchronize all updates to multiple redundant databases, precluding the need for database-level replication. This may be accomplished by first sending a set of database modifications requested by the transaction to a first database. Then a message may be placed in one or more message queues, the message indicating the objects inserted, updated, or deleted in the transaction. Then a commit command may be sent to the first database. The set of database modifications and a commit command may then be sent to a second database. This allows for transparent synchronization of the databases and quick recovery from a database failure, while imposing little performance or network overhead.