# US 11,030,215 B2 · Technologies for scaling user interface backend clusters for database-bound applications

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

- Number: US 11,030,215 B2
- Document ID: US11030215B2
- Status: Granted
- Kind: B2
- Application number: 15/389,714
- Filed: 2016-12-23
- Published: 2018-06-28
- Granted: 2021-06-08
- Earliest claimed: 2016-12-23
- Assignees: Ingram Micro Inc.
- Applicants: Ingram Micro Inc.
- Inventors: Alexander Vasilievich Andreev; Sergey Stanislavovich Kim; Igor Vagulin
- Web page: https://patentgrep.com/patent/US11030215B2

## CPC

- G06F 16/252: {between a Database Management System and a front-end application}
- G06F 16/27: Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F 16/273: {Asynchronous replication or reconciliation}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Technologies for scaling user interface (UI) backend clusters for database-bound applications include a plurality of UI application servers and a master database server. Each UI application server is configured to retrieve a session sequence ID associated with a present user session that corresponds to a sequence ID of a master database of the master database server during a most recent write operation of data to a master database during the present user session. Additionally, the UI application servers are configured to read, from a local read-only database, a local database sequence ID that corresponds to a sequence ID of the master database during a most recent asynchronous replication of the master database to the local read-only database. The UI application servers are further configured to read the data from the local read-only database in response to a determination that the session sequence ID is empty, or is less than or equal to the local database sequence ID. Additional embodiments are described herein.

## Claims

### Claim 1

A method for scaling user interface (UI) backend clusters for database-bound applications, wherein the UI backend clusters include a plurality of UI application servers and a master database server, the method comprising:
performing, by a UI application manager of a UI application server of the plurality of UI application servers, a data read operation comprising:
retrieving a session sequence ID associated with a present user session, wherein the session sequence ID corresponds to a first master database sequence ID received from a master database manager of the master database server during a most recent write operation of data to a master database of the master database server during the present user session;
reading, in response to a determination the session sequence ID is not empty, a local database sequence ID from a local read-only database associated with UI application manager, wherein the local database sequence ID corresponds to a second master database sequence ID received from the master database manager during a most recent asynchronous replication of the master database to the local read-only database, and wherein the local read-only database comprises an asynchronously replicated copy of the master database; and
determining whether the session sequence ID is less than or equal to the local database sequence ID;
reading, subsequent to a determination that the session sequence ID is less than or equal to the local database sequence ID, the data from the local read-only database;
transmitting, by the master database server to the UI application server, a data modification operation status wherein the modification operation status indicates the data from the local read-only database is stale;
receiving, by the UI application manager, one or more messages from an endpoint device of a plurality of endpoint devices communicatively coupled to the UI application server;
rendering, by the UI application manager, data of a user interface as a function of the received message;
wherein receiving the messages comprises receiving the message from a load balancing device communicatively coupled to each of the plurality of UI application servers, wherein the load balancing device is further communicatively coupled to each of the plurality of endpoint devices over a network; and
wherein receiving the messages from the endpoint device comprises receiving all messages from that endpoint device at the UI application server during the user session.

### Claim 2 (depends on 1)

The method of claim 1, wherein performing the data read operation further comprises reading, in response to a determination the session sequence ID is empty, the data from the local read-only database.

### Claim 3 (depends on 1)

The method of claim 1, wherein reading the local database sequence ID from the local read-only database associated with UI application manager comprises transmitting a data read request to a database manager of the UI application server, and further comprising querying, by the database manager, the local read-only database to retrieve the local database sequence ID from the local read-only database.

### Claim 4 (depends on 1)

The method of claim 1, wherein reading the data from the local read-only database comprises transmitting a data read request to a database manager of the UI application server, and further comprising querying, by the database manager, the local read-only database to retrieve the data corresponding to the data read request from the local read-only database.

### Claim 5 (depends on 4)

The method of claim 4, further comprising:
determining, by the UI application manager and subsequent to having received an indication that the reading of the data from the local read-only database was unsuccessful, whether a threshold duration of time has elapsed since having received the indication; and
performing, by the UI application manager and in response to a determination that the threshold duration of time has elapsed, another data read operation.

### Claim 6 (depends on 5)

The method of claim 5, further comprising transmitting, by the UI application manager and subsequent to having received an indication that the reading of the data from the local read-only database was unsuccessful, a data read request to a master database manager of the master database server, wherein the data read request is usable by the master database manager to query the master database to retrieve the data associated with the data read request from the local read-only database to retrieve the applicable data from the master database.

