IP Library Granted Patent US 8,972,488
Granted Patent B2
US 8,972,488 · App. 13/247,371 · Granted Mar 3, 2015

System, methods, and media for providing in-memory non-relational databases

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,972,488
App. No.
13/247,371
Granted
Mar 3, 2015
Kind
B2
Abstract

Providing a first control process that executes in a hardware processor, providing a first server process that executes in a hardware processor, that responds to write requests by storing objects in in-memory, non-relational data store, and that responds to read requests by providing objects from in-memory, non-relational data store, wherein the objects each have an object size; forming a plurality of persistent connections between the first control process and the first server process; using the first control process, pipelining, using a pipeline having a pipeline size, requests that include the read requests and the write requests over at least one of the plurality of persistent connections; using the first control process, adjusting the number of plurality of persistent connections and the pipeline size based on an average of the object sizes; and using the first control process, prioritizing requests by request type based on anticipated load from the requests.

Claims (92)

1. A method for providing an in-memory, non-relational database, comprising:

providing a first control process that executes in a hardware processor;

providing a first server process that executes in a hardware processor, that responds to write requests by storing objects in in-memory, non-relational data store, and that responds to read requests by providing objects from in-memory, non-relational data store, wherein the objects each have an object size;

forming a plurality of persistent connections between the first control process and the first server process;

using the first control process, pipelining, using a pipeline having a pipeline size, requests that include the read requests and the write requests over at least one of the plurality of persistent connections;

using the first control process, adjusting the number of plurality of persistent connections and the pipeline size based on an average of the object sizes; and

using the first control process, prioritizing requests by request type based on anticipated load from the requests.

2. The method of claim 1 , wherein the number of plurality of persistent connections increases and the pipeline size decreases, when the average of the object sizes is above a first threshold.

3. The method of claim 1 , wherein the number of plurality of persistent connections decreases and the pipeline size increases, when the average of the object sizes is below a second threshold.

4. The method of claim 1 , further comprising:

determining that at least a portion of a user dataset provided by the first server process needs to be rebalanced at a point in time;

causing the first server process to rebalance at least a part of the at least a portion of the user dataset to a second server process not providing a portion of the user dataset at the point in time; and

directing requests corresponding to the at least east a part of the at least a portion of the user dataset to the second, server process.

5. The method of claim 1 , further comprising:

determining that at least a portion of a user dataset provided by the first server process needs to be rebalanced at a point in time;

causing the first server process to rebalance at least a part of the at least a portion of the user dataset to a second server process providing a portion of the user dataset at the point in time; and

directing requests corresponding to the at least a part of the at least a portion of the user dataset to the second server process.

6. The method of claim 1 , further comprising:

receiving a request to create a user dataset or to increase the size of a user dataset; and

adding a node to a cluster to provide resources responsive to the request.

7. The method of claim 1 , further comprising:

receiving a request to create a user dataset or to increase the size of a user dataset; and

provisioning resources responsive to the request using existing cluster nodes.

8. The method of claim 1 , further comprising:

receiving a request to delete a user dataset or to decrease the size of a user dataset; and

releasing resources responsive to the request.

9. The method of claim 1 , further comprising:

performing a rebalancing of a cluster so that resources of the cluster are substantially equally utilized across nodes of the cluster.

10. The method of claim 1 , further comprising:

determining that a user dataset provided by the first server process needs to be replicated; and

causing the first server process to replicate the user dataset to a second server process.

11. The method of claim 1 , further comprising:

redirecting a server-bound request from the first control process to a second control process; and

routing the server-bound request from the second control process to a second server process.

12. The method of claim 1 , further comprising:

communicating a write request for a write object from the first control process to a second control process executing in a cluster separate from the first control process over a network;

storing the write object using the first server process; and

storing the write object using a second server process in the cluster.

13. The method of claim 1 , further comprising:

providing a slave server process;

copying data changes from the first server process using the slave server process; and

storing the data changes in persistence storage.

14. A non-transitory computer-readable medium containing computer-executable instructions that, when executed by a processor, cause the processor to perform a method for providing an in-memory, non-relational database, the method comprising:

providing a first control process that executes in a hardware processor;

providing a first server process that executes in a hardware processor, that responds to write requests by storing objects in in-memory, non-relational data store, and that responds to read requests by providing objects from in-memory, non-relational data store, wherein the objects each have an object size;

forming a plurality of persistent connections between the first, control process and the first server process;

using the first control process, pipelining, using a pipeline having a pipeline size, requests that include the read requests and the write requests over at least one of the plurality of persistent connections;

