Deduplicated Cloud Storage Namespace for Consistent Read Access
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
In storage environments with eventual consistency models, read operations may not return the most recent updates to data objects, leading to inconsistencies where different readers can receive different versions of the same object.
Innovation Solution
Assigning a new name to updated data objects with a unique identifier, such as a timestamp or transaction ID, ensures that only the most recent version is retrieved by specifying the new name in read requests, leveraging namespace consistency and using similarity groups with transaction IDs to manage and deduplicate data efficiently.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Speed
If a read operation is performed in an eventual consistency storage system, then the operation can be executed quickly, but the read operation may not return the most recent version of the data object
Solution Approach 1:
The system performs preliminary actions by maintaining a namespace that is updated immediately upon data object updates, and by pre-establishing version tracking mechanisms. This allows the system to quickly determine the most recent version without performing complex consistency checks during read operations, thus maintaining fast read speeds while ensuring data consistency.
Solution Approach 2:
The patent introduces a namespace as an intermediary layer between the storage system and read operations. The namespace acts as a mediator that tracks the most recent version of data objects and directs read operations to the correct version, resolving the contradiction between fast reads and data consistency by decoupling the read path from the underlying eventual consistency storage system.
2Productivity
If different readers access the storage system simultaneously, then the system can handle multiple requests in parallel, but readers may receive different versions of the same data object
Solution Approach 1:
The system segments the data access path by separating the namespace (which tracks version information) from the actual data storage. This segmentation allows multiple readers to independently query the namespace for version information and access data in parallel without interfering with each other, maintaining both parallel processing capability and version consistency.
Solution Approach 2:
The namespace provides continuous feedback about the most recent version of data objects to readers. This feedback mechanism ensures that all readers, regardless of when they access the system, receive information about the current version and can access consistent data, even while handling multiple parallel requests.
3Reliability
If the system waits for data object updates to propagate before allowing reads, then read operations will always return the most recent version, but the system will experience increased latency
Solution Approach 1:
The system performs preliminary updates to the namespace immediately when data objects are updated, before the update fully propagates through the storage system. This preliminary action allows readers to quickly query the namespace and obtain the most recent version information without waiting for full propagation, thus reducing latency while maintaining version accuracy.
Solution Approach 2:
The namespace serves as an intermediary that provides immediate visibility into the most recent version of data objects without requiring readers to wait for update propagation. This intermediary layer decouples the read latency from the update propagation time, allowing readers to access the latest version information quickly while the actual data update continues in the background.
Data Source
AI summary
One example method includes receiving a write request that includes a data structure version to be written, wherein the data structure version is associated with a unique identifier, storing the data structure version in association with the unique identifier, receiving a read request for a most recent version of the data structure and, when the stored data structure version is not the most recent version of the data structure, examining respective unique identifiers of each of a group of other stored data structure versions to determine which stored data structure version is the most recent. Finally, the example method includes returning the most recent data structure version, notwithstanding that one or more other data structure versions existed at the time that the read request was received.


