IP Library Granted Patent US 10,142,417
Granted Patent B2
US 10,142,417 · App. 14/824,536 · Granted Nov 27, 2018

System and method for managing heterogeneous data for cloud computing applications

Inventors: Stephen M. Hebert (Houston, TX); Leonardo E. Reiter (Allen, TX)
Assignee: Nimbix, Inc.
H04L67/1097G06F3/06G06F9/5072G06F17/30091
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 10,142,417
App. No.
14/824,536
Granted
Nov 27, 2018
Kind
B2
Abstract

A method, system, and computer-readable storage medium for managing heterogeneous data for cloud computing applications are disclosed. For example, a method involves identifying data to be used by an application. Such data includes a first subset of data stored in first storage element. The first subset of data is stored according to a first storage architecture, which organizes the first subset of data in a first form that is not compatible with the application. The method also involves generating a workflow. The generated workflow is configured to cause a compute node to retrieve the first subset of data and process the first subset of data to be organized in a second form that is compatible with the application. The workflow is also configured to cause the compute node to execute the application and update the first subset of data stored in the first storage element. The method further involves transmitting the workflow to the compute node for execution of the application therein, using the data.

Claims (181)

1. A method, implemented in a computer system, comprising:

identifying, by a processor of the computer system, data to be used by an application to be executed by one or more compute nodes of a plurality of compute nodes, wherein

the computer system is configured to be coupled to the plurality of compute nodes,

the data comprises a first subset of data,

the first subset of data is stored in a first storage element of a remote computer system,

the first subset of data is stored in a first form,

the remote computer system is remote from the computer system by virtue of the computer system being further configured to be coupled to the remote computer system by a network, and

the plurality of compute nodes does not comprise the remote computer system;

generating, by the processor, a workflow at the computer system, wherein

the workflow is configured to configure each of the one or more compute nodes to communicate with the remote computer system via the network, and

the workflow is configured to cause the one or more compute nodes to

determine whether the first form is compatible with the application,

in response to a determination that the first form is compatible with the application,

mount the first subset of data on at least one of the plurality of compute nodes, such that the first subset of data is accessible by the application via the network, without retrieval of the first subset of data from the first storage element, and

update the first subset of data by executing the application on the first subset of data, and

in response to a determination that the first form is not compatible with the application,

retrieve the first subset of data from the first storage element, via the network,

store the first subset of data in temporary storage at one or more of the compute nodes, as a stored first subset of data,

process the stored first subset of data to generate a processed first subset of data, wherein

 the processed first subset of data is generated by converting the stored first subset of data from the first form into a second form, and

 the second form is compatible with the application,

produce a result by executing the application, using the processed first subset of data, and

update the first subset of data, using the result; and

transmitting the workflow to the one or more compute nodes, wherein

the transmitting causes the one or more compute nodes to execute the application using at least a corresponding portion of the processed first subset of data.

2. The method of claim 1 , further comprising:

identifying a second subset of data, wherein

the first subset of data is stored using a first storage architecture,

the first storage architecture organizes the first subset of data in the first form,

the data comprises the second subset of data,

the second subset of data is stored in a second storage element,

the second subset of data is stored using a second storage architecture, and

the second storage architecture organizes data in a third form that is not compatible with the first form

the workflow is further configured to cause a compute node of the one or more compute nodes to retrieve the second subset of data,

process the second subset of data into the second form, and

update the second subset of data stored in the second storage element.

3. The method of claim 2 , wherein

the first subset of data is processed by

performing a first abstraction of the first subset of data to be in the second form that is compatible with the application; and

the first subset of data is updated by

performing a second abstraction for an updated version of the first subset of data to be in the first form.

4. The method of claim 3 , wherein

the first subset of data is processed by

sharing the first subset of data with a second compute node, wherein

the workflow indicates that the first subset of data is to be shared with the second compute node, and

the sharing is performed by

mounting the first storage element or the temporary storage on the compute node, and

exporting the first subset of data to the second compute node; and

the first subset of data is updated by

removing the export of the first subset of data to the second compute node, and

unmounting the first storage element or the temporary storage from the compute node.

5. The method of claim 3 , wherein

the first subset of data is processed by

decrypting at least a portion of data in the first subset of data; and

the first subset of data is updated by