### Claim 7

One or more computer-readable storage media comprising a plurality of instructions stored thereon that in response to being executed cause a user interface (UI) application server of a plurality of UI application servers of a UI backend cluster to:
perform, by a UI application manager of the UI application server, a data read operation, wherein the data read operation comprises to:
retrieve a session sequence ID associated with a present user session, wherein the session sequence ID corresponds to a first master database sequence ID received from a master database manager of a master database server of the UI backend cluster during a most recent write operation of data to a master database of the master database server during the present user session;
read, in response to a determination the session sequence ID is not empty, a local database sequence ID from a local read-only database associated with UI application manager, wherein the local database sequence ID corresponds to a second master database sequence ID received from the master database manager during a most recent asynchronous replication of the master database to the local read-only database, and wherein the local read-only database comprises an asynchronously replicated copy of the master database; and
determine whether the session sequence ID is less than or equal to the local database sequence ID;
read, subsequent to a determination that the session sequence ID is less than or equal to the local database sequence ID, the data from the local read-only database; and
transmit by the master database server to the UI application server, a data modification operation status wherein the modification operation status indicates the data from the local read-only database is stale;
determine, by the UI application manager and subsequent to having received an indication that the reading of the data from the local read-only database was unsuccessful, whether a threshold duration of time has elapsed since having received the indication; and
perform, by the UI application manager and in response to a determination that the threshold duration of time has elapsed, another data read operation; and
transmit, by the UI application manager and subsequent to having received an indication that the reading of the data from the local read-only database was unsuccessful, a data read request to a master database manager of the master database server, wherein the data read request is usable by the master database manager to query the master database to retrieve the data associated with the data read request from the local read-only database to retrieve the applicable data from the master database.

### Claim 8 (depends on 7)

The one or more computer-readable storage media of claim 7, wherein to perform the data read operation further comprises to read, in response to a determination the session sequence ID is empty, the data from the local read-only database.

### Claim 9 (depends on 7)

The one or more computer-readable storage media of claim 7, wherein to read the local database sequence ID from the local read-only database associated with UI application manager comprises to (i) transmit, by the UI application manager, a data read request to a database manager of the UI application server and (ii) query, by a database manager of the UI application server, the local read-only database to retrieve the local database sequence ID from the local read-only database.

### Claim 10 (depends on 7)

The one or more computer-readable storage media of claim 7, wherein to read the data from the local read-only database comprises to (i) transmit, by the UI application manager, a data read request to a database manager of the UI application server and (ii) query, by a database manager of the UI application server, the local read-only database to retrieve the data corresponding to the data read request from the local read-only database.

### Claim 11 (depends on 7)

The one or more computer-readable storage media of claim 7, wherein the plurality of instructions further cause the UI application server to:
receive, by the UI application manager, one or more messages from an endpoint device of a plurality of endpoint devices communicatively coupled to the UI application server; and
render, by the UI application manager, data of a user interface as a function of the received message.

### Claim 12 (depends on 11)

The one or more computer-readable storage media of claim 11, wherein to receive the messages comprises to receive the message from a load balancing device communicatively coupled to each of the plurality of UI application servers, wherein the load balancing device is further communicatively coupled to each of the plurality of endpoint devices over a network.

### Claim 13

A user interface (UI) application server of a plurality of UI application servers for scaling UI backend clusters for database-bound applications, wherein the UI backend clusters include the plurality of UI application servers and a master database server, the UI application server comprising:
a CPU; and
a memory having stored therein a plurality of instructions that when executed by the processor cause the UI application server to:
perform, by a UI application manager of the UI application server, a data read operation, wherein the data read operation comprises to:
retrieve a session sequence ID associated with a present user session, wherein the session sequence ID corresponds to a first master database sequence ID received from a master database manager of the master database server during a most recent write operation of data to a master database of the master database server during the present user session;
read, in response to a determination the session sequence ID is not empty, a local database sequence ID from a local read-only database associated with UI application manager, wherein the local database sequence ID corresponds to a second master database sequence ID received from the master database manager during a most recent asynchronous replication of the master database to the local read-only database, and wherein the local read-only database comprises an asynchronously replicated copy of the master database; and
determine whether the session sequence ID is less than or equal to the local database sequence ID;
read, subsequent to a determination that the session sequence ID is less than or equal to the local database sequence ID, the data from the local read-only database;
transmit, by the master database server to the UI application server, a data modification operation status wherein the modification operation status indicates the data from the local read-only database is stale;
determine, by the UI application manager and subsequent to having received an indication that the reading of the data from the local read-only database was unsuccessful, whether a threshold duration of time has elapsed since having received the indication;
perform, by the UI application manager and in response to a determination that the threshold duration of time has elapsed, another data read operation; and
transmit, by the UI application manager and subsequent to having received an indication that the reading of the data from the local read-only database was unsuccessful, a data read request to a master database manager of the master database server, wherein the data read request is usable by the master database manager to query the master database to retrieve the data associated with the data read request from the local read-only database to retrieve the applicable data from the master database.

