# US 10,873,629 B2 · System and method of implementing an object storage infrastructure for cloud-based services

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

- Number: US 10,873,629 B2
- Document ID: US10873629B2
- Status: Granted
- Kind: B2
- Application number: 15/956,596
- Filed: 2018-04-18
- Published: 2018-08-23
- Granted: 2020-12-22
- Earliest claimed: 2015-08-12
- Assignees: Egnyte, Inc.
- Applicants: Egnyte, Inc.
- Inventors: Sachin Shetty; Krishna Sankar; Amrit Jassal; Kalpesh Patel; Shishir Sharma
- Web page: https://patentgrep.com/patent/US10873629B2

## CPC

- H04L 67/1097: for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
- G06F 11/1402: {Saving, restoring, recovering or retrying}
- G06F 11/142: {Reconfiguring to eliminate the error (group management mechanisms in a peer-to-peer network H04L67/1044)}
- G06F 11/1464: {for networked environments}
- G06F 11/2094: {Redundant storage or storage space (G06F11/2056 takes precedence)}
- G06F 11/2097: {maintaining the standby controller/processing unit updated (initialisation or re-synchronisation thereof G06F11/1658 and subgroups)}
- G06F 16/162: {Delete operations (erasing in storage systems G06F3/0652)}
- G06F 16/182: Distributed file systems
- G06F 16/183: {Provision of network file services by network file servers, e.g. by using NFS, CIFS (network file access protocols H04L67/1097)}
- G06F 16/188: Virtual file systems
- G06F 16/951: Indexing; Web crawling techniques
- G06F 16/953: Querying, e.g. by the use of web search engines
- G06F 16/955: using information identifiers, e.g. uniform resource locators [URL]
- H04L 67/02: based on web technology, e.g. hypertext transfer protocol [HTTP]
- H04L 67/10: in which an application is distributed across nodes in the network (software deployment G06F8/60; multiprogramming arrangements G06F9/46)
- H04L 67/1001: for accessing one among a plurality of replicated servers
- H04L 67/1095: Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
- H04L 67/141: Setup of application sessions (admission control or resource allocation in data switching networks H04L47/70)
- G06F 11/1453: {using de-duplication of the data}
- G06F 11/2023: {Failover techniques}
- G06F 11/3409: {for performance assessment}
- G06F 2201/80: Database-specific techniques
- G06F 2201/815: Virtual
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method for storing objects in an object storage system includes the steps of establishing a network connection with a client over an inter-network, receiving an upload request indicating an object to be uploaded by the client, selecting at least two storage nodes on which the object will be stored, receiving the object from the client via the network connection, and streaming the object to each of the selected storage nodes such that the object is stored on each of the selected storage nodes. The method can also include writing an object record associating the object and the selected storage nodes to a shard of an object database and generating a Universally Unique Identifier (UUID). The UUID indicates the shard and the object ID of the object record, such that the object record can be quickly retrieved. Object storage infrastructures are also disclosed.

## Claims

### Claim 1

In an object storage system, a method for storing digital objects of a client, said method comprising:
establishing a network connection with a client system over an inter-network;
receiving an upload request via said network connection, said upload request requesting that a digital object be uploaded from said client system;
selecting at least one storage node from a set of storage nodes, said digital object to be stored on said selected storage node;
receiving said digital object from said client system via said network connection;
determining whether said digital object was previously stored on said selected storage node; and
preventing retention of multiple copies of said digital object on said selected storage node; and wherein
said step of receiving said digital object includes storing said digital object on said selected storage node;
said step of determining whether said digital object was previously stored on said selected storage node includes analyzing said digital object as it is stored on said selected storage node; and
said step of analyzing said digital object includes generating a hash value associated with said digital object and storing said hash value in an object record indicative of said digital object.

### Claim 2 (depends on 1)

The method of claim 1, wherein:
said set of storage nodes includes a plurality of storage nodes;
said step of selecting at least one storage node from a set of storage nodes includes selecting multiple storage nodes from said set of storage nodes;
said step of determining whether said digital object was previously stored on said selected storage node includes determining whether said digital object was previously stored on any of said selected storage nodes; and
said step of preventing retention of multiple copies of said digital object on said selected storage node includes preventing retention of multiple copies of said digital object on any of said selected storage nodes.

### Claim 3 (depends on 2)

The method of claim 2, further comprising:
generating a new object record associated with said digital object; and
modifying said new object record according to an existing object record associated with an existing digital object that is identical to said digital object and was previously stored on at least one of said selected storage nodes.

### Claim 4 (depends on 3)

The method of claim 3, wherein said step of generating a new object record associated with said digital object includes associating said new object record with said existing object record.

### Claim 5 (depends on 2)

