TECHNICAL FIELD

The present disclosure relates generally to computing systems and the use of proxy technology between an application server and a database server/store.

BACKGROUND

Data center architecture has been evolving rapidly over the last decade. This includes changes to the data center architecture for systems including one or more NoSQL data servers (also referred to as NoSQL data stores). Each customer can have different data center architectures for specific application(s).

Typically there are four tiers in a data center architecture that also uses a NoSQL data store. The four tiers are: web tier comprising front end web servers, application tier comprising application servers, data tier comprising database servers, and storage tier.FIG. 1shows a typical architecture of data center for an Internet company (e.g., Yahoo, LinkedIn, eBay, etc.) comprising the four tiers. The dotted lines separate different tiers of servers based on their functional attributes related to specific data center architecture.

In the data center architecture ofFIG. 1, the application servers are responsible for running the business or application logic. The storage tier is accessed via database servers, such as the NoSQL servers ofFIG. 1. These NoSQL servers act as access medium to the NoSQL data stores. Application logic accesses the NoSQL data store to manage data. Below are the typical steps involved in retrieving required (READ operation) data from a data store:1. Application logic wants a specific data that is associated with a key. The application, for example, speaks JavaScript Object Notation (JSON).2. Application will open a connection to the NoSQL data server and request the data associated with that key.3. If the NoSQL data server speaks another format, e.g., Binary JSON (BSON), then application server needs to convert its request to BSON first (or NoSQL server needs to parse JSON).4. The NoSQL server will now check if the data associated with the key is available in its local cache, if not it will fetch it from the persistent storage.5. In case NoSQL server has to fetch from the persistent storage, it needs to resolve if the key points to a secondary index or primary index. If it is a secondary index, then it needs to be converted to primary index.6. Finally, the data is now retrieved either from local cache or persistent storage and returned to the application logic.

This approach suffers from several possible bottlenecks that limit efficient scaling of application deployment using NoSQL data stores. Accordingly, improved approaches to the NoSQL data center architecture are desirable.

SUMMARY

According to some embodiments a NoSQL proxy includes a packet processor for exchanging messages over a network with one or more application servers, NoSQL data stores, and peer NoSQL proxies, a proxy finite state machine for managing data access commands received by the NoSQL proxy, an interface for accessing cached data in a hybrid memory management unit, and a data access command processing unit for translating secondary indexes to primary indexes, translating data between data formats, and evaluating and filtering data access command results. The NoSQL proxy is configured to receive a data access command, process the data access command using cached data when data associated with the data access command is cached locally, forward the data access command to the one of the peer NoSQL proxies when the data is cached in the one of the peer NoSQL proxies, forward the data access command to one of the NoSQL data stores when the data is not cached or changes to the data are written through to the one of the NoSQL data stores, and return results of the data access command.

According to some embodiments, a database proxy includes a request processor, a cache coupled to the request processor, a database plugin coupled to the request processor, a first interface for coupling the request processor to one or more client devices, a second interface for coupling the request processor to one or more other database proxies, and a third interface for coupling the database plugin to one or more database servers. The request processor is configured to receive a database read request from a client using the first interface, determine whether the database read request is assigned to the database proxy, and return results of the database read request to the client using the first interface. When the database read request is not assigned to the database proxy, the request processor is configured forward the database read request to a first one of the one or more other database proxies using the second interface. When the database read request is assigned to the database proxy, the request processor is configured to process the database read request using data stored in the cache when data associated with the database read request is stored in the cache and forward the database read request to the database plugin when the data associated with the database read request is not stored in the cache and store results of the database read request received from the database plugin in the cache. The database plugin is configured to forward the database read request to a first one of the one or more database servers, receive the results of the database read request from the first one of the one or more database servers, and return the results to the request processor.

According to some embodiments, a method of processing database read requests using database proxies includes a request processor of a first database proxy receiving a database read request from a client using a first interface, determining whether the database read request is assigned to the first database proxy, and returning results of the database read request to the client using the first interface. When the database read request is not assigned to the first database proxy, the method further includes the request processor forwarding the database read request to a second database proxy using a second interface. When the database read request is assigned to the first database proxy, the method further includes processing, by the request processor, the database read request using data stored in a cache when data associated with the database read request is stored in the cache and forwarding, by a database plugin of the first database proxy, the database read request to a database server and storing, by the request processor, results of the database read request received from the database plugin in the cache when the data associated with the database read request is not stored in the cache.