### Claim 14 (depends on 13)

The UI application server of claim 13, wherein to perform the data read operation further comprises to read, in response to a determination the session sequence ID is empty, the data from the local read-only database.

### Claim 15 (depends on 13)

The UI application server of claim 13, wherein to read the local database sequence ID from the local read-only database associated with UI application manager comprises to (i) transmit, by the UI application manager, a data read request to a database manager of the UI application server and (ii) query, by a database manager of the UI application server, the local read-only database to retrieve the local database sequence ID from the local read-only database.

### Claim 16 (depends on 13)

The UI application server of claim 13, wherein to read the data from the local read-only database comprises to (i) transmit, by the UI application manager, a data read request to a database manager of the UI application server and (ii) query, by a database manager of the UI application server, the local read-only database to retrieve the data corresponding to the data read request from the local read-only database.

### Claim 17 (depends on 13)

The UI application server of claim 13, wherein the one or more processors are further configured to execute the instructions to:
receive, by the UI application manager, one or more messages from an endpoint device of a plurality of endpoint devices communicatively coupled to the UI application server; and
render, by the UI application manager, data of a user interface as a function of the received message.

### Claim 18 (depends on 17)

The UI application server of claim 17, wherein to receive the messages comprises to receive the message from a load balancing device communicatively coupled to each of the plurality of UI application servers, wherein the load balancing device is further communicatively coupled to each of the plurality of endpoint devices over a network.

### Claim 19

A method for scaling user interface (UI) backend clusters for database-bound applications, wherein the UI backend clusters include a plurality of UI application servers and a master database server, the method comprising:
performing, by a UI application manager of a UI application server of the plurality of UI application servers, a data read operation comprising:
retrieving a session sequence ID associated with a present user session, wherein the session sequence ID corresponds to a first master database sequence ID received from a master database manager of the master database server during a most recent write operation of data to a master database of the master database server during the present user session;
reading, in response to a determination the session sequence ID is not empty, a local database sequence ID from a local read-only database associated with UI application manager, wherein the local database sequence ID corresponds to a second master database sequence ID received from the master database manager during a most recent asynchronous replication of the master database to the local read-only database, and wherein the local read-only database comprises an asynchronously replicated copy of the master database; and
determining whether the session sequence ID is less than or equal to the local database sequence ID;
reading, subsequent to a determination that the session sequence ID is less than or equal to the local database sequence ID, the data from the local read-only database;
transmitting, by the master database server to the UI application server, a data modification operation status wherein the modification operation status indicates the data from the local read-only database is stale;
wherein reading the data from the local read-only database comprises transmitting a data read request to a database manager of the UI application server, and further comprising querying, by the database manager, the local read-only database to retrieve the data corresponding to the data read request from the local read-only database;
determining, by the UI application manager and subsequent to having received an indication that the reading of the data from the local read-only database was unsuccessful, whether a threshold duration of time has elapsed since having received the indication; and
performing, by the UI application manager and in response to a determination that the threshold duration of time has elapsed, another data read operation; and
transmitting, by the UI application manager and subsequent to having received an indication that the reading of the data from the local read-only database was unsuccessful, a data read request to a master database manager of the master database server, wherein the data read request is usable by the master database manager to query the master database to retrieve the data associated with the data read request from the local read-only database to retrieve the applicable data from the master database.

### Claim 20 (depends on 19)

The method of claim 19, further comprising:
receiving, by the UI application manager, one or more messages from an endpoint device of a plurality of endpoint devices communicatively coupled to the UI application server; and
rendering, by the UI application manager, data of a user interface as a function of the received message.

### Claim 21 (depends on 20)

The method of claim 20, wherein receiving the messages comprises receiving the message from a load balancing device communicatively coupled to each of the plurality of UI application servers, wherein the load balancing device is further communicatively coupled to each of the plurality of endpoint devices over a network.

### Claim 22 (depends on 21)

The method of claim 21, wherein receiving the messages from the endpoint device comprises receiving all messages from that endpoint device at the UI application server during the user session.