encrypting an updated version of the at least the portion of the data in the first subset of data.

6. The method of claim 1 , wherein the first subset of data is retrieved from the first storage element by

accessing the first subset of data, wherein

the first subset of data is unmounted prior to determining whether the first form is compatible with the application, and

the first subset of data remains unmounted, in response to the determination that the first form is not compatible with the application.

7. The method of claim 1 , wherein

the workflow identifies the application,

the workflow indicates that the application is to be executed within a container, and

the workflow indicates that the first subset of data is to be updated after the application has completed execution.

8. The method of claim 1 , further comprising at least one of:

unmounting from the first storage element; or

copying an updated version of the processed first subset of data from the temporary storage to the first storage element.

9. The method of claim 1 , further comprising:

performing an abstraction of a second subset of data to be compatible with the first storage element, wherein

the first subset of data is stored using a first storage architecture,

the first storage architecture organizes the first subset of data in a first form that is not compatible with the application,

the data comprises the second subset of data,

the second subset of data is stored in a second storage element,

the second storage element is coupled to the first storage element, and

the first subset of data and the second subset of data are stored using similar storage architectures.

10. The method of claim 1 , further comprising:

copying the first subset of data in the first storage element to the temporary storage, even if the first storage element can be mounted on a compute node of the one or more compute nodes.

11. The method of claim 1 , wherein the first subset of data is updated by:

storing an updated version of the first subset of data in a second storage element.

12. The method of claim 1 , wherein

the first form is a storage architecture of file-level storage, object-level storage, or block-level storage.

13. The method of claim 12 , wherein

the second form is another storage architecture of the file-level storage, the object-level storage, or the block-level storage that is other than the storage architecture.

14. A system comprising:

a server, comprising

one or more processors, and

a server module, wherein

the server module is configured to

identify data to be used by an application to be executed by one or more compute nodes of a plurality of compute nodes, wherein

 the server is configured to be coupled to the plurality of compute nodes,

 the data comprises a first subset of data,

 the first subset of data is stored in a first storage element of a remote computer system,

 the first subset of data is stored in a first form,

 the remote computer system is remote from the server by virtue of the server being further configured to be coupled to the remote computer system by a network, and

 the plurality of compute nodes does not comprise the remote computer system,

generate a workflow at the server, wherein

 the workflow is configured to configure each of the one or more compute nodes to communicate with the remote computer system via the network, and

 the workflow is configured to cause the one or more compute nodes to

 determine whether the first form is compatible with the application,

 in response to a determination that the first form is compatible with the application,

 mount the first subset of data on at least one of the plurality of compute nodes, such that the first subset of data is accessible by the application via the network, without retrieval of the first subset of data from the first storage element, and

 update the first subset of data by executing the application on the first subset of data, and

 in response to a determination that the first form is not compatible with the application,

 retrieve the first subset of data from the first storage element, via the network,

 store the first subset of data in temporary storage at one or more of the compute nodes, as a stored first subset of data,

 process the stored first subset of data to generate a processed first subset of data, wherein

 the processed first subset of data is generated by converting the stored first subset of data from the first form into a second form, and

 the second form is compatible with the application,

 produce a result by executing the application, using the processed first subset of data, and

 update the first subset of data, using the result, and

transmit the workflow to the one or more compute nodes, wherein

 the workflow is configured to cause the one or more compute nodes to execute the application using at least a corresponding portion of the processed first subset of data.

15. The system of claim 14 , further comprising:

a compute node of the one or more compute nodes, wherein

the compute node is configured to retrieve the first subset of data by performing at least one of

upon the first subset of data being mounted on the compute node, accessing the first subset of data from via the network, or

upon the stored first subset of data being processed, accessing the processed first subset of data.

16. The system of claim 14 , further comprising:

a compute node of the one or more compute nodes, wherein

the compute node is configured to process the first subset of data by performing a first abstraction of the first subset of data to be in a second form that is compatible with the application, and

the compute node is configured to update the first subset of data by performing a second abstraction for an updated version of the first subset of data to be in a first form.

17. The system of claim 16 , wherein

the compute node is further configured to process the first subset of data by sharing the first subset of data with a second compute node, wherein

the workflow indicates that the first subset of data is to be shared with the second compute node, and

the sharing is performed by

