IP Library Granted Patent US 9,715,504
Granted Patent B2
US 9,715,504 · App. 15/213,343 · Granted Jul 25, 2017

Retrieving data utilizing a distributed index

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,715,504
App. No.
15/213,343
Granted
Jul 25, 2017
Kind
B2
Abstract

A method includes receiving a request to retrieve a data object. The method further includes identifying an index file based on the search attribute. The method further includes entering a loop that includes: determining an address for a current index file; retrieving encoded data slices based on the address; decoding the encoded data slices to reproduce the current index file; determining whether the current index file includes the address for the data object; when the current index file does not include the address for the data object: identifying the other index file based on the search attribute; and repeating the loop for the other index file; and when the current index file includes the address for the data object, exiting the loop. The method further includes retrieving encoded data slices based on the address. The method further includes decoding the encoded data slices to recapture the data object.

Claims (92)

1. A method for execution by a processing module, the method comprises:

receiving a request to retrieve a data object, wherein the request includes a search attribute regarding the data object;

identifying an index file based on the search attribute;

entering a loop that includes:

determining a dispersed storage network (DSN) address for a current index file, wherein the current index file is the index file or another index file;

retrieving a set of encoded data slices from a DSN based on the DSN address;

decoding the set of encoded data slices to reproduce the current index file;

determining whether the current index file includes the DSN address for the data object;

when the current index file does not include the DSN address for the data object:

identifying the other index file from a plurality of index files indexed by the current index file based on the search attribute; and

repeating the loop for the other index file; and

when the current index file includes the DSN address for the data object, exiting the loop;

retrieving a plurality of sets of encoded data slices based on the DSN address for the data object; and

decoding the plurality of sets of encoded data slices to recapture the data object.

2. The method of claim 1 , wherein the identifying the index file comprises:

identifying the index file from one of a plurality of root index files based on the search attribute.

3. The method of claim 1 , wherein the identifying the other index file comprises:

comparing the search attribute to an index key associated with the other index file; and

identifying the other index file when the comparing is favorable.

4. The method of claim 1 , wherein the determining whether the current index file includes the DSN address comprises:

interpreting an index file type indicator of the current index file; and

when the index file type indicator of the current index file indicates that the current index file is a leaf node, determining that the current index file includes the DSN address.

5. The method of claim 1 , wherein the loop further comprises:

determining whether the current index file includes the data object; and

when the current index file includes the data object:

exiting the loop; and

responding to the request with the data object from the current index file.

6. A dispersed storage (DS) module comprises:

a first module, when operable within a computing device, causes the computing device to:

receive a request to retrieve a data object, wherein the request includes a search attribute regarding the data object;

a second module, when operable within the computing device, causes the computing device to:

determine a dispersed storage network (DSN) address for an index file based on the search attribute;

retrieve a set of encoded index data slices from a DSN based on the DSN address; and

decode the set of encoded index data slices to reconstruct the index file, wherein the index file includes a plurality of DSN child index addresses regarding a plurality of child index files;

a third module, when operable within the computing device, causes the computing device to:

identify one of the plurality of child index files based on the search attribute;

retrieve a set of encoded child index data slices from the DSN based on one of the plurality of DSN child index addresses corresponding to the one of the plurality of child index files; and

decode the set of encoded child index data slices to reconstruct the one of the plurality of child index files; and

a fourth module, when operable within the computing device, causes the computing device to:

determine whether the one of the plurality of child index files includes a DSN address for the data object;

when the one of the plurality of child index files includes the DSN address for the data object, retrieve a plurality of sets of encoded data slices based on the DSN address for the data object; and

decode the plurality of sets of encoded data slices to recapture the data object.

7. The DS module of claim 6 , wherein the second module functions to identify the one of the plurality of child index files by:

comparing the search attribute to an index key associated with the one of the plurality of child index files; and

identifying the one of the plurality of child index files when the comparing is favorable.

8. The DS module of claim 6 , wherein the fourth module functions to determine whether the one of the plurality of child index files includes the DSN address by:

interpreting an index file type indicator of the one of the plurality child of index files; and

