# US 10,503,445 B2 · Data structure store and data management

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

- Number: US 10,503,445 B2
- Document ID: US10503445B2
- Status: Granted
- Kind: B2
- Application number: 15/078,929
- Filed: 2016-03-23
- Published: 2016-10-27
- Granted: 2019-12-10
- Earliest claimed: 2015-03-23
- Assignees: NetApp, Inc.
- Applicants: NetApp, Inc.
- Inventors: Anusha Sivananainthaperumal; Giridhar Appaji Nag Yasa; Ajay Vijay Bakre
- Web page: https://patentgrep.com/patent/US10503445B2

## CPC

- G06F 3/0685: {Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/064: {Management of blocks}
- G06F 3/0644: {Management of space entities, e.g. partitions, extents, pools}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 11/10: Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F 11/1004: {to protect a block of data words, e.g. CRC or checksum (G06F11/1076 takes precedence; security arrangements for protecting computers or computer systems against unauthorized activity G06F21/00)}
- G06F 11/1076: {Parity data used in redundant arrays of independent storages, e.g. in RAID systems}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

The instant disclosure provides a data structure store system and a method of managing data in the store. The method includes receiving, by a data structure store management system, a request for storing data from a client. In the created data structure, each data element includes a portion of the data. On receiving a read request for at least part of the data, the data structure store management system provides at least part of the data to a recipient device. The data elements are stored in persistent memory in the form of one or more non-volatile random access devices, wherein during a time interval between receiving the storing request and providing the at least part of the data by the data structure store management system to the recipient device, the data structure store management system provides no portion of the data for writing to a hard disk drive.

## Claims

### Claim 1

A method comprising:
receiving, by a computing device, a read request for at least part of data stored in a persistent memory comprising a non-volatile random access device;
obtaining, by the computing device, the requested at least part of the data from the persistent memory;
providing, by the computing device, the obtained at least part of the data to a client device, wherein during a time interval between the receiving, the obtaining and the providing, the at least part of the data is withheld from being written to a storage drive.

### Claim 2 (depends on 1)

The method as set forth in claim 1, wherein the at least part of the data is stored in two or more separated memory regions of the persistent memory.

### Claim 3 (depends on 1)

The method as set forth in claim 1, further comprising creating, by the computing device, a data structure in response to a request to store the at least part of the data, wherein the created data structure comprises a data handle provided to the client device.

### Claim 4 (depends on 3)

The method as set forth in claim 3, wherein the at least part of the data is encoded before it is stored in the data structure.

### Claim 5 (depends on 4)

The method as set forth in claim 4, wherein the at least part of the data is encoded using an Erasure Cording algorithm.

### Claim 6 (depends on 3)

The method as set forth in claim 3, further comprising incrementally receiving, by the computing device, parts of the data, each accompanied by the data handle of the data structure.

### Claim 7 (depends on 3)

The method as set forth in claim 3, further comprising receiving a plurality of requests, each accompanied by the data handle of the data structure.

### Claim 8 (depends on 7)

The method as set forth in claim 7, wherein at least two of the plurality of requests are received from different clients.

### Claim 9 (depends on 3)

The method as set forth in claim 3, wherein the created data structure comprises a reference to a data element associated with the at least part of the data, wherein the reference is used for maintaining integrity of the at least part of the data.

### Claim 10 (depends on 9)

The method as set forth in claim 9, wherein the reference is used for determining a location of a memory fault.

### Claim 11 (depends on 9)

The method as set forth in claim 9, wherein the reference is used to restore an order of the data portions after another reference has been corrupted.

### Claim 12 (depends on 9)

The method as set forth in claim 9, wherein at least the reference and one or more other references form a tree having nodes, wherein checksums related to the nodes are stored in the data structure and recalculated for memory fault detection.

### Claim 13

A non-transitory machine readable medium having stored thereon instructions for performing a method, comprising machine executable code which when executed by at least one machine, causes the machine to:
receive a read request for at least part of data stored in a persistent memory comprising a non-volatile random access device;
obtain the requested at least part of the data from the persistent memory; and
provide the obtained at least part of the data to a client device, wherein during a time interval between the receiving, the obtaining and the providing, the at least part of the data is withheld from being written to a storage drive.

### Claim 14 (depends on 13)

The medium as set forth in claim 13, wherein the at least part of the data is encoded using an Erasure Coding algorithm.

### Claim 15 (depends on 13)

The medium as set forth in claim 13, wherein the executable code, when executed by the machine, further causes the machine to create a data structure in response to a request to store the at least part of the data, wherein the created data structure comprises a data handle provided to the client device incrementally.

### Claim 16 (depends on 15)

The medium as set forth in claim 15, wherein the created data structure comprises a reference to a data element associated with the at least part of the data, wherein the reference is used for maintaining integrity of the at least part of the data.

### Claim 17

A computing device comprising:
a memory containing machine readable medium comprising machine executable code, and a processor coupled to the memory, the processor configured to execute the machine executable code to cause the processor to:
receive a read request for at least part of data stored in a persistent memory comprising a non-volatile random access device;
obtain the requested at least part of the data from the persistent memory; and
provide the obtained at least part of the data to a client device, wherein during a time interval between the receiving, the obtaining and the providing, the at least part of the data is withheld from being written to a storage drive.

### Claim 18 (depends on 17)

The computing device as set forth in claim 17, wherein the at least part of the data is encoded using an Erasure Coding algorithm.

### Claim 19 (depends on 17)

The computing device as set forth in claim 17, wherein the processsor is further configured to execute the machine executable code to cause the processor to create a data structure in response to a request to store the at least part of the data, wherein the created data structure comprises a data handle provided to the client device incrementally.

### Claim 20 (depends on 19)

The computing device as set forth in claim 19, wherein the created data structure comprises a reference to a data element associated with the at least part of the data, wherein the reference is used for maintaining integrity of the at least part of the data.
