If you thought running a database in the cloud was easy, think again. Databases in a cloud environment are inherently different from traditional installations in a datacenter or even in a familiar hosted environment.
There are four key considerations every system architect should take into account when designing a database for the cloud, said Razi Sharir, CEO of Xeround,
First, developers need a replicable, highly available setup because the cloud is an unstable, unpredictable environment.
Second, they need a database that scales elastically. "This means scaling out as opposed to scaling up," said Sharir. "The ability to add or remove nodes is harder on a cloud infrastructure."
Third, they must have a distributed database. Distributed databases require building the logic to handle multiple copies of the database while resolving data conflicts, as well as network and latency problems, he said.
Finally, developers need what he calls true multi-tenancy.
"Multi-tenancy doesn't simply mean a standard SQL database installed in multiple copies on the same virtual machine," Sharir said. "Such a set-up can cause more headaches and management overhead to keep running."
To pursue the above, developers have two options.
"The first -- which is very trendy these days -- is the NoSQL database, typically characterized as a schema-less, type-less value store with basic searching/screening capabilities," he said.
The benefit of this approach is developers do not need to plan their schema or data types, and are not bound to them once they're defined.
"The database is distributed by design and can handle extra-large scale and traffic," he said. "Handling various files such as music, video and large pictures is a piece of cake."
The bad news is that people would lose the relational and transactional capabilities so widely used in common commercial applications.
Traditional databases not enough
However, traditional, relational SQL-based databases are not the answer, he said.
"While these databases allow for transactional and query capabilities, and are likely already the backbone of a developer's existing applications, they lack some of the traits required to operate effectively in a cloud environment."
So how do you fuse the power of SQL databases with cloud requirements?
While some SQL databases are offered in the cloud, they might still be running the same old hosting setup under the hood.
Even running a couple of these in a virtualized container doesn't really address the issue, it just replaces blades with virtual machines, he said.
"The best solution is probably a SQL database with NoSQL capabilities," he noted. "There are a few attempts to address this approach, but most of them sacrifice certain aspects of either SQL or NoSQL. At Xeround we've always felt the answer lies in making SQL databases "cloud-able."
Sharir said Xeround's patented virtual partitioning technology (called simply Xeround) implemented over a scalable DHT (distributed hash table) turns a SQL database into a cloud database.
"We offer a SQL database designed specifically for the cloud," he said. "It provides multi-tenancy, high-availability, auto-scaling and self-healing - all without being bogged down by overhead costs in development and management."
Xeround is available as a Database-as-a-Service (DBaaS) or as a virtual appliance. Offered on Xeround.com and Amazon EC2, for trial/beta purposes, the DBaaS implementation simply requires uploading the database's schema and pointing apps to the new location.
Sharir said Xeround will soon be available from other leading cloud service providers. Xeround Virtual Appliance removes the barriers of running hybrid cloud configurations across private and public clouds.
"Before Xeround, you could not elastically scale a database without downtime," he said. "Xeround keeps running during scale and schema changes without a change in performance with no code or architecture changes required."