# US 11,451,627 B2 · System and method for content management with intelligent data store access across distributed stores

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

- Number: US 11,451,627 B2
- Document ID: US11451627B2
- Status: Granted
- Kind: B2
- Application number: 16/840,023
- Filed: 2020-04-03
- Published: 2021-10-07
- Granted: 2022-09-20
- Earliest claimed: 2020-04-03
- Assignees: Open Text Holdings, Inc.
- Applicants: Open Text Holdings, Inc.
- Inventors: Anitha Seshadri; Pulla Rayudu Garaga
- Web page: https://patentgrep.com/patent/US11451627B2

## CPC

- G06F 16/134: {Distributed indices}
- 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 16/13: File access structures, e.g. distributed indices (arrangements of input from, or output to, record carriers G06F3/06)
- G06F 16/182: Distributed file systems
- H04L 67/08: specially adapted for terminal emulation, e.g. Telnet
- H04L 67/1001: for accessing one among a plurality of replicated servers
- H04L 67/568: Storing data temporarily at an intermediate stage, e.g. caching
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A configuration object is provided to configure a server. The configuration object can include storage node information for a first set of storage nodes available to a server. The configuration object determines, from the storage node information, a second set of storage nodes for inclusion in a map. The configuration object maps each storage node in the second set of storage nodes to a different index value in a set of index values. The configuration object receives an object identifier for a first object, transforms the object identifier into a resulting index value in the set of index values and, based on a determination that a first storage node is mapped to the resulting index value in the map, selects the first storage node as a target storage node for servicing a request to perform a first operation with respect to the first object.

## Claims

### Claim 1

A computer program product comprising a non-transitory computer readable medium storing therein a set of computer executable instructions, the set of computer executable instructions comprising instructions for:
creating a configuration object having an associated type to which the configuration object applies and file store information for a first set of file stores available to a server;
receiving, by the server, a request to perform a first operation with respect to a first object associated with the associated type to which the configuration object applies;
using the configuration object, determining a second set of file stores, the second set of file stores being at least a subset of the first set of file stores;
creating a map that maps each file store in the second set of file stores to a different index value in a set of index values;
obtaining an object identifier for the first object;
transforming the object identifier into a resulting index value in the set of index values;
based on a determination that a first file store is mapped to the resulting index value in the map, selecting the first file store as a target file store for servicing the request to perform the first operation; and
servicing the request to perform the first operation using the target file store.

### Claim 2 (depends on 1)

The computer program product of claim 1, further comprising caching the configuration object at the server.

### Claim 3 (depends on 1)

The computer program product of claim 1, wherein the file store information for the first set of file stores includes an associated proximity value for each file store in the first set of file stores, and wherein determining the second set of file stores comprises:
determining a lowest proximity value associated with the first set of file stores; and
selecting as the second set of file stores, those file stores from the first set of file stores associated with the lowest proximity value.

### Claim 4 (depends on 1)

The computer program product of claim 1, wherein the file store information for the first set of file stores includes an associated access mode and an associated proximity value for each file store in the first set of file stores and wherein determining the second set of file stores comprises:
determining, as a third set of file stores, those file stores from the first set of file stores that support a first access mode;
determining a lowest proximity value associated with the third set of file stores; and
selecting as the second set of file stores, those file stores from the third set of file stores that are associated with the lowest proximity value.

### Claim 5 (depends on 1)

The computer program product of claim 1, wherein the set of computer executable instructions further comprises instructions for:
based on a determination that the request to perform the first operation could not be successfully serviced using the target file store, selecting a second file store from the second set of file stores as a failover file store; and
servicing the request to perform the first operation using the failover file store.

### Claim 6 (depends on 1)

The computer program product of claim 1, wherein the first object comprises associated object metadata and an associated content file and wherein servicing the request to perform the first operation using the target file store comprises storing the associated content file in the target file store and updating the associated object metadata in a database to include an identifier for the target file store.

### Claim 7 (depends on 1)

The computer program product of claim 1, wherein the first object comprises associated object metadata and an associated content file and wherein servicing the request to perform the first operation using the target file store comprises storing the associated content file in the target file store and updating the associated object metadata in a database to include an identifier for the configuration object.

### Claim 8 (depends on 7)

The computer program product of claim 7, wherein the set of computer executable instructions further comprises instructions for:
receiving, at the server, a request to perform a second operation with respect to the first object;
based on the request to perform the second operation, accessing the associated object metadata and reading the identifier for the configuration object;
based on the identifier for the configuration object, fetching the configuration object;
using the configuration object, determining a second file store from the first set of file stores to use to service the request to perform the second operation; and
servicing the request to perform the second operation using the second file store.

