Micro-Sharding Database Architecture for Parallel Request Processing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing database systems face challenges in reducing response time and maintenance overhead while maintaining ACID properties, particularly with sharding, which increases communication overhead and complexity.

Innovation Solution

The implementation of micro-sharding, where database shards exist within a single process, allowing for parallel processing of requests across multiple threads in a shared memory space, reducing contention and bandwidth usage through efficient aggregation of intermediate results.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of time

If sharding is used to reduce database response time, then response time is improved, but communication overhead increases

Engineering Contradiction:
Improveresponse timeVSAvoidcommunication overhead
Core Design Contradiction:
Loss of timeVSObject-generated harmful factors

Solution Approach 1:

The database is divided into multiple shards that are distributed across different processes or servers. Each shard handles a subset of data independently, allowing parallel processing of queries and reducing response time. The segmentation enables concurrent operations on different data partitions without blocking each other.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

A coordinator process or message queue system acts as an intermediary to manage communication between shards. The intermediary handles the routing of queries to appropriate shards, collects results from multiple shards, and consolidates them into final responses, thereby reducing direct communication overhead between client and shards.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Productivity

If sharding is used to improve performance, then performance is improved, but device complexity increases

Engineering Contradiction:
ImproveperformanceVSAvoidcomplexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The database system is segmented into independent shards that can be managed separately. Each shard has its own data storage and processing capabilities, which simplifies individual shard management while enabling parallel performance improvement.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The sharding system incorporates universal mechanisms for query routing, result aggregation, and error handling that work across all shards. This multi-functionality reduces the need for shard-specific custom logic and simplifies overall system management.

Inventive Principle:
Principle #6Universality (Multi-functionality)

3Quantity of substance

If sharding is used to reduce data size per table, then data size is reduced, but maintenance overhead increases

Engineering Contradiction:
Improvedata sizeVSAvoidmaintenance overhead
Core Design Contradiction:
Quantity of substanceVSEase of manufacture

Solution Approach 1:

Large tables are segmented into smaller shard tables distributed across multiple processes. This reduces the data size handled by any single process, improving memory efficiency and reducing lock contention during maintenance operations.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The sharding system implements self-managing mechanisms where shards automatically handle their own data distribution, query routing, and result aggregation without requiring extensive manual intervention. This reduces maintenance overhead despite the distributed architecture.

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS9171044B2Method and system for parallelizing database requests
Publication Date: 2015.10.27 ORACLE INT CORP
  • US9171044B2 patent drawing
  • US9171044B2 patent drawing
  • US9171044B2 patent drawing

AI summary

Methods and systems are described for applying the use of shards within a single memory address space. A database request is processed by providing the request from a client to a processor, the processor then distributing the request to multiple threads within a single process but executing in a shared memory address environment, wherein each thread performs the request on a distinct shard, and aggregating the results of the multiple threads being aggregated and returning a final result to the client. By parallelizing operations in this way, the request response time can be reduced and the total amount of communication overhead can be reduced.