NoSQL Proxy for Connection Pooling and Data Conversion

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The existing NoSQL data center architecture faces bottlenecks such as connection scatter-gather, limited operating data set, data serialization and deserialization overhead, secondary index conversion, and management of compression, decompression, encryption, and security protocols, which limit efficient scaling and performance in handling millions of transactions.

Innovation Solution

A NoSQL proxy is introduced between application servers and NoSQL data servers, equipped with a packet processor, proxy finite state machine, hybrid memory management unit, and data access command processing unit to manage data access commands, translate indexes, and filter results, supporting high throughput, low latency, and flexible data serialization, while relieving the NoSQL data server of network connection management and data conversion tasks.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If application servers directly access NoSQL data servers, then data access is straightforward, but connection management becomes complex and scaling is limited

Engineering Contradiction:
Improvetransaction throughputVSAvoidconnection management complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

A proxy server is introduced as an intermediary between application servers and NoSQL data servers. The proxy manages all network connections to the data server, pooling and reusing connections while application servers communicate with the proxy through simple RPC calls. This resolves the contradiction by maintaining high transaction throughput through efficient connection management while keeping application server complexity low.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The system is segmented into distinct components: application servers, proxy servers, and NoSQL data servers. Each component has a specific responsibility - application servers handle business logic, proxies handle connection management and data format conversion, and data servers handle persistent storage. This segmentation allows each component to be optimized independently, improving overall productivity while distributing complexity across multiple specialized components.

Inventive Principle:
Principle #1Segmentation

2Speed

If data is stored in NoSQL data server, then persistent storage is available, but access latency increases due to network round trips

Engineering Contradiction:
Improvedata access speedVSAvoidnetwork round trip time
Core Design Contradiction:
SpeedVSLoss of time

Solution Approach 1:

The proxy server performs preliminary actions by maintaining a connection pool to the NoSQL data server in advance. Connections are established and kept ready before they are needed, eliminating the need for network connection setup during actual data access operations. This preliminary connection establishment reduces access latency while maintaining persistent storage capabilities.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The proxy server creates copies of data between different formats (JSON, BSON, Thrift) and maintains multiple connection copies to the data server. By keeping multiple ready connections and pre-converting data formats, the system reduces network round trip time while maintaining access to persistent storage.

Inventive Principle:
Principle #26Copying

3Adaptability or versatility

If data format conversion is performed at the NoSQL data server, then data accessibility is improved, but processing overhead increases

Engineering Contradiction:
Improvedata format compatibilityVSAvoiddata processing overhead
Core Design Contradiction:
Adaptability or versatilityVSUse of energy by moving object

Solution Approach 1:

The data format conversion functionality is extracted from the NoSQL data server and placed in the proxy server. The proxy handles all JSON-BSON-Thrift conversions, while the data server focuses solely on efficient data storage and retrieval. This extraction reduces processing overhead at the data server while maintaining data format compatibility across the system.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The proxy server acts as an intermediary that handles data format conversion between application servers and the NoSQL data server. Applications can use their preferred format (JSON, BSON, Thrift) and the proxy transparently converts to the data server's native format and back, maintaining adaptability while centralizing conversion overhead in a dedicated component.

Inventive Principle:
Principle #24Intermediary (Mediator)

4Adaptability or versatility

If secondary indexes are used for data retrieval, then query flexibility is improved, but index conversion overhead increases

Engineering Contradiction:
Improvequery flexibilityVSAvoidindex conversion time
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

Solution Approach 1:

The proxy server serves as an intermediary that handles secondary index to primary index conversion. When a query uses a secondary index, the proxy resolves it to the corresponding primary index before accessing the data server, transparently managing the conversion overhead while maintaining query flexibility for users.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS11044314B2System and method for a database proxy
Publication Date: 2021.06.22 MARVELL ASIA PTE LTD
  • US11044314B2 patent drawing
  • US11044314B2 patent drawing
  • US11044314B2 patent drawing

AI summary

A database proxy includes a request processor, a cache, a database plugin, and interfaces for coupling the database proxy client devices, other database proxies, and database servers. The request processor is configured to receive a read request from a client, determine whether the read request is assigned to the database proxy, and return results of the read request to the client. When the read request is not assigned to the database proxy, the read request is forwarded to another database proxy. When the read request is assigned to the database proxy, the read request is processed using data stored in the cache when the results are stored in the cache or forwarded to the database plugin, which forwards the read request to a database server, receives the results from the database server, and returns the results to the request processor for storage in the cache.