### Claim 9 (depends on 1)

The computer program product of claim 1, wherein the associated type is an object type or a content type.

### Claim 10 (depends on 1)

The computer program product of claim 1, wherein transforming the object identifier into the resulting index value from the set of index values comprises:
determining a number of file stores in the second set of file stores; and
applying a modulo operation to the object identifier using the number of file stores in the second set of file stores as an operator of the modulo operation to determine a remainder as the resulting index value.

### Claim 11

A method comprising:
providing a server, a database and a plurality of file stores, the server adapted to store content as objects having associated metadata and associated content files;
creating a configuration object having an associated type to which the configuration object applies and file store information for a first set of file stores available to the server;
receiving, at the server, a request to perform a first operation with respect to a first object associated with the associated type to which the configuration object applies;
using the configuration object, determining a second set of file stores, the second set of file stores being at least a subset of the first set of file stores;
creating a map that maps each file store in the second set of file stores to a different index value in a set of index values;
obtaining an object identifier for the first object;
transforming the object identifier into a resulting index value in the set of index values;
based on a determination that a first file store is mapped to the resulting index value in the map, select the first file store as a target file store for servicing the request to perform the first operation; and
servicing the request to perform the first operation using the target file store.

### Claim 12 (depends on 11)

The method of claim 11, further comprising caching the configuration object at the server.

### Claim 13 (depends on 11)

The method of claim 11, wherein the file store information for the first set of file stores includes an associated proximity value for each file store in the first set of file stores, and wherein determining the second set of file stores comprises:
determining a lowest proximity value associated with the first set of file stores; and
selecting as the second set of file stores, those file stores from the first set of file stores associated with the lowest proximity value.

### Claim 14 (depends on 11)

The method of claim 11, wherein the file store information for the first set of file stores includes an associated access mode and an associated proximity value for each file store in the first set of file stores and wherein determining the second set of file stores comprises:
determining, as a third set of file stores, those file stores from the first set of file stores that support a first access mode;
determining a lowest proximity value associated with the third set of file stores; and
selecting as the second set of file stores, those file stores from the third set of file stores that are associated with the lowest proximity value.

### Claim 15 (depends on 11)

The method of claim 11, wherein the map includes a failover file store.

### Claim 16 (depends on 11)

The method of claim 11, wherein the first object comprises associated object metadata and an associated content file and wherein servicing the request to perform the first operation using the target file store comprises storing the associated content file in the target file store and updating the associated object metadata in the database to include an identifier for the target file store.

### Claim 17 (depends on 11)

The method of claim 11, wherein the first object comprises associated object metadata and an associated content file and wherein servicing the request to perform the first operation using the target file store comprises storing the associated content file in the target file store and updating the associated object metadata in the database to include an identifier for the configuration object.

### Claim 18 (depends on 17)

The method of claim 17, further comprising:
receiving, by the server, a request to perform a second operation with respect to the first object;
based on the request to perform the second operation, accessing the associated object metadata and reading the identifier for the configuration object;
based on the identifier for the configuration object, fetching the configuration object;
using the configuration object to determine a second file store from the first set of file stores to use to service the request to perform the second operation; and
servicing the request to perform the second operation using the second file store.

### Claim 19 (depends on 11)

The method of claim 11, wherein the associated type is an object type or a content type.

### Claim 20 (depends on 11)

The method of claim 11, wherein transforming the object identifier into the resulting index value in the set of index values comprises:
determining a number of file stores in the second set of file stores; and
applying a modulo operation to the object identifier using the number of file stores in the second set of file stores as an operator of the modulo operation to determine a remainder as the resulting index value.

### Claim 21

A system for managing content comprising:
a database for storing object metadata;
a file store computer system for providing a plurality of file stores;
a server coupled to the database and file store computer system, the server comprising:
a processor;
a memory coupled to the processor, the memory storing therein a configuration object having a set of computer executable instructions, the configuration object having an associated type to which the configuration object applies and file store information for a first set of file stores available to the server, the set of computer executable instructions comprising instructions for:
receiving, by the server, a request to perform a first operation with respect to a first object associated with the associated type to which the configuration object applies;
using the configuration object, determining a second set of file stores, the second set of file stores being at least a subset of the first set of file stores;
creating a map that maps each file store in the second set of file stores to a different index value in a set of index values;
obtaining an object identifier for the first object;
transforming the object identifier into a resulting index value in the set of index values;
based on a determination that a first file store is mapped to the resulting index value in the map, selecting the first file store as a target file store for servicing the request to perform the first operation; and
servicing the request to perform the first operation using the target file store.
