Abstract:
A method for dynamic management of one or more cloud database nodes is provided. The method enables gathering information related to usage of one or more cloud database nodes. The method further enables comparing time required by the one or more cloud database nodes for responding to one or more requests with a predetermined threshold. Furthermore, the method enables provisioning one or more new cloud database nodes or removing one or more new cloud database nodes based on at least one of: the gathered information, the comparison and a combination thereof.

Description:
FIELD OF THE INVENTION 
       [0001]    The present invention relates to on demand databases and more specifically to provide a system and method for implementing a cloud database that can be provisioned or removed on demand. 
       BACKGROUND OF THE INVENTION 
       [0002]    The advent and progression of information technology has resulted in proliferation of data and there is a continuous demand to store and retrieve content. Various applications such as user generated content in community portals, emails and other web applications, call log files generated at call centers, inventory managements systems, Enterprise Resource Planning (ERP) systems etc. results in huge amount of data. The data generated by the abovementioned processes needs to be stored in an efficient way so that it can be quickly retrieved whenever there is a need. As a result, there is an increasing demand for storing, processing, and retrieving huge amount of data. 
         [0003]    Various conventional Relational Database Management Systems (RDBMS) are used to cater to the increasing demand of data but due to inherent limitation theses databases cannot be scaled horizontally and therefore, there is a need to store data on demand. Various key value data stores which are used to deal with the abovementioned limitation of horizontal scalability works on the premises that rather than providing Structured Query Language (SQL) based interface, map interface should be provided so that traditional enterprise applications can be served. 
         [0004]    In light of abovementioned disadvantages, there is a need for a system and method for implementing a database that can be provisioned or removed on demand. In addition, there is a need for database that can be scaled horizontally. Also, a system and method for implementing a cloud database is required which provides high scalability, availability, performance and have low latency. 
       SUMMARY OF THE INVENTION 
       [0005]    A method for dynamic management of one or more cloud database nodes is provided. In various embodiments of the present invention, the method comprises, firstly, gathering information related to usage of one or more cloud database nodes. Secondly, the method comprises comparing time required by the one or more cloud database nodes for responding to one or more requests with a predetermined threshold. The method further comprises provisioning one or more new cloud database nodes or removing one or more new cloud database nodes based on at least one of: the gathered information, the comparison and a combination thereof. 
         [0006]    In an embodiment of the present invention, gathering information related to usage of one or more cloud database nodes comprises gathering information on current usage of one or more cloud database nodes and gathering information on future usage of one or more cloud database nodes. In an embodiment of the present invention, the current usage information comprises at least one of number of entities stored in the one or more cloud database nodes and number of requests received at the one or more cloud database nodes. In another embodiment of the present invention, the future usage information comprises at least one of number of entities expected to be stored in the one or more cloud database nodes and number of requests expected to be received at the one or more cloud database nodes. 
         [0007]    In an embodiment of the present invention, comparing time required by the cloud database nodes for responding to one or more requests with a predetermined threshold comprises determining if time required for responding to one or more requests by the cloud database nodes is less than a predetermined threshold. In an embodiment of the present invention, provisioning one or more cloud database nodes based on the gathered information, comparison and combination thereof comprises adding one or more cloud database node instances using a cloud provider application API. In another embodiment of the present invention, comparing time required by the cloud database nodes for responding to one or more requests with a predetermined threshold comprises determining if time required for responding to one or more requests by the cloud database nodes is more than the predetermined threshold. In yet another embodiment of then present invention, removing one or more cloud database nodes based on the gathered information, comparison and combination thereof comprises deleting one or more cloud database node instances using a cloud provider application API. In another embodiment of the present invention, comparing time required by the cloud database nodes for responding to one or more requests with a predetermined threshold comprises determining if time required for responding to one or more requests by the cloud database nodes is equal to the predetermined threshold. In an embodiment of the present invention, the predetermined threshold comprises at least one of: response time threshold, throughput threshold and resource utilization threshold. 
         [0008]    In an embodiment of the present invention, the one or more cloud database nodes comprises cloud database node instances and cloud database server instances. In an embodiment of the present invention, the method further comprises updating a routing module with information related to the provisioning or removal of one or more cloud database nodes. 
         [0009]    In an embodiment of the present invention, the method further comprises repartitioning entities across provisioned and existing cloud database node instances. The repartitioning ascertains even distribution of entities across the node instances. In another embodiment of the present invention, the method further comprises replicating entities across provisioned and existing cloud database node instances. In yet another embodiment of the present invention, the method further comprises versioning entities across provisioned and existing cloud database node instances. 
         [0010]    A method for interacting with dynamically scaled cloud database architecture is provided. In various embodiments of the present invention, the method comprises, firstly, receiving one or more requests by a cloud database client. Secondly, the method comprises converting the one or more requests to a query language format. The method further comprises locating one or more cloud database server instances. Furthermore, the method comprises sending the converted data to at least one of the located cloud database server instance. Further, the method comprises processing the one or more requests converted to the query language format received at the cloud database server instance. The method further comprises sending the one or more requests to one or more cloud database nodes instances and processing one or more results received from the one or more cloud database node instances. Finally, the method comprises sending the one or more results to the cloud database client. 
         [0011]    In an embodiment of the present invention, converting the one or more requests to a query language format comprises capturing the one or more requests in a query object. In another embodiment of the present invention, locating one or more cloud database server instances comprises locating at least one of: existing cloud database server instances and provisioned cloud database server instances. In yet another embodiment of the present invention, sending the converted data to at least one of the located cloud database server instance comprises serializing the converted data into a sequence of bits. In an embodiment of the present invention, processing the one or more requests converted in the query language format received at the cloud database server instance comprises deserializing the sequence of bits to obtain the converted data, interpreting the one or more requests converted to the query language format and determining one or more cloud database node instances for processing the requests based on the interpretation. The one or more cloud database node instances comprise provisioned or existing nodes. 
         [0012]    In an embodiment of the present invention, sending the one or more requests to one or more cloud database node instances comprises at least one of: routing the one or more requests to a corresponding cloud database node instance and routing the one or more requests to one or more cloud database node instances via one or more other cloud database server instances. In another embodiment of the present invention, processing results received from the one or more cloud database server instances comprises aggregating results corresponding to the one or more requests received from the one or more cloud database server instances. 
         [0013]    A system for dynamic management of one or more cloud database nodes is provided. In various embodiments of the present invention, the system comprises a cloud database management console configured to facilitate a user to at least in part gather information related to usage of one or more cloud database node instances and to monitor response time of services provided by the one or more cloud database node instances. The system further comprises a cloud infrastructure module configured to facilitate provisioning or removal of one or more cloud database node instances using the cloud database management console. 
         [0014]    In an embodiment of the present invention, the cloud database management console comprises a web based user interface configured to receive one or more requests. In another embodiment of the present invention, the cloud database management console comprises one or more software modules configured to facilitate addition and/or deletion of one or more cloud database node instances using a cloud provider Application Programming Interface (API). 
         [0015]    A system for facilitating interaction with dynamically scaled cloud database architecture is provided. In various embodiments of the present invention, the system comprises a cloud database client configured to receive and convert one or more requests to a query language format. The system further comprises a cloud database server configured to receive the query language format from the cloud database client and process the query language format. Furthermore, the system comprises one or more cloud database node instances configured to provide one or more results corresponding to the one or more requests via the cloud database server and/or other cloud database server instances. 
         [0016]    In an embodiment of the present invention, the cloud database client comprises a query store client that receives and converts one or more requests to a query language format using a Java Persistence API (Application Programming Interface) Adaptor. In another embodiment of the present invention, the cloud database client comprises a Serialization De-Serialization module configured to translate the converted data into a sequence of bits and send the sequence of bits to the cloud database server over a network. 
         [0017]    In another embodiment of the present invention, the cloud database client comprises an Inconsistency Resolver configured to resolve inconsistencies in one or more results received from the cloud database server. In yet another embodiment of the present invention, the Inconsistency Resolver comprises a Resolve by Identification (Id) module configured to resolve inconsistencies in one or more results by updating version identification numbers associated with entities stored in the one or more cloud database node instances. In another embodiment of the present invention, the Inconsistency Resolver comprises a Resolve by Time module configured to resolve inconsistencies in one or more results by identifying latest version of entities stored in the one or more cloud database node instances based on modified time information associated with the entities. 
         [0018]    In an embodiment of the present invention, the cloud database server is configured to send the one or more requests to one or more other cloud database server instances. In another embodiment of the present invention, the cloud database server comprises a Query Processor configured to interpret the one or more requests converted to the query language format. In an embodiment of the present invention, the Query Processor comprises Query by Identification module configured to interpret the one or more requests when identity of entities associated with the requests is predetermined. In another embodiment of the present invention, the Query Processor comprises Query by Criteria module configured to interpret the one or more requests based on selection criteria created using one or more characteristics of the one or more requests. 
         [0019]    In an embodiment of the present invention, the cloud database server comprises a routing module configured to repartition entities across one or more of the existing and provisioned cloud database node instances. In another embodiment of then present invention, the cloud database server comprises a routing module configured to replicate entities across one or more of the existing and provisioned cloud database node instances. 
         [0020]    A computer program product for dynamic management of one or more cloud database nodes is provided. In various embodiments of the present invention, the computer program product comprises program instruction means for gathering information related to usage of one or more cloud database nodes. The computer program product further comprises program instruction means for comparing time required by the one or more cloud database nodes for responding to one or more requests with a predetermined threshold. Furthermore, the computer program product comprises program instruction means for provisioning one or more new cloud database nodes or removing one or more new cloud database nodes based on at least one of: the gathered information, the comparison and a combination thereof. 
         [0021]    A computer program product for interacting with dynamically scaled cloud database architecture is provided. In various embodiments of the present invention, the computer program product comprises program instruction means for receiving one or more requests by a cloud database client. The computer program product further comprises program instruction means for converting the one or more requests to a query language format. Further, the computer program product comprises program instruction means for locating one or more cloud database server instances. The computer program product further comprises program instruction means for sending the converted data to at least one of the located cloud database server instance. The computer program product comprises program instruction means for processing the one or more requests converted to the query language format received at the cloud database server instance. The computer program product comprises program instruction means for sending the one or more requests to one or more cloud database nodes instances. Further, the computer program product comprises program instruction means for processing one or more results received from the one or more cloud database node instances and program instruction means for sending the one or more results to the cloud database client. 
     
    
     
       BRIEF DESCRIPTION OF THE ACCOMPANYING DRAWINGS 
         [0022]    The present invention is described by way of embodiments illustrated in the accompanying drawings wherein: 
           [0023]      FIG. 1  illustrates an architectural diagram of a cloud database solution in accordance with an embodiment of the present invention; 
           [0024]      FIG. 2  illustrates a detailed block diagram of the cloud database client in accordance with an embodiment of the present invention; 
           [0025]      FIG. 3  illustrates a detailed block diagram of a cloud database server in accordance with an embodiment of the present invention; 
           [0026]      FIG. 4  is a flowchart illustrating a method for dynamic management of one or more cloud database nodes and routing of requests to the one or more cloud database nodes, in accordance with an embodiment of the present invention; and 
           [0027]      FIG. 5  is a flowchart illustrating a method for interacting with cloud database implementation that supports standard application programming interface (API), in accordance with an embodiment of the present invention. 
       
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
       [0028]    A system and method for implementing on demand cloud database is provided. The invention provides for provisioning or removing various cloud database nodes based on magnitude of data. The invention facilitates adding cloud database nodes when space is required for storing and quickly retrieving large amounts of data. The invention facilitates distributing data across the various cloud database nodes and also replicating data across various cloud database nodes. The invention also facilitates caching of data efficiently which in turn reduces latency in service response time. 
         [0029]    The disclosure is provided in order to enable a person having ordinary skill in the art to practice the invention. Exemplary embodiments herein are provided only for illustrative purposes and various modifications will be readily apparent to persons skilled in the art. The general principles defined herein may be applied to other embodiments and applications without departing from the spirit and scope of the invention. The terminology and phraseology used herein is for the purpose of describing exemplary embodiments and should not be considered limiting. Thus, the present invention is to be accorded the widest scope encompassing numerous alternatives, modifications and equivalents consistent with the principles and features disclosed herein. For purpose of clarity, details relating to technical material that is known in the technical fields related to the invention have been briefly described or omitted so as not to unnecessarily obscure the present invention. 
         [0030]    The present invention would now be discussed in context of embodiments as illustrated in the accompanying drawings. 
         [0031]      FIG. 1  illustrates an architectural diagram of a cloud database solution in accordance with an embodiment of the present invention. The cloud database solution architecture  100  comprises a cloud database management console  102 , a cloud infrastructure module  106 , a cloud database client  108 , one or more cloud database servers  110 ,  112  and one or more cloud database nodes  114 ,  116 ,  118 ,  120 . In an embodiment of the present invention, the cloud database servers  110 ,  112  and cloud database nodes  114 , 116 ,  118 ,  120  are served by the cloud infrastructure module  106 . The cloud database management console  102  further comprises a cloud controller  104 . 
         [0032]    The cloud database management console  102  provides a web based user interface for provisioning or removal of new instances of cloud database nodes and for expanding the storage capacity. In various embodiments of the present invention, a graphical user interface is provided to enable a user to add cloud database node instances to an existing cloud database cluster or delete cloud database node instances from the existing cloud database cluster. In an embodiment of the present invention, the cloud database management console  102  comprises a cloud controller  104  which is used to monitor consumption and availability of cloud database resources. In another embodiment of the present invention, the cloud controller  104  is used to monitor response time of services provided by the cloud database resources. The cloud database management console  102  facilitates handling on-time warnings and accurate capacity management of the cloud database cluster. 
         [0033]    The cloud infrastructure module  106  comprises various software modules that facilitate provisioning or removal of new cloud database node instances which is carried out via the cloud database management console  102 . In an embodiment of the present invention, the cloud infrastructure module  106  facilitates addition, deletion, initialization, and management of new cloud database node instances. In an embodiment of the present invention, addition modules are used to append various cloud database nodes as and when need arises. In another embodiment of the present invention, initialization modules are used to initialize various cloud database nodes whenever there is a need to store data after addition of nodes. In another embodiment of the present invention, the deletion modules are used to delete various cloud database nodes as and when need arises. In an embodiment of the present invention, the software modules form a part of a cloud provider Application Programming Interface (API). The cloud provider API provides an abstraction from cloud providers internal API and uses the software modules for implementing infrastructure for the cloud database solution architecture  100 . In an embodiment of the present invention, the various software modules may be implemented by performing virtualization of physical hardware of the cloud database solution architecture  100 . In an exemplary embodiment of the present invention, open source cloud computing framework such as Eucalyptus may be used for performing virtualization of the physical hardware employing Xen virtualization platform. 
         [0034]    The cloud database client  108  provides a standardized interface such as Java Persistence API (JPA) or Structured Query Language (SQL) interface to the cloud database. In an embodiment of the present invention, the cloud database client  108  provides an interface for receiving requests to store entities in the cloud database nodes. In another embodiment of the present invention, the cloud database client  108  provides an interface to update and delete entities stored in the cloud database nodes. In yet another embodiment of the present invention, the cloud database client  108  provides an interface to retrieve entities stored in the cloud database nodes. The cloud database client  108  converts the request to a standard query language format and sends it to the cloud database server  110 ,  112  over a network. 
         [0035]    The cloud database server  110 ,  112  processes the request and interacts with the cloud database nodes to obtain results corresponding to the request. In an embodiment of the present invention, the cloud database server  110 ,  112  provides a mechanism for high availability and high performance of the cloud database nodes by replicating data across the various cloud database nodes. The cloud database server  110 ,  112  further provides a mechanism for data distribution across various cloud database nodes, and for handling data storage and data retrieval from the client database nodes. 
         [0036]    The cloud database node  114 ,  116 ,  118 ,  120  is a distributed node that provides underlying storage along with a processing engine to handle data storage and retrieval requests at the node level. In an embodiment of the present invention, the nodes include a virtual machine with an appropriate operating system. In another embodiment of the present invention, the nodes also include a software image along with software stack to enable virtual appliances that can be instantiated and can be turned off/shutdown on demand. In an embodiment of the present invention, the cloud database nodes use a query engine (not shown) such as an Off the Shelf JPA implementation to process various requests and provide corresponding results. In an embodiment of the present invention, the query engine (not shown) is configured with an object-relational mapping module (not shown) to process various requests and provide corresponding results. In an exemplary embodiment of the present invention, open source hibernate framework may be used as a query engine which uses configuration files to map objects to database tables. The cloud database node  114 ,  116 ,  118 ,  120  also updates versioning information related to replicated data across the various cloud database nodes  114 ,  116 ,  118 ,  120 . 
         [0037]      FIG. 2  illustrates a detailed block diagram of the cloud database client in accordance with an embodiment of the present invention. In various embodiments of the present invention, the cloud database client  202  comprises Query Store Client  204 , Serialization De-Serialization module  206 , and Entity Helper  208 . The Query Store Client  204  further comprises a JPA Adaptor  210  and Inconsistency Resolver  212 . The Inconsistency Resolver  212  further comprises a Resolve by Identification (Id) module  214  and Resolve by Time module  216 . 
         [0038]    The Query Store Client  204  comprises a Java Persistence API (JPA) Adaptor  210  that provides a JPA query interface for processing request to store, retrieve, update and delete entities. The JPA query interface details are available as part of Java Specification Request (JSR). In an embodiment of the present invention, the Query Store Client  204  receives requests from a user to store, update, delete or retrieve entities stored in various cloud database nodes and captures the request in a query object. 
         [0039]    The Serialization De-Serialization module  206  serializes the query object for sending to a cloud database server over a network. In an embodiment of the present invention, serialization is the process of translating an object into a sequence of bits so that it can be stored on a storage medium or transmitted across a network link to be used in another networking environment. In another embodiment of the present invention, the Serialization De-Serialization module  206  enables distributed deployment of various modules of the cloud database client  202 . 
         [0040]    The Inconsistency Resolver  212  within the Query Store Client  204  resolves inconsistencies in results retrieved from the cloud database server. Different versions of a particular entity are provided by different cloud database nodes and each of the versions are associated with version identification numbers. In an embodiment of the present invention, the Resolve by Id module  214  uses the version identification numbers to identify latest version of the entity and replaces all the cloud database nodes which have an older version of the entity. The Resolve by Id module  214 , therefore, enables resolving inconsistencies by updating version identification number associated with the cloud database. The Resolve by Time module  216  uses last modified time information stored along with an entity to identify latest version when multiple inconsistent copies of an entity are stored among different cloud database nodes. The Inconsistency Resolver  212  facilitates integrity and consistency of entities. 
         [0041]    The Entity Helper  208  provides all configuration and additional information about an entity which otherwise cannot be stored in a primary storage repository of the entity. 
         [0042]      FIG. 3  illustrates a detailed block diagram of a cloud database server in accordance with an embodiment of the present invention. The cloud database server  302  comprises Serialization-De-serialization module  304 , Query Processor  306 , and Entity Helper  308 . The Query Processor  306  further comprises a Query by Identification (Id) module  310 , Query by Criteria module  312 , Routing module  314 , Read Repair module  316  and Failover module  318 . 
         [0043]    The Serialization De-Serialization module  304  receives requests over the network from the cloud database client. The requests are in a serialized format, which is deserialized for further processing. Further, the Serialization De-Serialization module  304  serializes result data corresponding to the request and sends it to the cloud database client. 
         [0044]    The Query Processor  306  interprets the requests received and processes them in accordance with an embodiment of the present invention. In an embodiment of the present invention, the requests provided by the users may be processed by the Query by Id module  310 . Query by Id module  310  is used when identity of an entity associated with the query is known. In another embodiment of the present invention, the queries provided by the users may be processed by the Query by Criteria module  312 . Query by Criteria module  312  is used when identity of an entity associated with the query is not known and only a few characteristics of the entity are known. Using the few characteristics selection criteria is created and the Query by Criteria module  312  operates on a group of entities selected based on the selection criteria to identify and retrieve the requested entity. The requests forwarded by the users are received by the Query Processor  306  which is further interpreted and provided to a corresponding cloud database node or to various other cloud database node instances via corresponding cloud database server instances. 
         [0045]    Routing Module  314  partitions entities across one or more instances of cloud database server nodes (existing and provisioned nodes) and routes requests to the appropriate cloud database server node. This reduces amount of data stored on a particular node and further reduces time required to process requests and provide results. In an embodiment of the present invention, when a request is received for multiple entities, the first cloud database server node which receives the request, routes the requests to various other cloud database server nodes. The first cloud database server node, then, receives and aggregates the results received from the various cloud database server node instances. In yet another embodiment of the present invention, the Routing Module  314  may replicate an entity across multiple cloud database node instances to ensure that related entities are stored, thus, providing high availability of entities. In another embodiment of the present invention, the Routing module  314  maintains data store constraint checks that may be executed to ensure consistency of relationships across the entities stored in the cloud database nodes. In an exemplary embodiment of the present invention, a pluggable replication algorithm may be used for replicating the entities. In another embodiment of the present invention, the entities may be versioned using known versioning techniques which in turn provide consistency and availability of entities. 
         [0046]    The Read Repair Module  316  performs repairs on versioned entities when it finds inconsistencies in the replicated entities retrieved from the cloud database server instances. In an embodiment of the present invention, the Read Repair Module  316  is used to update cloud database nodes which have outdated information on an entity. The Failover Module  318  handles scenarios when the cloud database server is turned off shut down or restored at the time of processing of the query object. 
         [0047]    The Entity Helper  308  is used to maintain information about the entity relationships so that related entities are routed to the same cloud database server node instances. The Entity Helper  308  provides information about entity types that are related to each other and entities that are used by the Routing Module  314  to ensure that related entities are stored in same cloud database node. 
         [0048]      FIG. 4  is a flowchart illustrating a method for dynamic management of one or more cloud database nodes and routing of requests to the one or more cloud database nodes, in accordance with an embodiment of the present invention. 
         [0049]    At step  402 , information on current usage of one or more cloud database nodes is gathered. In an embodiment of the present invention, information on current usage of the one or more cloud database nodes include identifying number of entities stored in the one or more cloud databases. In another embodiment of the present invention, the information on current usage of the one or more cloud database nodes include identifying number of request received at the one or more cloud database nodes. The requests may include requests to store entities and request to retrieve entities. 
         [0050]    At step  404 , information on future usage of the one or more cloud database nodes is gathered. In an embodiment of the present invention, information on future usage of the one or more cloud database nodes include forecasting the number of entities that can be stored in the one or more cloud databases. In another embodiment of the present invention, information on future usage of the one or more cloud database nodes include forecasting number of requests that are expected to be received at the one or more cloud database nodes. In an embodiment of the present invention, the forecasting may be based on past information of number of entities stored, requests to retrieve or store entities. Forecasting techniques such as ARIMA (Auto-Regressive Integrated Moving Average) may be used to perform the predictions based on the past information. In an embodiment of the present invention, forecasting and prediction enables optimizing distribution of entities across the different cloud database nodes based on considerations such as performance of retrieval, cost of storage etc. depending on forecasted usage. 
         [0051]    At step  406 , a check is performed to determine if the time required for servicing one or more requests by the one or more cloud databases is less than or more than a predetermined threshold. In an embodiment of the present invention, the predetermined threshold includes response time threshold. In another embodiment of the present invention, the predetermined threshold includes throughput threshold. In yet another embodiment of the present invention, the predetermined threshold includes resource utilization threshold. In an embodiment of the present invention, techniques such as queuing theory may be used to determine the amount of time that is taken by the cloud databases to service one or more requests for storage or retrieval of entities. In an embodiment of the present invention, queuing theory facilitates to predict computing resource requirements for different storage transactions. This information is used to optimize allocation of computing resources to different cloud database nodes and also in the allocation of workloads to the different cloud database nodes. 
         [0052]    At step  408 , one or more new instances of cloud database nodes and cloud database servers are provisioned or removed using a cloud provider application programming interface (API). In an embodiment of the present invention, the cloud provider application API uses the information related to number of entities that can be stored in the one or more cloud databases to provision the one or more new instances of cloud database nodes. In another embodiment of the present invention, the cloud provider application API uses the number of requests for storage or retrieval of entities that are expected to be received at the one or more cloud database to provision the one or more new instances of cloud database nodes. The cloud provider application API therefore facilitates addition and removal of cloud database nodes dynamically using the abovementioned information. Further, dynamic distribution of entities and workloads to different cloud database nodes enables optimizations in computing resource allocation and also provides ability to scale dynamically depending on usage of the cloud database nodes. 
         [0053]    At step  410 , routing module is updated with information related to the provisioning or removal of the one or more cloud database nodes. In an embodiment of the present invention, addition and deletion of cloud database nodes at runtime facilitates dynamic routing. This enables the cloud database architecture to scale up and down easily which further enables cost optimizations as well as ability to meet service levels. 
         [0054]    At step  412 , requests are routed to cloud database nodes via cloud database server instances based on the updated information. In various embodiments of the present invention, entities stored in the one or more cloud database nodes is repartitioned into one or more segments and distributed by the routing module to existing and/or newly provisioned cloud database nodes. The data is repartitioned appropriately to ascertain that the entities are evenly distributed across the various cloud database node instances. In an exemplary embodiment of the present invention, consistent hashing of primary keys associated with the entities may be performed to evenly distribute entities across the various cloud database instances. Consistent hashing is a mechanism where hash function of a primary key is created and is used to identify cloud database node to which the entity is routed. The hash function is consistent and any user who has the entity&#39;s primary key and the hash function can determine the cloud database node on which the entity with that primary key would get stored. The routing module, therefore, need not maintain a mapping of the entity to corresponding cloud database nodes. 
         [0055]    In an embodiment of the present invention, information related to entity relationships is maintained so that related entities are routed to the same cloud database node instances. In another embodiment of the present invention, one or more entities may be replicated across all the cloud database node instances in order to maintain consistency of the entity relationships in the cloud database node instances. For example, when there are two entity types that are related to each other, information regarding which entity&#39;s primary key should be used and how to retrieve primary key of each of the entities is provided as input to the consistent hashing mechanism. This will result in both the entities getting routed to the same cloud database node. Further, the requests related to storage or retrieval of entities is routed to the existing and/or newly provisioned cloud databases suitably. 
         [0056]      FIG. 5  is a flowchart illustrating a method for interacting with cloud database implementation that supports standard application programming interface (API), in accordance with an embodiment of the present invention. 
         [0057]    At step  502 , request data is received. In various embodiments of the present invention, request data is received by a cloud database client. The request data may include, request for storing entities in the cloud database, retrieving entities stored in the cloud database, updating entities stored in the cloud database, and deleting entities stored in the cloud database. 
         [0058]    At step  504 , the request data is converted to a standard query language format. In various embodiments of the present invention, the request data is converted to a standard query language format by a query interface which is a standard Application Programming Interface (API). In an embodiment of the present invention, the standard API may include a Java Persistence API (JPA) query interface. The JPA query interface captures the request data in a query object. Query object is a query language standard for object orientated databases. 
         [0059]    At step  506 , one or more cloud database server instances are located. In various embodiments of the present invention, the cloud database client locates one or more cloud database server instances. The one or more cloud database server instances include existing and newly provisioned cloud database server instances as explained in  FIG. 4 . In an embodiment of the present invention, static configuration mechanisms may be employed to locate the one or more cloud database server instances. In an exemplary embodiment of the present invention, static configuration may be a property file having location information of the cloud database server instances which is used by the cloud database client to locate the cloud database server instances. In another embodiment of the present invention, dynamic discovery mechanisms such as multi-cast may be employed to locate the one or more cloud database server instances. In an embodiment of the present invention, dynamic discovery mechanism includes sending a multi-cast request on a pre-defined port. One or more cloud database server instances listening on the multi-cast port respond with details of their location and the cloud database client locates the one or more cloud database server instances. 
         [0060]    At step  508 , the converted data is sent to one of the cloud database server instance. In various embodiments of the present invention, the converted data is sent to at least one of the cloud database server instance over a network. In an embodiment of the present invention, the converted data is serialized to translate the converted data into a sequence of bits so that the data can be stored in a file or a memory buffer or transmitted across a network in a computing environment. 
         [0061]    At step  510 , query object is interpreted and processed. In various embodiments of the present invention, the serialized data sent over the network is received by the cloud database server instance and further the serialized data is deserialized to obtain the converted data. The converted data includes the query object. The cloud database server instance, then, interprets the query object which is further processed. In an embodiment of the present invention, the query object is processed to determine one or more cloud database node instances where one or more entities can be stored or retrieved and route the request data to the appropriate cloud database node through corresponding cloud database server instances. The cloud database server instances may include both existing and provisioned cloud database server instances (as explained in  FIG. 4 ). In an embodiment of the present invention, the cloud database server instance uses configuration information to replicate the one or more entities across one or more cloud database node instances. In an embodiment of the present invention, the configuration information may include a property file that provides information regarding the number of times a particular entity has to be replicated among different cloud database nodes. This ascertains that the entity data is not lost even if one or more of the cloud database node instances does not function. 
         [0062]    At step  512 , the cloud database server instance sends the query object to its corresponding cloud database node instance or to other cloud database node instances through corresponding cloud database server instances. The cloud database node instances processes the query and sends the results of the query to the cloud database server instance. 
         [0063]    At step  514 , the cloud database server instance receives results from various other cloud database server instances and then processes the results. In an embodiment of the present invention, the cloud database server instance processes the results to amend problems which may arise due to inconsistent versions of entity data across various cloud database node instances. In another embodiment of the present invention, the cloud database server instance also handles scenarios when the cloud database server is turned off/shut down and also when the cloud database server is restored. 
         [0064]    At step  516 , the results are sent to the cloud database client. In various embodiments of the present invention, the cloud database server instance sends the results to the cloud database client. In an embodiment of the present invention, the cloud database server and the cloud database client resolves inconsistencies which may arise due to replicated entities across the one or more cloud database node instances using techniques such as, but not limited to, versioning. 
         [0065]    The present invention may be implemented in numerous ways including as an apparatus, method, or a computer program product such as a computer readable storage medium or a computer network wherein programming instructions are communicated from a remote location. 
         [0066]    While the exemplary embodiments of the present invention are described and illustrated herein, it will be appreciated that they are merely illustrative. It will be understood by those skilled in the art that various modifications in form and detail may be made therein without departing from or offending the spirit and scope of the invention as defined by the appended claims.