when the index file type indicator indicates that the one of the plurality of child index files is a leaf node, determining that the one of the plurality of child index files includes the DSN address.

9. The DS module of claim 6 further comprises:

the fourth module further functions to:

determine whether the one of the plurality of child index files includes the data object; and

when the one of the plurality of child index files includes the data object, respond to the request with the data object from the one of the plurality of child index files.

10. The DS module of claim 6 further comprises:

the fourth module further functions to, when the one of the plurality of child index files does not include the DSN address for the data object, enter a loop where the fourth module functions to:

identify, from the one of the plurality of child index files, one of another plurality of child index files based on the search attribute;

retrieve another set of encoded child data slices from the DSN based on one of another plurality of DSN child index addresses corresponding to the one of the other plurality of child index files;

decode the other set of encoded child data slices to reproduce the one of the other plurality of child index files;

determine whether the one of the other plurality of child index files includes the DSN address for the data object;

when the one of the other plurality child index files does not include the DSN address for the data object, repeat in accordance with the one of the other plurality child index files; and

when the one of the other plurality of child index files includes the DSN address for the data object, exit the loop.

11. A dispersed storage (DS) module comprises:

a first module, when operable within a computing device, causes the computing device to:

receive a request to retrieve a data object, wherein the request includes a search attribute regarding the data object;

a second module, when operable within the computing device, causes the computing device to:

identify an index file based on the search attribute;

a third module, when operable within the computing device, causes the computing device to:

enter a loop where the third module functions to:

determine a distributed storage network (DSN) address for a current index file, wherein the current index file is the index file or another index file;

retrieve a set of encoded data slices from a DSN based on the DSN address;

decode the set of encoded data slices to reproduce the current index file;

determine whether the current index file includes the DSN address for the data object;

when the current index file does not include the DSN address for the data object:

identify the other index file from a plurality of index files indexed by the current index file based on the search attribute; and

repeat the loop for the other index file; and

when the current index file includes the DSN address for the data object, exit the loop; and

a fourth module, when operable within the computing device, causes the computing device to:

retrieve a plurality of sets of encoded data slices based on the DSN address for the data object; and

decode the plurality of sets of encoded data slices to recapture the data object.

12. The DS module of claim 11 , wherein the second module functions to identify the index file by:

identifying the index file from one of a plurality of root index files based on the search attribute.

13. The DS module of claim 11 , wherein the third module functions to identify the other index file by:

comparing the search attribute to an index key associated with the other index file; and

identifying the other index file when the comparing is favorable.

14. The DS module of claim 11 , wherein the third module functions to determine whether the current index file includes the DSN address by:

interpreting an index file type indicator of the current index file; and

when the index file type indicator indicates that the current index file is a leaf node, determining that the current index file includes the DSN address.

15. The DS module of claim 11 , wherein the loop further comprises:

the third module further functions to:

determine whether the current index file includes the data object; and

when the current index file includes the data object:

exit the loop; and

respond to the request with the data object from the current index file.

Assignments (6)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS Recorded Jun 11, 2025
From: BARCLAYS BANK PLC, AS ADMINISTRATIVE AGENT
To: PURE STORAGE, INC.
Reel/Frame 071558/0523 →
SECURITY INTEREST Recorded Aug 26, 2020
From: PURE STORAGE, INC.
To: BARCLAYS BANK PLC AS ADMINISTRATIVE AGENT
Reel/Frame 053867/0581 →
CORRECTIVE ASSIGNMENT TO CORRECT THE 9992063 AND 10334045 LISTED IN ERROR PREVIOUSLY RECORDED ON REEL 049556 FRAME 0012. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNOR HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jan 14, 2020
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 052205/0705 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2019
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 049556/0012 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 30, 2017
From: DHUSE, GREG; LEGGETTE, WESLEY; GRAY, ADAM MICHAEL; VOLVOVSKI, ILYA; BAPTIST, ANDREW
To: CLEVERSAFE, INC.
Reel/Frame 041120/0951 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 30, 2017
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 041554/0154 →