Distributed Storage Layer for Fast Database Crash Recovery
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Distributed database systems face challenges in ensuring ACID properties and efficient scaling while maintaining cost-effectiveness and simplicity, particularly due to complexities in managing cache coherency and the high costs associated with replicating large monolithic database systems.
Innovation Solution
The system partitions database functionality into tiers, offloading operations like backup, restore, and recovery to a separate distributed storage layer, where redo log records are processed lazily, reducing network traffic and allowing for asynchronous requests, and implementing a distributed storage system that coalesces data pages independently without blocking write operations.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If database functionality is distributed across multiple nodes using shared nothing or shared disk models, then fault tolerance and durability are improved, but device complexity and deployment cost increase due to the need for glue logic to manage cache coherency and stitch nodes together
Solution Approach 1:
The patent extracts the storage functionality from the compute nodes and places it in a separate distributed storage layer. This separation removes the need for glue logic at compute nodes to manage cache coherency and coordinate between nodes, as the storage layer independently manages data consistency and coalesces redo logs without requiring complex inter-node communication protocols
Solution Approach 2:
The patent segments the database system into distinct compute nodes and storage nodes with clearly defined responsibilities. Compute nodes handle query processing while storage nodes handle data persistence and recovery operations independently. This segmentation allows each component to be optimized separately and eliminates the need for tight coupling through glue logic
2Reliability
If large monolithic database systems are replicated on multiple nodes, then fault tolerance is improved, but deployment cost and resource requirements increase
Solution Approach 1:
Instead of replicating entire monolithic database systems, the patent copies only the necessary data pages and redo log records to multiple storage nodes. The storage layer coalesces these replicated logs and reconstructs data pages as needed, providing fault tolerance through replication of minimal data structures rather than complete database instances
Solution Approach 2:
The patent uses inexpensive storage nodes that can be easily replicated and replaced. Rather than deploying expensive high-performance database instances for fault tolerance, the system uses multiple cheaper storage nodes that store redundant copies of data pages and logs, providing durability through quantity rather than individual node performance
3Reliability
If system-wide checkpoints are performed to ensure data consistency, then reliability is improved, but productivity decreases due to checkpoint disruptions during write operations
Solution Approach 1:
The patent performs preliminary actions by continuously appending redo log records to data pages in the storage layer without waiting for system-wide checkpoints. Write operations complete immediately after logs are appended, and data consistency is ensured later during recovery or read operations when logs are coalesced into data pages, eliminating checkpoint-induced write interruptions
Solution Approach 2:
The patent cushions against consistency requirements by maintaining redundant redo log records in the storage layer before any recovery operation is needed. These pre-stored logs serve as a buffer that allows the system to recover from crashes without requiring disruptive checkpoints, as the logs are already available to reconstruct any lost data pages
Data Source
AI summary
A distributed database system may implement fast crash recovery. Upon recovery from a database head node failure, a connection with one or more storage nodes of a distributed storage system storing data for a database implemented by the database head node may be established. Upon establishment of the connection with the storage nodes, that database may be made available for access, such as for various access requests. In various embodiments, redo log records may not be replayed in order to provide access to the database. In at least some embodiments, the storage nodes may provide a current state of data stored for the database in response to requests.