The method of claim 2, wherein said step of selecting multiple storage nodes from said set of storage nodes includes selecting at least one storage node hosted on another Internet cloud system other than said object storage system.

### Claim 6 (depends on 1)

The method of claim 1, wherein:
said step of receiving said digital object includes storing said digital object on said selected storage node; and
said step of preventing retention of multiple copies of said digital object on said selected storage node includes, if said digital object was previously stored on said selected storage node, removing said digital object or said previously stored copy of said digital object.

### Claim 7 (depends on 1)

The method of claim 1, wherein:
said step of generating a hash value associated with said digital object includes generating a checksum associated with said digital object; and
said step of storing said hash value in an object record includes storing said checksum in an object record indicative of said digital object.

### Claim 8 (depends on 7)

The method of claim 7, wherein said step of determining if said digital object is already stored on any of said selected storage nodes includes searching object records associated with objects stored on said selected storage node for a second checksum associated with a second digital object, said second checksum being identical to said checksum.

### Claim 9 (depends on 8)

The method of claim 8, wherein said step of generating a checksum includes generating the checksum utilizing a hash function.

### Claim 10 (depends on 1)

The method of claim 1, further comprising:
generating an encrypted object from said digital object after said step of analyzing said digital object; and wherein
said step of storing said digital object on said selected storage node includes storing said encrypted object.

### Claim 11 (depends on 1)

The method of claim 1, wherein said step of analyzing said digital object includes generating information from said digital object.

### Claim 12

An object storage system, comprising:
a set of storage nodes for storing digital objects associated with clients; and
at least one client application server being operative to
establish a network connection with a client system over an inter-network,
receive an upload request via said network connection, said upload request requesting that a digital object be uploaded from said client system,
select at least one storage node from said set of storage nodes, said digital object to be stored on said selected storage node,
receive said digital object from said client system via said network connection,
determine whether said digital object was previously stored on said selected storage node,
prevent retention of multiple copies of said digital object on said selected storage node,
store said digital object on said selected storage node,
determine whether said digital object was previously stored on said selected storage node by analyzing said digital object as it is stored on said selected storage node,
generate a hash value associated with said digital object, and
store said hash value in an object record indicative of said digital object.

### Claim 13 (depends on 12)

The system of claim 12, wherein said set of storage nodes includes a plurality of storage nodes and said client application server is further operative to:
select multiple storage nodes from said set of storage nodes, said digital object to be stored on said selected storage nodes;
determine whether said digital object was previously stored on any of said selected storage nodes; and
prevent retention of multiple copies of said digital object on any of said selected storage nodes.

### Claim 14 (depends on 13)

The system of claim 13, wherein said client application server is further operative to:
generate a new object record associated with said digital object; and
modify said new object record according to an existing object record associated with an existing digital object that is identical to said digital object and was previously stored on at least one of said selected storage nodes.

### Claim 15 (depends on 14)

The system of claim 14, wherein said client application server is operative to modify said new object record by associating said new object record with said existing object record.

### Claim 16 (depends on 13)

The system of claim 13, wherein said client application server is configured to select at least one storage node hosted on another Internet cloud system other than said object storage system.

### Claim 17 (depends on 12)

The system of claim 12, wherein said client application server is further operative to:
store said digital object on said selected storage node; and
if said digital object was previously stored on said selected storage node, remove said digital object or said previously stored copy of said digital object.

### Claim 18 (depends on 12)

The system of claim 12, wherein
said hash value is a checksum.

### Claim 19 (depends on 18)

The system of claim 18, wherein said client application server searches object records associated with objects stored on said selected storage node for a second checksum associated with a second digital object, said second checksum being identical to said checksum.

### Claim 20 (depends on 19)

The system of claim 19, wherein said client application server generates the checksum utilizing a SHA512 hash function.

### Claim 21 (depends on 12)

The system of claim 12, wherein said client application server is further operative to:
generate an encrypted object from said digital object after analyzing said digital object; and wherein
storing said digital object on said selected storage node includes storing said encrypted object.

### Claim 22 (depends on 12)

The system of claim 12, wherein analyzing said digital object includes generating information from said digital object.

### Claim 23

A non-transitory, electronically-readable storage medium having code embodied therein for causing an electronic device to:
establish a network connection with a client system over an inter-network;
receive an upload request via said network connection, said upload request requesting that a digital object be uploaded from said client system;
select at least one storage node from a set of storage nodes, said digital object to be stored on said selected storage node;
receive said digital object from said client system via said network connection;
determine whether said digital object was previously stored on said selected storage node;
prevent retention of multiple copies of said digital object on said selected storage node;
store said digital object on said selected storage node;
determine whether said digital object was previously stored on said selected storage node by analyzing said digital object as it is stored on said selected storage node;
generate a hash value associated with said digital object; and
store said hash value in an object record indicative of said digital object.
