Source: https://patents.google.com/patent/US9207984B2/en
Timestamp: 2019-04-20 17:01:35+00:00

Document:
Aspects of a data environment, such as various capacities of data stores and instances, can be managed using a separate control environment. A monitoring component of the control environment can periodically communicate with the data environment to obtain performance information. The information is analyzed, using algorithms such as trending and extrapolation algorithms, to determine any recommended scaling of resources in the data environment. The scaling can be performed automatically, or as authorized by a customer. A workflow can be instantiated that includes tasks necessary to perform the scaling. The scaling of storage capacity can be performed without affecting the availability of the data store.
This application is related to co-pending U.S. patent application Ser. No. 12/415,958, entitled “Control Service and Relational Data Management,” filed concurrently herewith, which is hereby incorporated herein by reference.
The amount of resources needed by a customer can change over time. For example, the customer might require additional processing capacity for various applications, or might require additional storage capacity for customer data. Currently, the management of such resources is a manual procedure, which requires a database administrator (DBA) or other such operator to view statistics and usage data by customer, and determine when to request that the customer authorize an increase or decrease in allocated capacity. When receiving a request from a customer to adjust a capacity, the DBA must determine the appropriate type of adjustment and perform the adjustment. Often, this requires taking down a data store for the customer for a period of time necessary to make the adjustment. Further, such an approach can be reactive, in that a customer will not know that an increase is needed until the capacity for the customer is full or exceeded.
FIG. 6 illustrates an interface enabling a customer to set scaling parameters that can be used in accordance with one embodiment.
Systems and methods in accordance with various embodiments of the present disclosure may overcome one or more of the aforementioned and other deficiencies experienced in conventional approaches to managing aspects of data storage in an electronic environment. In particular, various embodiments provide a separate control environment, or control plane, that can be used to monitor and/or control aspects of a data environment, or data plane. The functionality of a control plane can be provided as a set of Web services, for example, enabling the control plane to act as a virtual database administrator (DBA). A user or customer can submit a request to the control plane through an externally-visible application programming interface (API), for example, which can be analyzed to determine actions to be performed in the data plane, such as actions that create, delete, modify, expand, or otherwise modify a data store or data storage instance. State information can be passed to a component of the data plane for each task necessary to perform the action, such that the control plane can manage the performance of the tasks without having direct access into the data stores or other such components of the data plane. Once provisioned, a user can native access to the data instance(s) in the data plane, and can simply point existing applications (such as MySQL applications) to the domain name system (DNS) name or other location information for the particular data instance. There is no restriction or modification of query models or other such functionality, as a user can continue to use applications built on MySQL, Oracle, or other such database technology.
Systems and methods in accordance with various embodiments take advantage of a monitoring component in the control plane to continually monitor performance aspects of the data environment, such as by monitoring host machines or data instances for a relational database or other such data storage system. The monitoring component can contact host managers, or other such components in the data plane, to obtain performance information such as the capacity and usage of processing, memory, storage, I/O, and other such resources. The monitoring component can store and/or receive historical information for the data plane, such that the monitoring component can do trending and/or historical analysis of the performance data. Using such an approach, the monitoring component can predict future capacity and/or resource needs for a customer, and can recommend appropriate scaling or other such adjustments in capacity or other such aspects. In some embodiments, components of the control plane can be authorized to act on behalf of the customer, in order to automatically scale or allocate capacity as needed (or predicted).
Use of such a control plane can enable a customer or DBA to better understand the scalability bottlenecks of the data environment by automatically collecting and analyzing data from the data environment, without being intrusive to the customer or other users of the data environment. The control plane components also can determine an appropriate action to take, and can either recommend the action to the customer or perform the action on behalf of the customer.
In some embodiments, an operator or data service provider can send the appropriate metrics or other such information to a control service. The service can analyze the data, such as by performing a trending analysis, and determine appropriate actions to be taken. The control service then can send a recommendation to the requesting operator, or can automatically work with the data environment to perform any necessary scaling or other such operations.
In some embodiments, a customer can be provided with the ability to specify certain actions to be taken in certain circumstances. For example, a customer can be provided with an interface into the control plane that allows the customer to authorize specific actions in response to determinations or recommendations from the monitoring component (or another such component of the control plane). For example, a customer might authorize an increase in processing capacity when the processing capacity reaches a certain level, or is projected to reach a certain level within a certain time. A customer also might authorize an increase in storage capacity as needed, so as to not risk losing data. A customer might also specify to not exceed a certain price point, such that the monitoring component can work with an accounting or other such system to ensure that resources are not allocated beyond a certain price limit. There can be other factors, such as maximum latency, minimum requirements, etc., that can be considered as well, as discussed elsewhere herein.
Systems and methods in accordance with one embodiment provide a relational database service (“RDS”) that enables developers, customers, or other authorized users to easily and cost-effectively obtain and configure relational databases so that users can perform tasks such as storing, processing, and querying relational data sets in a cloud. While this example is discussed with respect to the Internet, Web services, and Internet-based technology, it should be understood that aspects of the various embodiments can be used with any appropriate services available or offered over a network in an electronic environment. Further, while the service is referred to herein as a “relational database service,” it should be understood that such a service can be used with any appropriate type of data repository or data storage in an electronic environment. An RDS in this example includes at least one Web service that enables users or customers to easily manage relational data sets without worrying about the administrative complexities of deployment, upgrades, patch management, backups, replication, failover, capacity management, scaling, and other such aspects of data management. Developers are thus freed to develop sophisticated cloud applications without worrying about the complexities of managing the database infrastructure.
The control plane 208 in this example is essentially a virtual layer of hardware and software components that handles control and management actions, such as provisioning, scaling, replication, etc. The control plane in this embodiment includes a Web services layer 212, or tier, which can include at least one Web server, for example, along with computer-executable software, application servers, or other such components. The Web services layer also can include a set of APIs 232 (or other such interfaces) for receiving Web services calls or requests from across the network 206, which the Web services layer can parse or otherwise analyze to determine the steps or actions needed to act on or process the call. For example, a Web service call might be received that includes a request to create a data repository. In this example, the Web services layer can parse the request to determine the type of data repository to be created, the storage volume requested, the type of hardware requested (if any), or other such aspects. Information for the request can be written to an administration (“Admin”) data store 222, or other appropriate storage location or job queue, for subsequent processing.
A Web service layer in one embodiment includes a scalable set of customer-facing servers that can provide the various control plane APIs and return the appropriate responses based on the API specifications. The Web service layer also can include at least one API service layer that in one embodiment consists of stateless, replicated servers which process the customer APIs. The Web service layer can be responsible for Web service front end features such as authenticating customers based on credentials, authorizing the customer, throttling customer requests to the API servers, validating user input, and marshalling or unmarshalling requests and responses. The API layer also can be responsible for reading and writing database configuration data to/from the administration data store, in response to the API calls. In many embodiments, the Web services layer will be the only externally visible component, or the only component that is visible to, and accessible by, customers of the control service. The servers of the Web services layer can be stateless and scaled horizontally as known in the art. API servers, as well as the persistent data store, can be spread across multiple data centers in a region, for example, such that the servers are resilient to single data center failures.
An example “create database” workflow for a customer might includes tasks such as provisioning a data store instance, allocating a volume of off-instance persistent storage, attaching the persistent storage volume to the data store instance, then allocating and attaching a DNS (domain name system) address or other address, port, interface, or identifier which the customer can use to access or otherwise connect to the data instance. In this example, a user is provided with the DNS address and port to be used to access the instance. The workflow also can include tasks to download and install any binaries or other information used for the specific data storage technology (e.g., MySQL). The workflow component can manage the execution of these and any related tasks, or any other appropriate combination of such tasks, and can generate a response to the request indicating the creation of a “database” in response to the “create database” request, which actually corresponds to a data store instance in the data plane 210, and provide the DNS address to be used to access the instance. A user then can access the data store instance directly using the DNS address and port, without having to access or go through the control plane 208. Various other workflow templates can be used to perform similar jobs, such as deleting, creating, or modifying one of more data store instances, such as to increase storage. In some embodiments, the workflow information is written to storage, and at least one separate execution component (not shown) pulls or otherwise accesses or receives tasks to be executed based upon the workflow information. For example, there might be a dedicated provisioning component that executes provisioning tasks, and this component might not be called by the workflow component, but can monitor a task queue or can receive information for a provisioning task in any of a number of related ways as should be apparent.
As discussed, one advantage to use of a control plane is that the control plane can function as a virtual database administrator (DBA) and avoid the need for a human DBA to perform tasks such as monitoring performance data and performing trending or other such analysis. A control plane can also perform functions such as automatically performing scaling or other such actions in the event of an actual or predicted need for adjustment in capacity. In conventional systems, metrics or other such information are collected and a DBA is tasked with analyzing the information. Exceeding an allocated processing, memory, or storage capacity in the cloud, for example, can result in a loss of data, resource availability, or other such failure. Conventional approaches relying on a DBA to perform actions such as monitoring, analysis, and adjustment are expensive and time-consuming, and can result in significant unavailability of customer data during the adjustment process.
As discussed above, a control plane can be used to perform tasks such as collecting data, analyzing the data, and determining appropriate actions to be taken. FIG. 3 illustrates an example process 300 that can be used by components of a control plane to monitor resource usage and determine when adjustments should be made in accordance with one embodiment. In this example, a monitoring component of the control plane is able to periodically send requests for performance data into the data plane 302. As discussed above, these requests can be sent to host managers, which are able to collect performance information from the host devices, data instances, and other components of the data environment monitored by each host manager. In response to a request, each corresponding host manager can collect the information needed to respond to the request, such as allocation, capacity, and/or usage information for components such as processors (e.g., CPUs), memory (e.g., RAM), or storage (e.g., data volume). The information can include current information and/or recent information since the last request. Once each host manager has collected the appropriate information, the information can be sent as a response that is received to the monitoring component of the control plane 304. Upon receiving the information, the monitoring component can parse or otherwise extract the appropriate information, and analyze the extracted performance information 306. In some cases, the monitoring component can determine current capacity values and compare those capacity values to thresholds specified by a customer or operator 308. While the term “customer” is used herein to refer to the “owner” of data, or a data store or instance hosted by the RDS system, it should be understood that the term customer is merely an example, and that any appropriate user or developer can be allowed to access the control plane and/or data plane in the various embodiments. In some cases, the monitoring component might also (or alternatively) pull historical data from a monitoring data store (or other such location of the control plane) and perform trending analysis on the data 310. For example, the capacity values might not currently exceed a threshold, but based upon a rate of increase or other such information, it can be predicted that the capacity value will meet or exceed such a threshold at a determined time. Based on the analysis, the monitoring component can determine whether any actions should be taken 312, such as a scaling of capacity for a given customer. If no action is to be taken, the monitoring process can simply continue. If an action is to be taken, a determination can be made, depending upon the embodiment, as to whether the control plane is authorized to perform the action 314. If the control plane is authorized to act, the monitoring component can cause information for the determined action to be stored to a job queue 316. If the control plane is not authorized to act automatically, the monitoring component can inform the customer of the situation 318 such that the customer can decide to scale or perform another such action.
In some embodiments, a customer can be provided with the option of determining which (if any) actions should be taken automatically, as well as the criteria for which any of those actions should be taken. The criteria also can be set by a DBA, database service provider, or other appropriate entity. Further, although a monitoring component is described in this example, it should be understood that various functionality can be allocated to additional and/or alternative components of the control plane within the scope of the various embodiments.
FIG. 4 illustrates in more detail an example process 400 by an action can be scheduled to be performed in accordance with one embodiment. In this example, performance information is monitored for aspect of the data environment 402 and a determination is made that an action is (or is likely to be) needed 404, using an approach such as that described with respect to FIG. 3. If an action is recommended to be performed based upon such an analysis, the monitoring component can check information stored to a monitoring data store or other such location that stores authorization information. In some embodiments, this can include customer preference information, wherein a customer can select and/or modify how different actions are authorized as discussed elsewhere herein. A determination is made as to whether the control plane is authorized to perform and/or schedule the recommended action 406. If the control plane is not authorized to automatically schedule the action, a request or other such notification can be sent or provided to the customer, or other authorized user, requesting authorization to perform the action 408. This request can include any appropriate information, such as the current capacity, any predicted capacity, threshold information, and recommended action information. A determination is made as to whether a response is received from the customer within a predetermined amount of time 410, which can vary for different actions, customers, embodiments, etc. If no authorization is granted, such as may be due to no response being received or due to an explicit instruction from the customer, then the system can simply continue the monitoring process without making a modification. In some cases, the system might wait a specified amount of time to determine if an action should still be taken, and can follow up after a specified amount of time. In other embodiments, a secondary threshold can be specified wherein the system will not contact the customer again unless another threshold is met or exceeded, such as where a resource is actually at capacity instead of simply being predicted to be at capacity at some point in the future. If the authorization is received from the customer, or if the control plane was authorized to perform or schedule an action, then information for the action can be stored to a job queue 412 or other such location. Once information is stored to the job queue, the action can be performed 414 and the customer notified 416.
FIG. 5 illustrates an example process 500 for performing the action and notifying the customer, in accordance with one embodiment. Using components and/or processes such as those discussed above, a determined action with respect to the data environment is authorized to be performed 502. As discussed, this can take the form of the monitoring component automatically requesting an action to be performed or a customer authorizing the performance of an action, while in other embodiments a customer could instead submit a request via an externally-facing API of the Web services layer, which can parse the request to determine the action(s) being requested. In this embodiment, information for the action, such as the type of action and parameters to be used to perform the action, is written to a job queue 504, such as may be located in an Admin data store or other such storage location. The job queue can be monitored, such as by a sweeper component, to determine the presence of job information 506 and, when job information is detected, a request can be sent to initiate a workflow for the requested action 508. This can include a request sent by the sweeper component to a workflow component and/or service to instantiate a workflow. In other embodiments, a workflow component might monitor the job queue for jobs, or a component of the Web services layer may send the job information directly to a workflow component.
Upon receiving the job information, the information is analyzed to determine and/or assemble an appropriate workflow for the requested action 510. As discussed, different tasks can be selected for the workflow based upon factors such as the type of action requested and the type of database engine being used. Beginning with the first task of the workflow, state information is sent to a host manager in the data environment operable to use the state information to determine a task to be performed, perform the task with respect to a data repository and/or data instance, and return a response upon completion of the task 512. Upon receiving the response, the workflow component determines whether there is another task to be performed 514. If so, state information for the next task is sent to the host manager, and upon completion of that task the host manager sends a response to the workflow component. After the final task has been completed, a message is sent to the requesting customer (or another appropriate user, application, or location) that the requested action has been completed 516. After the action has been performed, the customer is able to directly access the data instance upon which the action was performed using a data interface of the data environment, without accessing or passing through the control plane 518. As mentioned, the user can provided with a DNS name and port number, for example, such that if the action resulted in movement of data or another similar action, the customer or an application can continue to use the same DNS name, which will be directed to the appropriate location in the data plane.
There can be various aspects of the data plane that can be monitored, and different policies that can be applied to each. For example, the rates at which data and CPU usage change can vary significantly from the rates at which data storage vary. There also can be other aspects, such as data input and output (I/O), that change at different rates as well. Each of these aspects can require different metrics to be captured (e.g., available bandwidth vs. storage capacity), and can require different algorithms to analyze those metrics. There also can be different historical information captured and information logged, which can be used to determine when to scale or perform another such action. Some embodiments also require separate interfaces for each of these actions. Such factors can make it very difficult to manage manually, and can be advantageously provided by the control plane.
For example, a monitoring component can determine that a data store for a customer is mostly memory bound because the customer is read intensive and thus the data environment is allocating significant effort on the buffer cache. In such an example, the processing capacity and memory can be the bottleneck to be addressed. If the customer is write intensive, on the other hand, then the customer can mostly be writing to disk and the I/O might be the bottleneck. If the customer is storage bound, where the amount of data is increasing continually, the monitoring component can anticipate future need and can recommend adjustments to the customer such as adding 20 GB (as an example) of storage capacity per month.
As discussed, the monitoring component can call into one or more host managers to obtain information such as CPU and memory utilization, I/O metrics, and storage space usage. The information to be obtained can include not only the current data, but also log information. The monitoring component can analyze historical data for a period such as the past two weeks, for example, and can run trending analysis or other types of data analysis. The trending analysis can be anything from a linear fit to a complex prediction algorithm as known in the art for trending, prediction, or other such purposes. In other embodiments, the historical data can be exposed to the customer (or another appropriate entity) for analysis.
When information analyzed by the monitoring component is determined to require an action, such as through an automatic authorization or customer authorization, information for the action in one embodiment is fed into at least one trigger mechanism. The trigger mechanism can be any appropriate component of the control plane (or external to the control and data planes in some embodiments), wherein analysis of at least one metric meeting or exceeding a threshold can result in a trigger mechanism being activated. Instead of, or in addition to, writing information to a job queue as discussed above, the trigger mechanism receiving the action information can cause a workflow to be kicked off for a particular action. For example, a customer or operator can set up a trigger to kick off a workflow to increase processing capacity if the processing capacity over a two week period is consistently over 70%. Thus, when the monitoring component analyzes historical data for that customer, a determination that the capacity was over 70% for at least the threshold period can cause information for the determination to be fed to at least one trigger mechanism, in order to kick off the appropriate workflow or otherwise cause the scaling action to be performed as discussed or suggested herein.
A user can set several such thresholds, which can be used by the monitoring system to determine whether an action should be taken or at least recommended. FIG. 6 illustrates an example 600 of a resource configuration page that can be used to provide thresholds, authorizations, and other such information in accordance with one embodiment. In this example, a customer is able to access a page through a browser or other user interface application to view and/or modify authorization settings. Although not shown, it should be understood that the customer can be required to go through an authentication or verification process as known in the art. In some embodiments, the user accesses the resource configuration page through the Web services layer of the control plane, and is authorized or verified using the mechanisms provided therein. The user can specify a group, account, or other such identifying information 602, as a customer can have multiple accounts for different applications, data sources, etc. For each account, the customer can be presented with user-modifiable options 604 to specify various resources in the data plane and criteria for modifying those resources. In this example, the customer has selected a processing resource, and specified that the processing allocation for this user account should be between 60% and 90%. A user might specify a top end of 90% because, for example, the customer wants to avoid being at, or exceeding, capacity faster than an adjustment can be made. A customer also might specify a minimum usage allocation, as the customer may not want to pay for excessive processing capability that is not being used. The customer in this example also specified that the control plane is able to make this adjustment automatically once it is determined that an action should be taken for the processing resource. The customer also has specified a threshold that the action should be taken when it is predicted that the capacity will fall outside the specified range within 30 minutes, as determined by trending or other such analysis.
In this example, the customer also has specified criteria for scaling the storage for this account. As shown, the customer has specified that the storage should be at 85%-95% of capacity. The customer can use a tighter range for the storage, as storage capacity will likely vary more slowly than the processing capacity. The customer has also specified that customer approval is required before scaling the storage. In this case, the customer has specified that the customer should be notified one day in advance of when the storage capacity is predicted to be outside the specified range. The customer then can decide whether or not to adjust the storage, as well as to decide the amount of storage to re-allocate.
One advantage to providing a user with the ability to authorize automatic adjustments is that components of the control environment can automatically scale various components or resources in the data plane in order to ensure that the customer always has sufficient capacity, and can reduce the allocated capacity when not required, in order to reduce the overall cost to the customer. Such an approach can be beneficial in cloud computing environments, for example, where a customer may be purchasing processing, memory, data, and other such capacity, but does not care about aspects such as the location, type, number, or other aspects of the resources, caring instead about factors such as availability, cost, and reliability. By enabling the system to automatically scale the resources without affecting the availability of the resources, a customer can be sure to almost always have sufficient resources allocated without having to purchase an excessive amount of resources in order to handle periods of peak capacity.
In one embodiment, metrics are automatically collected for parameters such as processing capacity, storage capacity, etc., as discussed above. The information can be stored to a monitoring data store or other such location for analysis by the components of the control plane (or for exposure to a customer in some cases). The monitoring component (or other such component) can run trending analysis on this information over a specified period of time, and can further extrapolate the information to predict future needs, bottlenecks, or other such circumstances. In one embodiment standard prediction and extrapolation algorithms can be used, such as linear or non-linear algorithms known or conventionally used for prediction and extrapolation of data. When authorized by the customer (either through customer settings or as part of the customer subscribing to a control service, for example), the monitoring component can automatically cause an action to be performed each time a bottleneck is predicted within a certain amount of time, a resource is above or below a threshold range for a period of time, or for any other appropriate criteria. As part of the workflow generated for the action, a task can invoke the appropriate API to perform the desired scaling. For example, a “modifyDatabase” or similar API can be called to increase or decrease the storage capacity for a customer.
An advantage to such an approach is that the scaling of storage can involve adding a data instance and rebalancing the storage, which can be performed without taking down, or otherwise affecting the availability of, the customer data store. In many cases, a user will not notice a change occur. In conventional systems, a DBA would need to obtain the additional storage and add the storage to the RAID (Redundant Array of Inexpensive Disks) controller, repurpose at least one machine, reboot the operating system, and/or perform other such tasks which can make the data store unavailable for a period of time. In a system in accordance with various embodiments, however, an extra data volume can be provisioned and attached to the data instance to increase storage capacity. For example, if storage capacity for a customer is to be increased by 200 GB, the service can provision four or five volumes of 40 GB or 50 GB each, and attach those volumes to the instance. The attached volumes can be added to a single logical volume, which can emulate the behavior of one single volume, disk, or other such abstraction. Each physical volume is added to, or removed from, the logical volume group in order to increase or decrease capacity. Once the capacity is changed, re-balancing across the new set of volumes can be performed automatically, with new writes or other actions automatically percolating to the appropriate volumes. Since a logical volume manager approach is being used over the data instances, the data store does not need to be taken down for any reason. Similarly, requests to a relational database instance will not fail as a result of the scaling action.
Scaling of other resources can be performed in a similar fashion. For example, processor or CPU scaling can be performed automatically as needed. In some cases, it may be necessary to make the data store temporarily unavailable in order to adjust or scale resources such as the processing, memory, or I/O resources. Each customer or operator can specify a maintenance window, such as a time period of traditionally low levels of activity, in which such actions are to occur. Information and various metrics can be obtained for a resource, and when any action is determined to be necessary, information for the action can be written to a job queue. For actions such as the scaling of processing capacity, where it can be necessary to take down the data store for a small period of time, the information written to the job queue can include a flag or other parameter value indicating that the action is only to be performed during the next (or a subsequent) maintenance window. A sweeper or other such component checking the job queue can examine the parameter value, and only extract the job during a maintenance window. In other embodiments, the information written to the job queue can include a time range or other appropriate information indicating to a sweeper component when to extract the information and perform the action. In still other embodiments, a sweeper might extract the job information at any time, and as part of the task information for a workflow a time window can be included wherein a component of the data plane is to perform the task. Several other such approaches can be used within the scope of the various embodiments.
The allocated space can be rebalanced to maximize the IOPS (input/output operations per second) performance for the volume group. In this example, the rebalancing can be performed by reallocating and moving PEs to the second device, such as by calling a “/pvmove/dev/second_device:5910-10239” command, which reallocates 4329 PEs to the second physical volume per the calculation above. After the rebalancing is completed, the logical volume and/or file system can be extended for the new capacity.
A similar process can be performed when reducing storage capacity. At least one volume can be removed from the volume group in order to reduce the volume group storage to the desired capacity. The total extents then can be compared with the usage of each remaining volume to rebalance and/or reallocate across the adjusted volume group.
For each of the tasks in such a workflow, at least one test for success or failure can be executed. For example, it can be desirable to ensure that a volume was successfully created before adding the volume to the volume group and attempting to reallocate PEs to that volume. If a test is run for a task, and it is determined that the task was not successful, the task can be retried at least one time (possibly up to a determined or selected number of times) before generating an error message or other such notification. The testing and retry can be performed automatically via the data environment, or as managed by the control environment. If a task fails a specified number of times, the entire process should be failed in order to avoid errors, data loss, or other such issues. Further, the control plane can manage the reversal of previous tasks, such as removing a volume from a volume group if the PEs cannot be reallocated to that volume. Various other approaches can be used as well within the scope of the various embodiments.
Another service that can be provided to a potential customer is to perform and/or recommend scaling based at least in part upon factors such as cost and latency. For example, a customer might wish to scale as necessary to provide optimal performance, but might not wish to scale beyond a certain cost point. A customer also might be willing to allow latency to reach a certain level before scaling unless a certain cost benefit is determined to be gained from the scaling. In other embodiments, a customer might request the lowest cost configuration for a given situation. For example, a situation can arise that might be addressed by scaling memory for purposes of caching, scaling the number of concurrent connections, and/or by increasing the processing speed or capacity. At least one algorithm can be used by the control plane to analyze the cost/benefit of each such adjustment, and the permutations of each possible adjustment, to determine a lowest cost solution to the customer. This could include any appropriate combination, such as scaling a portion of the recommended processing capacity in conjunction with scaling a portion of the recommended memory capacity, etc. Any appropriate algorithm for analyzing metrics and cost factors to determine an optimal solution can be used as should be apparent to one of ordinary skill in the art in light of the teachings and suggestions contained herein.
As discussed previously, the use of a control plane or service in accordance with various embodiments does not restrict the type of SQL queries that a customer can run, and does not impose any restrictions relating to construction of a schema, such as to be partition ready and not allow queries spanning partitions. Instead, a repository such as a relational database can be provisioned in a computing “cloud” without restricting the users' schema or queries. As commonly known, even though there is a theoretical SQL standard, the SQL quirks, syntaxes and their behaviors (e.g., NULL handling) vary across different relational database engines (e.g., MySQL, Oracle, or Postgres). For at least these reasons, users may wish to choose a relational database engine that is familiar for purposes of programming and operations. Such an approach allows customers to use the same set of database tools that the customers have used previously for tasks such as data modeling, development, and debugging, even when the customers migrate their data stores to the cloud (or elsewhere) via the control plane. Using such an approach, customers are not required to rewrite their application or any operational tools, which lowers the barrier of entry significantly for customers to move data to the cloud.
A customer's data repositories can be moved to the cloud in one embodiment by running the repositories on compute nodes of a cloud computing environment. Block level storage volumes, such as off-instance storage volumes that persist independently from the life of an instance, can be used with these instances for storing the repository binary, logs and volumes, for example. Such an approach can be advantageous, as the virtualization provides flexibility to quickly and easily scale a compute and storage resources for a repository. Further, such an approach can provide for persistent storage in the cloud.
As known in the art, relational databases can be run in different modes, such as may include: stand-alone (non-replicated), replicated, or replicated and partitioned. A customer typically makes the choice of which mode to run for a repository based on the availability and scalability needs of the repository and the incurred total cost of ownership (TCO). Some applications and services to not require a repository to be highly available and durable, and may instead utilize a stand-alone repository that is able to tolerate outages on the order of minutes. Other applications and servers can require a repository to be always available, and require the repository to never lose data even in the event of a failure. In this case, the applications and services typically require a replicated database offering. Some users, applications, or services require a massively scalable repository that can partition data across multiple repositories, such that scaling can occur beyond the compute and storage capacity of a single database. To address these different use cases, an approach in accordance with one embodiment offers at least two modes, such as stand-alone and high availability, for each database engine. Some embodiments also allow customers build their own partitioning layer on top of either stand-alone or high availability repositories.
For example, a control plane layer can take advantage of a workflow service to manage workflows. As commonly known, a key characteristic of any workflow engine is that the engine enables asynchronous and resumable processing. As discussed above, a workflow can be thought of as a state machine that starts with an initial state and goes through a series of intermediate state transitions by executing different steps of the workflow before reaching the end goal. This end goal can be thought of as the terminal state of a state machine. A workflow service offers the ability to create workflows, and provides hooks to determine the current state of a given workflow and the step(s) to next be executed. The service can store the current state of the state machine, keeping track of the steps which executed successfully and the steps that must be executed to keep the workflow moving. The service does not, in general, actually execute the state transitions for us. The precise tasks of executing the tasks for a workflow will in many embodiments be performed by the “client” components of the workflow.
executing a workflow in the separate control environment for adjusting the storage capacity of the logical data volume in the data environment based at least in part upon the scaling option in response to determining that the authorization is granted, the storage capacity being adjusted in the data environment by: (a) changing a number of the one or more physical volumes that collectively provide the storage capacity for the logical data volume without reducing availability of the logical data volume and (b) balancing input output performance among the one or more physical volumes.
extending the logical data volume by attaching the at least one new physical volume.
3. The computer-implemented method of claim 1, wherein balancing the input output performance among the one or more physical volumes is based at least in part on a number of available physical extents for the one or more physical volumes.
executing a workflow in the separate control environment for adjusting the capacity of the at least one resource in the data environment based at least in part upon the scaling option in response to determining that the authorization is granted, the capacity being adjusted in the data environment by: (a) changing a number of the one or more physical devices that collectively provide the capacity for the logical device and (b) balancing input output performance among the one or more physical devices.
5. The computer-implemented method of claim 4, wherein the at least one resource includes at least one of a processing component, a data storage component, a memory component, a communications component, a network I/O (input/output) component, or a data I/O component.
for each of the series of tasks, passing state information from a monitoring component in the control environment to a host manager in the data environment, wherein the host manager is operable to execute the task and return a response to the monitoring component.
determining a success or failure of each of the series of tasks before performing any subsequent task.
when the task and the retry are determined to have failed, failing the workflow.
failing the workflow includes rolling back each previously-executed task of the workflow.
when adjusting the capacity of the at least one resource is determined not to be authorized, contacting a user for the authorization before executing the workflow.
enabling a user to provide different levels of authorization for the at least one resource.
enabling the authorized user to call into the control environment to request the adjusting of the capacity of the at least one resource.
13. The computer-implemented method of claim 4, wherein the scaling action corresponds to a lowest cost among the plurality of scaling actions.
execute a workflow in the separate control environment for the adjustment of the capacity of the at least one resource in the data environment based at least in part upon the scaling option in response to a determination that the authorization is granted, the adjustment including (a) a changing of a number of the one or more physical devices that collectively provide the capacity for the logical device and (b) a balancing of input output performance among the one or more physical devices.
the at least one resource includes at least one of a processing component, a data storage component, a memory component, a communications component, a network I/O component, or a data I/O component.
when the determination is that the authorization is not granted, contact a user for the authorization before executing the workflow.
enable a user to provide different levels of authorization for the at least one resource.
enable the authorized user to call into the control environment to request for the adjustment of the capacity of the at least one resource.
execute a workflow in a control environment for the adjustment of the capacity of the at least one resource in the data environment based at least in part upon the scaling option in response to a determination that the authorization is granted, the adjustment including: (a) a changing of a number of the one or more physical devices that collectively provide the capacity for the logical device and (b) a balancing of input output performance among the one or more physical devices.
"Examination Report dated Dec. 11, 2012", Singapore Application 201202502-9, Dec. 11, 2012, 8 pages.
"Examination Report dated May 17, 2013", Singapore Application 201202967-4, May 17, 2013, 10 pages.
"Examination Report dated Oct. 19, 2012", Singapore Application 201202870-0, Oct. 19, 2012, 8 pages.
"Examination Report dated Oct. 29, 2012", Singapore Application 201202868-4, Oct. 29, 2012, 5 pages.
"Examination Report dated Oct. 9, 2012", Singapore Application 201107040-6, Oct. 9, 2012, 5 pages.
"Extended European Search Report dated Sep. 19, 2013", Europe Application 10827392.1, Sep. 19, 2013, 6 pages.
"Final Office Action dated Dec. 19, 2011", U.S. Appl. No. 12/415,968, Dec. 19, 2011.
"Final Office Action dated Feb. 22, 2013", U.S. Appl. No. 13/294,099, Feb. 22, 2013.
"Final Office Action dated May 8, 2013", U.S. Appl. No. 12/416,017, May 8, 2013.
"Final Office Action dated Nov. 1, 2012", U.S. Appl. No. 12/606,106, Nov. 1, 2012, 29 pages.
"Final Office Action dated Oct. 14, 2011", U.S. Appl. No. 12/415,958, Oct. 14, 2011, 34 pages.
"Final Office Action dated Oct. 16, 2012", U.S. Appl. No. 12/575,381, Oct. 16, 2012, 42 pages.
"Final Office Action dated Oct. 19, 2011", U.S. Appl. No. 12/418,475, Oct. 19, 2011, 26 pages.
"Non Final Office Action dated Apr. 18, 2012", U.S. Appl. No. 12/575,381, Apr. 18, 2012, 31 pages.
"Non Final Office Action dated Apr. 29, 2011", U.S. Appl. No. 12/415,968, Apr. 29, 2011, 30 pages.
"Non Final Office Action dated Aug. 19, 2011", U.S. Appl. No. 12/416,017, Aug. 19, 2011.
"Non Final Office Action dated Dec. 14, 2010", U.S. Appl. No. 12/415,987, Dec. 14, 2010.
"Non Final Office Action dated Feb. 14, 2011", U.S. Appl. No. 12/606,097, Feb. 14, 2011.
"Non Final Office Action dated Jan. 2, 2013", U.S. Appl. No. 13/620,962, Jan. 2, 2013.
"Non Final Office Action dated Jun. 20, 2013", U.S. Appl. No. 13/620,999, Jun. 20, 2013.
"Non Final Office Action dated Jun. 20, 2013", U.S. Appl. No. 13/621,073, Jun. 20, 2013.
"Non Final Office Action dated Mar. 14, 2012", U.S. Appl. No. 12/606,093, Mar. 14, 2012, 24 pages.
"Non Final Office Action dated Mar. 18, 2013", U.S. Appl. No. 13/299,601, Mar. 18, 2013.
"Non Final Office Action dated May 2, 2011", U.S. Appl. No. 12/415,958, May 2, 2011, 23 pages.
"Non Final Office Action dated May 2, 2011", U.S. Appl. No. 12/418,475, May 2, 2011, 20 pages.
"Non Final Office Action dated May 28, 2013", U.S. Appl. No. 12/606,106, May 28, 2013.
"Non Final Office Action dated May 31, 2012", U.S. Appl. No. 12/606,106, May 31, 2012, 29 pages.
"Non Final Office Action dated Sep. 13, 2012", U.S. Appl. No. 13/294,099, Sep. 13, 2012.
"Non Final Office Action dated Sep. 14, 2012", U.S. Appl. No. 13/299,601, Sep. 14, 2012, 15 pages.
"Notice of Allowance dated Apr. 15, 2011", U.S. Appl. No. 12/415,987, Apr. 15, 2011.
"Notice of Allowance dated Apr. 18, 2013", U.S. Appl. No. 13/620,962, Apr. 18, 2013.
"Notice of Allowance dated Aug. 12, 2013", U.S. Appl. No. 13/299,601, Aug. 12, 2013.
"Notice of Allowance dated Aug. 26, 2013", U.S. Appl. No. 13/620,962, Aug. 26, 2013.
"Notice of Allowance dated Aug. 8, 2011", U.S. Appl. No. 12/415,987, Aug. 8, 2011.
"Notice of Allowance dated Dec. 26, 2013", U.S. Appl. No. 12/415,958.
"Notice of Allowance dated Dec. 30, 2013", U.S. Appl. No. 13/620,999.
"Notice of Allowance dated Dec. 30, 2013", U.S. Appl. No. 13/621,073.
"Notice of Allowance dated Jul. 12, 2011", U.S. Appl. No. 12/606,097, Jul. 12, 2011.
"Notice of Allowance dated Jul. 5, 2012", U.S. Appl. No. 12/415,958, Jul. 5, 2012, 14 pages.
"Notice of Allowance dated Jul. 9, 2013", Japan Application 2012-533307, Jul. 9, 2013.
"Notice of Allowance dated Jun. 1, 2012", U.S. Appl. No. 12/415,968, Jun. 1, 2012.
"Notice of Allowance dated Jun. 26, 2012", U.S. Appl. No. 12/606,093, Jun. 26, 2012, 8 pages.
"Notice of Allowance dated Jun. 28, 2012", U.S. Appl. No. 12/418,475, Jun. 28, 2012, 20 pages.
"Notice of Allowance dated Mar. 16, 2012", U.S. Appl. No. 12/418,475, Mar. 16, 2012, 11 pages.
"Notice of Allowance dated Mar. 9, 2012", U.S. Appl. No. 12/415,958, Mar. 9, 2012, 29 pages.
"Notice of Allowance dated Nov. 13, 2012", U.S. Appl. No. 12/415,968, Nov. 13, 2012.
"Notice of Allowance dated Nov. 13, 2013", U.S. Appl. No. 12/606,106.
"Notice of Allowance dated Nov. 19, 2013", Japan Application 2012-536964.
"Notice of Allowance dated Nov. 19, 2013", Japan Application 2012-536966.
"Notice of Allowance dated Nov. 20, 2013", U.S. Appl. No. 12/606,106.
"Notice of Allowance dated Oct. 24, 2012", U.S. Appl. No. 12/606,093, Oct. 24, 2012, 13 pages.
"Oracle9i SQL Reference," Oct. 2002, Oracle Corporation, pp. 1-1 to 1-3.
"Supplemental Notice of Allowance dated Oct. 25, 2013", U.S. Appl. No. 13/294,099.
"Written Opinion dated Feb. 15, 2012", Singapore Application 201107040-6, Feb. 15, 2012, 6 pages.
"Written Opinion dated Oct. 2, 2012", Singapore Application 201202967-4, Oct. 2, 2012, 14 pages.
Amazon HQ Wki, "RDSMySQLConfigManagement/ConfigWorkflowDesign", RDS/EDS/DesignDocs/RDSMySQLConfigManagement/ConfigWorkflowDesign from https://w.amazon.com/index.php/RDS/EDS/DesignDocs/RDSMySQLConfigManagement/ConfigWorkflowDesign; downloaded Aug. 11, 2009; 2009.
Brett Battles, Reducing Data Center Power Consumption Through Efficient Storage, Google Scholar, 2007, 9 pages, .
Brett Battles, Reducing Data Center Power Consumption Through Efficient Storage, Google Scholar, 2007, 9 pages, <URL:http:://www.it-executive.nl/images/downloads/reducing-datacert-power.pdf>.
Corrected Notice of Allowability Nov. 13, 2012; in corresponding U.S. Appl. No. 12/415,958.
David Lomet, Recovery from "Bad" User Transactions, ACM, 2006, 10 pages, .
David Lomet, Recovery from "Bad" User Transactions, ACM, 2006, 10 pages, <URL:http://delivery.acm.org/10.1145/1150000/11142512/p337-lomet.pdf>.
English abstract for CN101099172; published on Jan. 2, 2008.
English abstract for CN101501668; published on Aug. 5, 2009 and retrieved on Oct. 8, 2014.
English abstract for CN101512507; published on Aug. 19, 2009 and retrieved on Oct. 14, 2014.
English abstract for CN101539841; published on Sep. 23, 2009 and retrieved on Oct. 14, 2014.
English abstract for CN1573753; published on Feb. 2, 2005 and retrieved on Oct. 14, 2014.
English abstract for JP2001518663; published on Oct. 16, 2001 and retrieved on Oct. 14, 2014.
English abstract for JP2003330781; published on Nov. 21, 2003 and retrieved on Oct. 13, 2014.
English abstract for JP2006048676; published on Feb. 16, 2006 and retrieved on Oct. 13, 2014.
English abstract for JP2007516510; published on Jun. 21, 2007 and retrieved on Oct. 14, 2014.
English abstract for JP2009522659; published on Jun. 11, 2009 and retrieved on Oct. 13, 2014.
English language Office Action mailed Dec. 3, 2013; in corresponding Japanese patent application No. 2012503674.
English translation of the First Office Action mailed Jun. 26, 2014; in corresponding Chinese patent application No. 201080056327.0.
English translation of the First Office Action mailed Oct. 21, 2013; in corresponding Chinese patent application No. 201080015811.9.
English translation of the Notice of the First Office Action mailed Apr. 1, 2014; in corresponding Chinese patent application No. 201080053676.7.
English translation of the Notice of the First Office Action mailed Apr. 21, 2014; in corresponding Chinese patent application No. 201080056327.0.
English translation of the Notice of the First Office Action mailed Jun. 12, 2014; in corresponding Chinese patent application No. 201080049395.4.
English translation of the Notice on the First Office Action mailed May 5, 2014; in corresponding Chinese patent application No. 201080056311.X.
English translation of the Office Action mailed Sep. 16, 2014; in corresponding Japanese patent application No. 2013262835.
Examination Report mailed Oct. 30, 2012; in corresponding Singaporean patent application No. 201107040-6.
Examination Report mailed Oct. 31, 2012; in corresponding Singaporean patent application No. 201202502-9.
Examination Report mailed Sep. 13, 2013; in corresponding Singaporean patent application No. 201202868-4.
Examination Report mailed Sep. 21, 2012; in corresponding Singaporean patent application No. 201202870-0.
International Search Report mailed on Dec. 2, 2010 for International Application No. PCT/US10/051757 filed on Oct. 7, 2010, 2 pages.
International Search Report mailed on Dec. 21, 2010 for International Application No. PCT/US10/54133 filed on Oct. 26, 2010, 2 pages.
International Search Report mailed on Dec. 21, 2010 for International Application No. PCT/US10/54139 filed on Oct. 26, 2010, 2 pages.
International Search Report mailed on Dec. 21, 2010 for International Application No. PCT/US10/54141 filed on Oct. 26, 2010, 2 pages.
International Search Report mailed on Dec. 23, 2010 for International Application No. PCT/US10/54133 filed on Oct. 26, 2010, 2 pages.
International Search Report mailed on May 25, 2010 for International Application No. PCT/US10/029476 filed on Mar. 31, 2010, 2 pages.
Invitation to Respond to Written Opinion mailed Sep. 14, 2012; in corresponding Singaporean patent application No. 201202967-4.
James R. Cordy, Practical Langauage-Independent Detection of Near-Miss Clones, ACM, 2004, 12 pages, .
James R. Cordy, Practical Langauage-Independent Detection of Near-Miss Clones, ACM, 2004, 12 pages, <URL: http://delivery.acm.org/10.1145/104000/1034915/p1-cordy.pdf>.
Non-Final Office Action mailed Apr. 9. 2014; in corresponding U.S. Appl. No. 12/416,017.
Non-Final Office Action mailed Jul. 30, 2014; in corresponding U.S. Appl. No. 12/575,381.
Non-Final Office Action mailed May 7, 2014; in corresponding U.S. Appl. No. 13/621,044.
Notice of the First Office Action mailed Apr. 1, 2014; in corresponding Chinese patent application No. 201080053676.7.
Notice of the First Office Action mailed Apr. 21, 2014; in corresponding Chinese patent application No. 201080056327.0.
Notice of the First Office Action mailed Jun. 12, 2014; in corresponding Chinese patent application No. 201080049395.4.
Notice of the First Office Action mailed May 5, 2014; in corresponding Chinese patent application No. 201080056311.X.
NPL-51-English abstract for JP2009522660; published on Jun. 11, 2009 and retrieved on Oct. 14, 2014.
NPL-52-Final Office Action mailed Nov. 6, 2014; in corresponding U.S. Appl. No. 12/416,017.
NPL-53-Notice of Second Office Action mailed Oct. 29, 2014; in corresponding Chinese patent application No. 201080053676.7.
NPL-54-English translation of the Notice of Second Office Action mailed Oct. 29, 2014; in corresponding Chinese patent application No. 201080053676.7.
NPL-55-Final Office Action Mailed Nov. 6, 2014: in U.S. Appl. No. 12/416,017.
NPL-56-Office Action dated Oct. 29, 2014; in Chinese Patent Application 201080053676.7.
Office Action mailed Apr. 14, 2014; in corresponding Canadian patent application No. 2,776,384.
Office Action mailed Apr. 3, 2014; in corresponding Canadian patent application No. 2,778,110.
Office Action mailed Apr. 3, 2014; in corresponding Canadian patent application No. 2778110.
Office Action mailed Dec. 3, 2013; in corresponding Japanese patent application No. 2012503674.
Office Action mailed Jul. 25, 2014; in corresponding Canadian patent application No. 2,778,723.
Office Action mailed Oct. 21, 2013; in corresponding Chinese patent application No. 201080015811.9.
Office Action mailed Oct. 3, 2013; in corresponding Canadian patent application No. 2,755,913.
Office Action mailed Sep. 16, 2014; in corresponding Japanese patent application No. 2013262835.
Patent Abstract for JP2000172721; published on Jun. 23, 2000.
Patent Abstract for JP2004206694; published on Jul. 22, 2004.
Patent Abstract for JP2004362596; published Dec. 24, 2004.
Patent Abstract for JP2008141339; published Jun. 19, 2008.
Ralph Mietzner & Frank Leymann, "Towards Provisioning the Cloud: On the Usage of Multi-Granularity Flows and Services to Realize a Unified Provisioning Infrastructure for Saas Applications," 2008 IEEE Congress on Services-Part 1, pp. 3-10.
Sanjay Ghemawat, The Google File System, ACM, 2003, 15 pages, .
Sanjay Ghemawat, The Google File System, ACM, 2003, 15 pages, <URL:http://delivery.acm.org/10.1145/1150000/1142512/p337-lomet.pdf>.
Suzuki, Yasuhiro et al.; " Cloud Computing, Provision", No. 58. Jul. 31, 2008, pp. 35-41.
The First Office Action mailed Jun. 26, 2014; in corresponding Chinese patent application No. 201080056327.0.
Tirthankar Lahiri, Cache Fusion: Extending Shared-Disk Clusters with Shared Caches, Google Scholar, 2001, 4 pages, .
Tirthankar Lahiri, Cache Fusion: Extending Shared-Disk Clusters with Shared Caches, Google Scholar, 2001, 4 pages, < URL:http:://www.vldb.org/conf/2001/P683.pdf>.
U.S. Appl. No. 12/418,475, filed Apr. 3, 2009, Sheth.
U.S. Appl. No. 12/418,476, filed Apr. 3, 2009, Sheth.
Written Opinion mailed Feb. 15, 2012; in corresponding Singapore application No. 201107040-6.
Yi Wang, Virtual Routers on the Move: Live Router Migration as a Network-Management Primitive, ACM, 2008, 12 pages, .
Yi Wang, Virtual Routers on the Move: Live Router Migration as a Network-Management Primitive, ACM, 2008, 12 pages, <URL:http://delivery.acm.org/10.1145/1410000/1142512/p337-lomet.pdf>.

References: application No. 2012503674
 application No. 201080056327
 application No. 201080015811
 application No. 201080053676
 application No. 201080056327
 application No. 201080049395
 application No. 201080056311
 application No. 2013262835
 application No. 201107040
 application No. 201202502
 application No. 201202868
 application No. 201202870
 application No. 201202967
 application No. 201080053676
 application No. 201080056327
 application No. 201080049395
 application No. 201080056311
 application No. 201080053676
 application No. 201080053676
 application No. 2
 application No. 2
 application No. 2778110
 application No. 2012503674
 application No. 2
 application No. 201080015811
 application No. 2
 application No. 2013262835
 application No. 201080056327
 application No. 201107040