IP Library Granted Patent US 8,924,472
Granted Patent B1
US 8,924,472 · App. 13/590,080 · Granted Dec 30, 2014

Embedding application services in a distributed datastore

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 8,924,472
App. No.
13/590,080
Granted
Dec 30, 2014
Kind
B1
Abstract

Described embodiments provide systems and methods for building client server applications. The application server code is deployed within a distributed datastore and utilizes the datastore's data locality information to fulfill requests with minimal remote procedure calls (RPC), reduced transfer of data between servers, and shared data caches. The application server inherits the properties of the distributed datastore such as statefulness, replication and failover. Described embodiments also enable the fetching and processing of data in a “big data” environment—a system that contains multiple servers' worth of data, with improved time and bandwidth considerations.

Claims (68)

1. A computer system comprising:

at least one computer processor;

a plurality of storage servers, each storage server including a persistent storage device, each device including a database shard, database shards of the plurality of storage servers forming a distributed datastore;

a plurality of web containers, each web container embedded in and executed by one of the storage servers and configured to:

obtain locality information associated with data stored in the distributed datastore;

receive a client request for data in the distributed datastore, wherein the client request enters through a datastore service layer;

forward, based on the locality information, the client request to one of the database shards that includes the requested data;

retrieve, from the database shard in response to the client request, results of a command executed by application logic on a local data set by the database shard, the results including the requested data; and

return the retrieved data in response to the client request, wherein the client request is processed by an internal datastore API which utilizes a data locality lookup API plus a combination of local and remote storage access APIs.

2. The computer system of claim 1 , wherein the locality information describes a locality of the data within the database shards.

3. The computer system of claim 1 , wherein a piece of data stored in the distributed datastore is replicated across a plurality of the database shards.

4. The computer system of claim 1 , wherein each web container is configured to forward the client request to one of the database shards responsive to determining that the requested data is not stored in a local data set of a database shard included in the storage server in which the web container is embedded.

5. The computer system of claim 1 , wherein each web container is further configured to:

receive a second client request for data in the distributed datastore;

determine, based on the locality information, that the requested data is stored in a local data set of a database shard included in the storage server in which the web container is embedded;

retrieve the requested data from the local data set of the database shard included in the storage server in which the web container is embedded; and

return the retrieved data in response to the second client request.

6. The computer system of claim 1 , wherein each web container is further configured to connect to a client responsive to a connection between the client and another web container failing.

7. The computer system of claim 1 , wherein each web container is further configured to:

receive a second client request for data in the distributed datastore;

forward, based on the locality information, the client request to a plurality of the database shards that include the requested data;

receive, from the plurality of database shards, the requested data;

aggregate the data received from the plurality of database shards; and

return the aggregated data in response to the second client request.

8. A computer program product comprising a non-transitory computer-readable storage medium storing executable code of a plurality of web containers, each web container embedded in and executed by one of a plurality of storage servers including database shards forming a distributed datastore, the code when executed by at least one computer processor causes the computer processor to perform steps comprising:

obtaining locality information associated with data stored in the distributed datastore;

receiving a client request for data in the distributed datastore, wherein the client request enters through a datastore service layer;

forwarding, based on the locality information, the client request to one of the database shards that includes the requested data;

retrieving, from the database shard in response to the client request, results of a command executed by application logic on a local data set by the database shard, the results including the requested data; and

returning the retrieved data in response to the client request, wherein the client request is processed by an internal datastore API which utilizes a data locality lookup API plus a combination of local and remote storage access APIs.

9. The computer program product of claim 8 , wherein the locality information describes a locality of the data within the database shards.

10. The computer program product of claim 8 , wherein the code when executed by the least one compute processor causes the computer processor to perform further steps comprising:

forwarding the client request to one of the database shards responsive to determining that the requested data is not stored in a local data set of a database shard included in the storage server in which the web container is embedded.

11. The computer program product of claim 8 , wherein the code when executed by the least one compute processor causes the computer processor to perform further steps comprising:

receiving a second client request for data in the distributed datastore;

determining, based on the locality information, that the requested data is stored in a local data set of a database shard included in the storage server in which the web container is embedded;