using the first control process, adjusting the number of plurality of persistent connections and the pipeline size based on an average of the object sizes; and

using the first control process, prioritizing requests by request type based on anticipated load from the requests.

15. The non-transitory medium of claim 14 , wherein the number of plurality of persistent connections increases and the pipeline size decreases, when the average of the object sizes is above a first threshold.

16. The non-transitory medium of claim 14 , wherein the number of plurality of persistent connections decreases and the pipeline size increases, when the average of the object sizes is below a second threshold.

17. The non-transitory medium of claim 14 , the method further comprising:

determining that at least a portion of a user dataset provided by the first server process needs to be rebalanced at a point in time;

causing the first server process to rebalance at least a part of the at least a portion of the user dataset to a second server process not providing a portion of the user dataset at the point in time; and

directing requests corresponding to the at least a part of the at least a portion of the user dataset to the second server process.

18. The non-transitory medium of claim 14 , the method further comprising:

determining that at least a portion of a user dataset provided by the first server process needs to be rebalanced at a point in time;

causing the first server process to rebalance at least a part of the at least a portion of the user dataset to a second server process providing a portion of the user dataset at the point in time; and

directing requests corresponding to the at least a part of the at least a portion of the user dataset to the second server process.

19. The non-transitory medium of claim 14 , the method further comprising:

receiving a request to create a user dataset or to increase the size of a user dataset; and

adding a node to a cluster to provide resources responsive to the request.

20. The non-transitory medium of claim 14 , the method further comprising:

receiving a request to create a user dataset or to increase the size of a user dataset; and

provisioning resources responsive to the request using existing cluster nodes.

21. The non-transitory medium of claim 14 , the method further comprising:

receiving a request to delete a user dataset or to decrease the size of a user dataset; and

releasing resources responsive to the request.

22. The non-transitory medium of claim 14 , the method further comprising:

performing a rebalancing of a cluster so that resources of the cluster are substantially equally utilized across nodes of the cluster.

23. The non-transitory medium of claim 14 , the method further comprising:

determining that a user dataset provided by the first server process needs to be replicated; and

causing the first server process to replicate the user dataset to a second server process.

24. The non-transitory medium of claim 14 , the method further comprising:

redirecting a server-bound request from the first control process to a second control process; and

routing the server-bound request from the second control process to a second server process.

25. The non-transitory medium of claim 14 , the method further comprising:

communicating a write request for a write object from the first control process to a second control process executing in a cluster separate from the first control process over a network;

storing the write object using the first server process; and

storing the write object using a second server process in the cluster.

26. The non-transitory medium of claim 14 , the method further comprising:

providing a slave server process;

copying data changes from the first server process using the slave server process; and

storing the data changes in persistence storage.

27. A system for providing an in-memory, non-relational database, comprising:

at least one hardware processor that:

executes a first control process;

executes a first server process that responds to write requests by storing objects in in-memory, non-relational data store, and that responds to read requests by providing objects from in-memory, non-relational data store; wherein the objects each have an object size;

forms a plurality of persistent connections between the first control process and the first server process;

uses the first control process, pipelining, using a pipeline having a pipeline size, requests that include the read requests and the write requests over at least one of the plurality of persistent connections;

uses the first control process, adjusting the number of plurality of persistent connections and the pipeline size based on an average of the object sizes; and

uses the first control process, prioritizing requests by request type based on anticipated load from the requests.

Assignments (7)
SECURITY INTEREST Recorded Jan 9, 2023
From: REDIS LTD
To: SILICON VALLEY BANK
Reel/Frame 062315/0312 →
CHANGE OF NAME Recorded Sep 13, 2021
From: REDIS LABS LTD
To: REDIS LTD
Reel/Frame 057494/0270 →
SECOND AMENDMENT TO INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Feb 11, 2019
From: REDIS LABS LTD
To: SILICON VALLEY BANK
Reel/Frame 048301/0621 →
FIRST AMENDMENT TO INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Apr 25, 2017
From: REDIS LABS LTD.
To: SILICON VALLEY BANK
Reel/Frame 042328/0088 →
SECURITY AGREEMENT Recorded Jun 23, 2015
From: REDIS LABS LTD
To: SILICON VALLEY BANK
Reel/Frame 036011/0849 →
CHANGE OF NAME Recorded Jan 9, 2015
From: GARANTIA DATA LTD
To: REDIS LABS LTD.
Reel/Frame 034749/0611 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 17, 2011
From: SHOOLMAN, YIFTACH; BENGAL, OFER
To: GARANTIA DATA LTD.
Reel/Frame 027242/0516 →