mounting the first storage element or the temporary storage on the compute node, and

exporting the first subset of data to the second compute node, and

the compute node is further configured to update the first subset of data by

removing the export of the first subset of data to the second compute node, and

unmounting the first storage element or the temporary storage from the compute node.

18. The system of claim 16 , wherein

the compute node is further configured to process the first subset of data by decrypting at least a portion of data in the first subset of data, and

the compute node is further configured to update the first subset of data by encrypting an updated version of the at least the portion of the data in the first subset of data.

19. The system of claim 14 , wherein

the workflow identifies the application,

the workflow indicates that the application is to be executed within a container, and

the workflow indicates that the first subset of data is to be updated after the application has completed execution.

20. A computer program product comprising:

a plurality of instructions, comprising

a first set of instructions, executable on a computer system, configured to identify data to be used by an application to be executed by one or more compute nodes of a plurality of compute nodes, wherein

the computer system is configured to be coupled to the plurality of compute nodes,

the data comprises a first subset of data,

the first subset of data is stored in a first storage element of a remote computer system,

the first subset of data is stored in a first form,

the remote computer system is remote from the computer system by virtue of the computer system being further configured to be coupled to the remote computer system by a network, and

the plurality of compute nodes does not comprise the remote computer system,

a second set of instructions, executable on the computer system,

configured to generate a workflow at the computer system, wherein

the workflow is configured to configure each of the one or more compute nodes to communicate with the remote computer system via the network, and

the workflow is configured to cause a compute node to

determine whether the first form is compatible with the application,

in response to a determination that the first form is compatible with the application,

 mount the first subset of data on at least one of the plurality of compute nodes, such that the first subset of data is accessible by the application via the network, without retrieval of the first subset of data from the first storage element, and

 update the first subset of data by executing the application on the first subset of data, and

in response to a determination that the first form is not compatible with the application,

 retrieve the first subset of data from the first storage element, via the network,

 store the first subset of data in temporary storage at one or more of the compute nodes, as a stored first subset of data,

 process the stored first subset of data to generate a processed first subset of data, wherein

 the processed first subset of data is generated by converting the stored first subset of data from the first form into a second form, and

 the second form is compatible with the application,

 produce a result by executing the application, using the processed first subset of data, and

 update the first subset of data stored in the first storage element, using the result; and

a third set of instructions, executable on the computer system, configured to transmit the workflow to the one or more compute nodes, wherein

the workflow is configured to cause the one or more compute nodes to execute the application using at least a corresponding portion of the processed first subset of data; and

a non-transitory computer-readable storage medium, wherein the plurality of instructions are encoded in the non-transitory computer-readable storage medium.

21. The computer program product of claim 20 , wherein

the second set of instructions is further configured to

upon the first subset of data being mounted on a compute node of the one or more compute nodes, access the first subset of data from the first storage element that is mounted on the compute node, or

upon the stored first subset of data being processed, access the processed first subset of data,

perform a first abstraction of the first subset of data to be in a second form that is compatible with the application, and

perform a second abstraction for an updated version of the first subset of data to be in a first form.

22. The computer program product of claim 21 , wherein

the second set of instructions is further configured to

cause the first subset of data to be shared with a second compute node, wherein

the workflow indicates that the first subset of data is to be shared with the second compute node, and

the first subset of data is shared by

mounting the first storage element or the temporary storage on the compute node, and

exporting the first subset of data to the second compute node,

removing the export of the first subset of data to the second compute node, and

unmounting the first storage element or the temporary storage from the compute node, wherein

the workflow indicates that the application is to be executed within a container.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 11, 2025
From: NIMBIX, INC.
To: BULL SAS
Reel/Frame 070825/0354 →
RELEASE OF SECURITY INTEREST Recorded Jul 30, 2021
From: COMERICA BANK
To: NIMBIX, INC.
Reel/Frame 057040/0865 →
SECURITY INTEREST Recorded Mar 29, 2018
From: NIMBIX, INC.
To: COMERICA BANK
Reel/Frame 045381/0976 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 12, 2015
From: HEBERT, STEPHEN M.; REITER, LEONARDO E.
To: NIMBIX, INC.
Reel/Frame 036311/0266 →
Continuity (1)
Related Publication 20170048318A1 · Feb 16, 2017