A database is a collection of persistent data organized in such a way as to enable fast location and query of the data. The persistence of the data can be over the time for which an application runs or it can extend over much lon-ger periods spanning multiple application instances and lifetimes. Typically, the characteristics of a database are (1) compactness, (2) speed of data retrieval and updates, and (3) currency, which ensures that the data remain relevant and up-to-date for your purposes. But you could think of a database as simply an electronic filing system that has an index, records, and an organization to arrange the records for easy access. Because the database forms part of the in-tegration and communication layer between applications, and thus enables multiple applications to share and reuse the same data, it is called middleware. Underpinning a database is a storage system that physically stores the data for the database. So, besides the IaaS storage service discussed earlier, you could have a database system hosted on a PaaS service.
This “database as a service” then ensures that you have a cloud cell that acts as a database system. Such a database service would need to be accessible easily and quickly for the applications that need to use it. So ideally you would want the database service to be in the same cloud as the applications that access it. This minimizes transaction times and provides optimum performance. The advantage of such a configu-ration is that you would have most of the IT stack in the cloud: the application, its database, and its physical stor-age. If the application were a web-based application, then you would access it remotely using a web browser, and if it were a “thick-client” application,3 then you would use ap-plication virtualization (as explained in chapter 1) in order to access it, which can be a means to realize a thin-client or zero-client computing model. Another advantage of having a cloud database service has to do with databases’ usefulness to the extent that, for a variety of applications, they can be viewed as commod-ity items. As such, you could configure a database service as a cloud cell that acts as an appliance. This means that every time you needed to have a database, you would not need to specify, install, and configure one; you would in-stead just call up the database cloud cell within your cloud environment and link it to your application. That way, you would save time, effort, and expense by using the database-as-a-service cell. One of the major impediments of devising and using database cloud cells is commercial. Most companies do not have licensing policies that are amenable to such a cloud computing pattern or paradigm. One way of overcoming this difficulty is to use a free, open source, database such as PostgreSQL or MySQL. Yet another advantage of a database cloud service is that applications hosted on disparate platforms that use different technologies can very easily access and query the records of a database system in a seamless manner. Acces-sibility of a database is further enhanced when using it as a cloud-based service as access is provided to the information from anywhere in the world using disparate applications and platforms. This is because database systems are very mature, in IT terms, and have various technology agnostic protocols, such as JDBC (Java Database Connectivity) and ODBC (Open Database Connectivity), for connectivity. In addition to these, most databases use a well-defined lan-guage called SQL (Structured Query Language) for query-ing, updating, and modifying database records. As a result, applications at different locations can become highly inte-grated with the use of a cloud-based database service.