# US 2014/0195564 A1 · Persistent data structures

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2014/0195564 A1
- Document ID: US20140195564A1
- Status: Published application
- Kind: A1
- Application number: 14/207,002
- Filed: 2014-03-12
- Published: 2014-07-10
- Earliest claimed: 2010-12-13
- Assignees: Fusion-Io, Inc.
- Applicants: Fusion-io, Inc.
- Inventors: Nisha Talagala; Swaminathan Sundararaman; David Flynn
- Web page: https://patentgrep.com/patent/US20140195564A1

## CPC

- G06F 12/0804: with main memory updating (G06F12/0806 takes precedence)
- G06F 11/141: {for bus or memory accesses}
- G06F 11/2015: {Redundant power supplies (power supply failure G06F1/30)}
- G06F 12/0238: {Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory}
- G06F 2212/202: Non-volatile memory
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Apparatuses, systems, methods, and computer program products are disclosed for a persistent data structure. A method includes associating a logical identifier with a data structure. A method includes writing data of a data structure to a first region of a volatile memory module. A volatile memory module may be configured to ensure that data is preserved in response to a trigger. A method includes copying data of a data structure from a volatile memory module to a non-volatile storage medium such that the data of the data structure remains associated with a logical identifier.

## Claims

### Claim 1

A method comprising:
associating a logical identifier with a data structure;
writing data of the data structure to a first region of a volatile memory module, the volatile memory module configured to ensure that the data is preserved in response to a trigger; and
copying the data of the data structure from the volatile memory module to a non-volatile storage medium such that the data of the data structure remains associated with the logical identifier.

### Claim 2 (depends on 1)

The method of claim 1, further comprising writing additional data of the data structure to a second region of the volatile memory module while copying the data from the first region of the volatile memory module.

### Claim 3 (depends on 2)

The method of claim 2, further comprising alternating between writing data of the data structure to the first region and the second region while copying data from the other of the first region and the second region.

### Claim 4 (depends on 1)

The method of claim 1, further comprising enforcing one or more rules for the data structure.

### Claim 5 (depends on 4)

The method of claim 4, wherein the data structure comprises a log data structure, the one or more rules define the log data structure as sequential and append-only, and enforcing the one or more rules comprises preventing writes to the log data structure other than append operations.

### Claim 6 (depends on 1)

The method of claim 1, further comprising tracking which data of the data structure resides in the volatile memory module and which data of the data structure resides in the non-volatile storage medium.

### Claim 7 (depends on 6)

The method of claim 6, further comprising providing access to the data of the data structure residing in the volatile memory module and the data of the data structure stored in the non-volatile storage medium using the logical identifier.

### Claim 8 (depends on 1)

The method of claim 1, further comprising limiting a rate at which data of the data structure is written to the volatile memory module such that the rate is at or below a rate at which data of the data structure is copied to the non-volatile storage medium.

### Claim 9 (depends on 1)

The method of claim 1, further comprising increasing a transfer rate in response to an increase in an input rate, the input rate comprising a rate at which data of the data structure is written to the volatile memory module, the transfer rate comprising a rate at which data of the data structure is copied to the non-volatile storage medium.

### Claim 10 (depends on 9)

The method of claim 9, wherein the transfer rate is increased by increasing a quantity of data copied to the non-volatile storage medium per transfer operation in response to the input rate being below a threshold, the transfer rate increased by increasing a number of parallel processes copying data in response to the input rate being above the threshold.

### Claim 11 (depends on 1)

The method of claim 1, wherein copying the data of the data structure from the volatile memory module to the non-volatile storage medium is in response to one or more of an amount of data of the data structure written to the volatile memory module satisfying a threshold, an elapsed time period, a notification provided by a monitoring device associated with the volatile memory module, and a request from a client.

### Claim 12 (depends on 1)

The method of claim 1, wherein the data structure comprises at least one of a log, a queue, a stack, a tree, a linked-list, a hash, an array, a heap, and a graph data structure.

### Claim 13 (depends on 1)

The method of claim 1, further comprising one or more of:
opening the data structure in response to an open request from a client;
writing the data of the data structure to the volatile memory module in response to a write request from a client;
copying the data of the data structure from the volatile memory module to the non-volatile storage medium in response to a synchronize request from a client;
closing the data structure in response to a close request from a client;
mapping the first region of the volatile memory module into virtual memory of a client in response to a map request from a client; and
allocating the first region of the volatile memory module for the data structure in response to an allocation request from a client.

### Claim 14 (depends on 1)

The method of claim 1, wherein the logical identifier comprises a filename of a file system, the data structure accessible as a file of the file system.

### Claim 15 (depends on 1)

The method of claim 1, wherein the volatile memory module comprises a byte addressable write-in-place memory device and the non-volatile storage medium comprises a block addressable storage device.

### Claim 16

An apparatus comprising:
an allocation module configured to initialize a persistent transaction log in response to a request;
a write module configured to append data to the persistent transaction log by writing the appended data to a volatile memory configured to ensure persistence of the data; and
an enforcement module configured to enforce one or more rules preventing data from being overwritten in the persistent transaction log.

### Claim 17 (depends on 16)

The apparatus of claim 16, further comprising a destage module configured to write the appended data from the volatile memory to a non-volatile memory medium at a rate such that the appended data does not overrun the volatile memory.

### Claim 18 (depends on 17)

The apparatus of claim 17, wherein the volatile memory is configured to alternate between two or more memory buffers for storing appended data and the destage module is configured to write appended data to the non-volatile memory medium from a memory buffer to which data is not currently being written.

### Claim 19

An apparatus comprising:
means for satisfying one or more requests for a persistent data structure, the persistent data structure comprising data stored in a volatile buffer and data stored in a non-volatile recording medium;
means for committing the data stored in the volatile buffer to the non-volatile recording medium; and
means for providing access to the persistent data structure from the non-volatile recording medium after a restart event using a logical identifier associated with the persistent data structure.

### Claim 20 (depends on 19)

The apparatus of claim 19, further comprising means for enforcing an append-only rule for the data structure such that data of the data structure is not overwritten.
