Elastic data techniques for managing cache storage using RAM and flash-based memory
AssigneeOracle International Corporation
InventorsCameron Purdy, Christer Fahlgren, Gene Gleyzer
Life of this patent
Estimating the term…
Abstract
A set of data caching techniques are described which are used to seamlessly store data across both RAM and flash based memory. The techniques utilize a memory manager that includes a RAM journal and a flash journal to efficiently store the data and to make the management of the data across both mediums transparent to the user. The flash based journal works in conjunction with the RAM journal and takes the overflow of data from the RAM journal when certain capacity limits are reached. The resource manager uses journaling techniques to write data to the cache and manages the garbage collection created by the data journaling.
Claims19
A method for storing and caching data in computing environments, said method comprising:
- compressing a set of primary keys into a tree data structure that provides an index into data entries stored in either random access memory (RAM) or flash-based memory, wherein each primary key is a reference to a data entry in a memory block stored in said RAM or said flash-based memory, wherein the data entries further include a set of primary data entries and a set of backup data entries, wherein both said primary data entries and said backup data entries are written to said RAM until said RAM reaches a predetermined capacity threshold;
- receiving a set of state changes to the data entries;
- re-linking the primary keys associated with the modified data entries to reference new values;
- batching the state changes until enough data is modified to warrant performing a full write of a new memory block;
- and
- journaling the batch of state changes by appending the new memory block to the RAM or the flash memory storing the data entries.
A system for storing and caching data in computing environments, said system comprising:
- a random access memory (RAM);
- a solid state disk (SSD);
- and
- a resource manager that writes data to said RAM and said SSD using data journaling that records state changes as a sequence of new data entries while maintaining stale data entries in storage, wherein if the resource manager exceeds space in RAM, the resource manager writes said data to the SSD using said data journaling,
- wherein the data entries further include a set of primary data entries and a set of backup data entries, wherein the resource manager writes both said primary data entries and said backup data entries to said RAM until said RAM reaches a predetermined capacity threshold.
A non-transitory computer readable storage medium storing a set of instructions executed by one or more hardware processors to perform a set of steps comprising:
- compressing a set of primary keys into a tree data structure that provides an index into data entries stored in either random access memory (RAM) or flash memory, wherein each primary key is a reference to a data entry in a memory block stored in said RAM or said flash memory, wherein the data entries further include a set of primary data entries and a set of backup data entries, wherein both said primary data entries and said backup data entries are written to said RAM until said RAM reaches a predetermined capacity threshold;
- receiving a set of state changes to the data entries;
- batching the state changes until enough data is modified to warrant performing a full write of a new memory block;
- journaling the batch of state changes by appending the new memory block to the RAM or the flash memory storing the data entries;
- and
- re-linking the primary keys associated with the modified data entries to reference the new memory block.
A method for storing and caching data in computing environments, said method comprising:
- compressing a set of primary keys into a tree data structure that provides an index into data entries stored in either random access memory (RAM) or flash-based memory, wherein each primary key is a reference to a data entry in a memory block stored in said RAM or said flash-based memory, wherein data entries that are smaller than a predetermined threshold limit are stored directly into the tree data structure, and data entries larger than said threshold limit are stored into memory blocks referenced by the primary keys in the tree data structure;
- receiving a set of state changes to the data entries;
- re-linking the primary keys associated with the modified data entries to reference new values;
- batching the state changes until enough data is modified to warrant performing a full write of a new memory block;
- and
- journaling the batch of state changes by appending the new memory block to the RAM or the flash memory storing the data entries.
A system for storing and caching data in computing environments, said system comprising:
- a random access memory (RAM);
- a solid state disk (SSD);
- and
- a resource manager that writes data to said RAM and said SSD using data journaling that records state changes as a sequence of new data entries while maintaining stale data entries in storage, wherein if the resource manager exceeds space in RAM, the resource manager writes said data to the SSD using said data journaling,
- wherein the resource manager compresses a set of primary keys associated with said data entries into a tree data structure, and wherein the resource manager stores data entries that are smaller than a predetermined threshold limit directly into the tree data structure and stores data entries larger than said threshold limit into the memory blocks referenced by the primary keys of the tree data structure.
A non-transitory computer readable storage medium storing a set of instructions executed by one or more hardware processors to perform a set of steps comprising:
- compressing a set of primary keys into a tree data structure that provides an index into data entries stored in either random access memory (RAM) or flash memory, wherein each primary key is a reference to a data entry in a memory block stored in said RAM or said flash memory, wherein data entries that are smaller than a predetermined threshold limit are stored directly into the tree data structure, and data entries larger than said threshold limit are stored into memory blocks referenced by the primary keys in the tree data structure;
- receiving a set of state changes to the data entries;
- batching the state changes until enough data is modified to warrant performing a full write of a new memory block;
- journaling the batch of state changes by appending the new memory block to the RAM or the flash memory storing the data entries;
- and
- re-linking the primary keys associated with the modified data entries to reference the new memory block.
Dependencies are inferred from the claim text.