Asynchronous Callbacks for Distributed Datastore Consistency

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Distributed data storage systems face challenges in simultaneously achieving scalability, data replication, write availability, and fast read/query times, leading to increased complexity that complicates application code handling and error management.

Innovation Solution

The system employs asynchronous callback functions, an append-only data store, and sharding with replication to provide simplified data storage semantics, allowing applications to interact with data using a data-driven paradigm and ensuring fault-tolerance through buffered writes and trigger mechanisms.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If data storage implements sharding and replication to achieve scalability and data reliability, then system scalability and data reliability are improved, but data storage system complexity increases

Engineering Contradiction:
Improvedata reliabilityVSAvoiddata storage system complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent introduces an intermediary layer (the online system's data storage interface) that shields applications from the complexity of sharding and replication mechanisms. Applications interact with a simplified API while the intermediary handles the complex distributed storage operations, including shard management, replication, and data consistency across multiple physical servers.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The data storage system is segmented into multiple independent shards distributed across different physical servers. Each shard can be managed and replicated independently, allowing the system to scale horizontally while maintaining reliability through replication of individual shards rather than managing the entire dataset as a single unit.

Inventive Principle:
Principle #1Segmentation

2Ease of operation

If asynchronous callback functions are used to simplify data access, then ease of operation for applications is improved, but system complexity increases

Engineering Contradiction:
Improveease of data accessVSAvoidsystem complexity
Core Design Contradiction:
Ease of operationVSDevice complexity

Solution Approach 1:

The system implements self-service through asynchronous callback functions that automatically notify applications when data operations complete. Instead of requiring applications to continuously poll or manage complex synchronization logic, the system autonomously handles data operations and callbacks, simplifying the application's interaction while the system manages the complexity of asynchronous coordination internally.

Inventive Principle:
Principle #25Self-service

3Reliability

If multiple distributed copies of data are maintained, then data reliability is improved, but write availability and consistency management become more difficult

Engineering Contradiction:
Improvedata reliabilityVSAvoidwrite availability management
Core Design Contradiction:
ReliabilityVSEase of operation

Solution Approach 1:

The system performs preliminary actions by pre-establishing replication strategies and consistency protocols before write operations occur. When writes are initiated, the system has already prepared the replication infrastructure and consistency mechanisms, allowing writes to be propagated to multiple distributed copies systematically rather than requiring complex real-time coordination during the write operation itself.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS11132382B2Asynchronous notifications for a datastore of a distributed system
Publication Date: 2021.09.28 UBER TECHNOLOGIES INC
  • US11132382B2 patent drawing
  • US11132382B2 patent drawing
  • US11132382B2 patent drawing

AI summary

The data of an online system is distributed over a number of different physical servers and databases on those servers. The online system shards the data to increase system scalability and replicates the shards to increase data reliability. Features such as sharding and replication in turn increase data storage system complexity. Accordingly, in order to provide simplified data storage semantics to applications that use the online system, the online system provides access to data via asynchronous callback functions that are triggered once data has been written and is available for reading by client code. Thus, applications need only specify code to be used in response to data write events, and can thereafter interact with the online system data using a data-driven paradigm.