KEY-VALUE STORE ON PERSISTENT MEMORY
First Claim
1. A method for use in a computing apparatus, the method comprising:
- storing data in a key-value store residing in a persistent memory, the key-value store including a plurality of persistent nodes including key-value pairs, the key-value pairs of the persistent nodes being unsorted;
caching selected persistent nodes in a volatile memory, the key-value pairs of the cached nodes being sorted, the caching including instantiating a dual pointer for each cached node, the dual pointer including a volatile pointer to a child node of the cached node and a persistent pointer to the child node of the corresponding persistent node in the key-value store; and
rebuilding the cache of selected nodes upon demand using the dual pointers in the event of recovery.
1 Assignment
0 Petitions
Accused Products
Abstract
A technique for reducing recovery time in a computing apparatus includes: storing data in a key-value store residing in a persistent memory, the key-value store including a plurality of persistent nodes including key-value pairs, the key-value pairs of the persistent nodes being unsorted; caching selected persistent nodes in a volatile memory, the key-value pairs of the cached nodes being sorted, the caching including instantiating a dual pointer for each cached node, the dual pointer including a volatile pointer to a child node of the cached node and a persistent pointer to the child node of the corresponding persistent node in the key-value store; and rebuilding the cache of selected nodes upon demand using the dual pointers in the event of recovery.
-
Citations
20 Claims
-
1. A method for use in a computing apparatus, the method comprising:
-
storing data in a key-value store residing in a persistent memory, the key-value store including a plurality of persistent nodes including key-value pairs, the key-value pairs of the persistent nodes being unsorted; caching selected persistent nodes in a volatile memory, the key-value pairs of the cached nodes being sorted, the caching including instantiating a dual pointer for each cached node, the dual pointer including a volatile pointer to a child node of the cached node and a persistent pointer to the child node of the corresponding persistent node in the key-value store; and rebuilding the cache of selected nodes upon demand using the dual pointers in the event of recovery. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A computing apparatus, comprising:
-
a processor; a volatile memory; a persistent memory; and a non-transitory, machine-readable storage medium storing instructions that, when executed by the processor, perform a method comprising; storing data in a key-value store residing in the persistent memory, the key-value store including a plurality of persistent nodes including key-value pairs, the key-value pairs of the persistent nodes being unsorted; caching selected persistent nodes in the volatile memory, the key-value pairs of the cached nodes being sorted, the caching including instantiating a dual pointer for each cached node, the dual pointer including a volatile pointer to a child node of the cached node and a persistent pointer to the child node of the corresponding persistent node in the key-value store; and rebuilding the cache of selected nodes upon demand using the dual pointers in the event of recovery. - View Dependent Claims (10, 11, 12, 13, 14)
-
-
15. A storage system, comprising:
-
backend storage; an active controller that, in operation, controls the writing of data to and the reading of data from the backend storage, the active controller including; a persistent memory that, in operation, is populated using data from the backend storage; a key-value store residing in the persistent memory during operation and comprising a plurality of persistent nodes, each persistent node including a set of unsorted key-value pairs; a volatile memory; a cache of selected persistent nodes residing in the volatile memory during operation, the key-value pairs of the cached nodes being sorted; and a dual pointer for each cached node, the dual pointer including a volatile pointer to a child node of the cached node and a persistent pointer to the child node of the corresponding persistent node in the key-value store; a bridge; and a passive controller assuming control from the active controller upon failover from the active controller, and to which the transactions of the active controller are mirrored over the bridge. - View Dependent Claims (16, 17, 18, 19, 20)
-
Specification