retrieving the requested data from the local data set of the database shard included in the storage server in which the web container is embedded; and

returning the retrieved data in response to the second client request.

12. The computer program product of claim 8 , wherein the code when executed by the least one compute processor causes the computer processor to perform further steps comprising:

connecting to a client responsive to a connection between the client and another web container failing.

13. The computer program product of claim 8 , wherein the code when executed by the least one compute processor causes the computer processor to perform further steps comprising:

receiving a second client request for data in the distributed datastore;

forwarding, based on the locality information, the client request to a plurality of the database shards that includes the requested data;

receive, from the plurality of database shards, the requested data;

aggregate the data received from the plurality of database shards; and

return the aggregated data in response to the second client request.

14. In a computer system including a plurality of web containers each embedded in and executed by one of a plurality of storage servers including database shards forming a distributed datastore, a computer-implemented method comprising:

obtaining locality information associated with data stored in the distributed datastore;

receiving a client request associated with data in the distributed datastore, wherein the client request enters through a datastore service layer;

forwarding, based on the locality information, the client request to one of the database shards that includes the data;

retrieving, from the database shard in response to the client request, results of a command executed by application logic on a local data set by the database shard, the results including the requested data; and

returning the retrieved results in response to the client request, wherein the client request is processed by an internal datastore API which utilizes a data locality lookup API plus a combination of local and remote storage access APIs.

15. The computer-implemented method of claim 14 , wherein the locality information describes a locality of the data within the database shards.

16. The computer-implemented method of claim 14 , wherein forwarding the client request comprises:

forwarding the client request to one of the database shards responsive to determining that the data is not stored in a local data set of a database shard included in the storage server in which the web container is embedded.

17. The computer-implemented method of claim 14 , further comprising:

receiving a second client request for data in the distributed datastore;

determining, based on the locality information, that the requested data is stored in a local data set of a database shard included in the storage server in which the web container is embedded;

retrieving the requested data from the local data set of the database shard included in the storage server in which the web container is embedded; and

returning the retrieved data in response to the second client request.

18. The computer-implemented method of claim 14 , further comprising:

connecting to a client responsive to a connection between the client and another web container failing.

19. The computer-implemented method of claim 14 , further comprising:

receiving a second client request for data in the distributed datastore;

forwarding, based on the locality information, the client request to a plurality of the database shards that includes the requested data;

receive, from the plurality of database shards, the requested data;

aggregate the data received from the plurality of database shards; and

return the aggregated data in response to the second client request.

Assignments (8)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 9, 2025
From: DATASTAX, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 072198/0047 →
CORRECTIVE ASSIGNMENT TO CORRECT THE PROPERTY NUMBER 10148754 FROM APPLICATION NUMBER TO PATENT NUMBER PREVIOUSLY RECORDED ON REEL 71542 FRAME 865. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Aug 20, 2025
From: FIRST-CITIZENS BANK & TRUST COMPANY
To: DATASTAX, INC.
Reel/Frame 072491/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE PROPERTY NUMBER 10148754 FROM APPLICATION NUMBER TO PATENT NUMBER PREVIOUSLY RECORDED ON REEL 71535 FRAME 849. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Aug 20, 2025
From: FIRST-CITIZENS BANK & TRUST COMPANY
To: DATASTAX, INC.
Reel/Frame 072490/0899 →
RELEASE OF SECURITY INTEREST Recorded Jun 27, 2025
From: FIRST-CITIZENS BANK & TRUST COMPANY
To: DATASTAX, INC.
Reel/Frame 071542/0865 →
RELEASE OF SECURITY INTEREST Recorded Jun 26, 2025
From: FIRST-CITIZENS BANK & TRUST COMPANY
To: DATASTAX, INC.
Reel/Frame 071535/0849 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jun 26, 2019
From: DATASTAX, INC.
To: SILICON VALLEY BANK
Reel/Frame 049601/0124 →
SECURITY INTEREST Recorded Dec 9, 2016
From: DATASTAX, INC.
To: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
Reel/Frame 040702/0349 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 5, 2012
From: LUCIANI, T JAKE
To: DATASTAX, INC.
Reel/Frame 028898/0216 →