Distributed Key-Value Storage with Independent Object-Index Scaling
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Key value store databases face challenges in handling advanced queries and data inconsistencies due to prioritizing speed over strong consistency and availability, especially as data traffic grows, necessitating a storage solution that supports query language-based search and can scale horizontally indefinitely.
Innovation Solution
Implementing a scalable key value storage system in a distributed storage system that separates object storage from index storage, allowing both to scale independently, uses consistent hashing for partition assignment, and employs change data capture to update indexes dynamically, with large objects stored in external storage and small pointers in object storage.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Speed
If key value stores prioritize speed over strong consistency, then data retrieval speed is improved, but data consistency and availability deteriorate
Solution Approach 1:
The patent segments the storage system into separate object storage and index storage components. Object storage handles data retrieval speed while index storage manages consistency through change data capture mechanisms. This segmentation allows each component to optimize for its specific function without compromising the other.
Solution Approach 2:
The patent introduces an intermediary indexing layer that mediates between object storage and query operations. The index storage acts as a buffer that maintains consistency information separately, allowing fast object retrieval while ensuring data integrity through the indexing mechanism.
2Productivity
If key value stores scale horizontally, then data capacity and performance are improved, but system complexity increases
Solution Approach 1:
The patent divides the distributed storage system into independent object storage nodes and index storage nodes. This segmentation allows horizontal scaling of data capacity without proportionally increasing system complexity, as each node operates semi-independently with standardized interfaces.
Solution Approach 2:
The patent creates universal indexing mechanisms that work across multiple storage nodes. The change data capture system provides a unified approach to maintaining consistency across the distributed system, reducing the complexity that would otherwise arise from node-specific consistency management.
3Adaptability or versatility
If object storage and index storage are separated, then scalability is improved, but system complexity increases
Solution Approach 1:
The patent explicitly segments object storage and index storage into separate components that can scale independently. Object storage can be expanded for capacity while index storage scales for query performance, providing versatile scalability without requiring complex integrated scaling solutions.
Solution Approach 2:
The patent implements self-service mechanisms where the index storage automatically updates through change data capture from object storage. This automation reduces the operational complexity of managing separate storage systems, as the system self-maintains consistency without complex manual coordination.
4Reliability
If change data capture is used to update indexes dynamically, then data consistency is improved, but processing overhead increases
Solution Approach 1:
The patent applies preliminary action by capturing data changes at the source (object storage) before they need to be reflected in the index storage. This proactive approach to change capture ensures consistency is maintained with minimal processing overhead, as changes are recorded incrementally rather than requiring full index regeneration.
Data Source
AI summary
Techniques for implementing a scalable key value storage in a distributed storage separate the storage of the collection of data objects from the storage of the index corresponding to the collection. According to an implementation, a database service may receive a request to create a collection of data objects in an object storage. A schema may be specified for the collection. The database service may generate a unique identifier (ID) corresponding to the collection and create the collection in the object storage. The objects in the collection and the associated schema may be further written to an object table and a schema table, respectively. The database service may further validate the schema and extract one or more indexable fields from the schema. The database service may send a request to a database search service to create an index for the collection in an index storage.


