MySQL – A Natural Starting Point for Databases in the Cloud
Early in the application development cycle, developers need to decide which database to use – this important decision impacts all facets of the creation and future management of the database:
- Schema design – Since different databases have different ways to optimize the raw logical schemas, the schema is designed and optimized for a specific database.
- Toolset – The different tools that are used for the configuration and management of the database are also frequently tied to a specific database technology. For example, MySQL workbench or PHPMyAdmin are used to manage MySQL databases.
- Cost – same as with cars: there are the high-end “Ferrari” like databases, and the more economical ones. Since many of us can’t start with a Ferrari right off the bat, the initial costs of running a database should also be considered.
- Simplicity and manageability – When choosing an ‘exotic’ database solution (like an exotic car…) expect high maintenance costs. These could be, for example, either in the form of work hours or in costly change management procedures. Those high maintenance costs come in addition to the risk of service outage and having to dig in an endless number of files or logs to find out what went wrong and how to restore the service.
- Feature set – The database has to satisfy both the functional and operational needs of the application. Things like online backup and full ANSI SQL, and so on.
- Supported platforms – Preferably, the database should support as many platforms as possible, to allow maximum mobility and flexibility.
- Performance – This is an important issue, and may be an app-killer to your killer-app… However, this needs to be put in the right perspective, and performance objectives for the database should be defined based on use-cases. Nonetheless, this is a tricky one; databases behave differently when dealing with more or less concurrent requests. An important database capacity is its ability to scale if needed, to meet the performance objective under higher load.
As understood from the title of this post, my mind is already made up on the right choice for your database in the cloud :)
Why MySQL? Well, the most important thing to me is that I do not want to be blocked by a specific solution or locked to one solution — on any one of the considerations listed above.
MySQL is, in fact, more than a database. It’s an open, well developed and broad ecosystem, with many options and flavors in place. This allows me to create my application based on MySQL and then, when it comes to deployment, I can choose between various options without changing anything in the way I work:
Plain MySQL is simple enough to install and operate for the skilled developer. Alternatively, I can use a free Xeround database instance, which will work seamlessly with my MySQL application. For Ruby and Heroku developers, Xeround Cloud Database is one of the DB add-ons.
When my application matures, and picks up more audience and load, I can move to a fully managed service like RDS, or upgrade to a full scale database with Xeround, which gives me peace of mind as for my database scalability and availability. Another option for the very skilled developers and system engineers is MySQL Cluster, which can help me grow my database and throughput gradually.
In most cases, choosing MySQL would be the right decision because of its rich and diversified ecosystem. Databases should not be showstoppers, and MySQL gives me great choices for the different phases in my application lifecycle.
Xeround’s MySQL façade implementation is a great addition to this ecosystem. It enriches it in the most suitable way for the cloud. It is not aiming only at the “big fish”, like MySQL Cluster does, but providing a managed database service that can suite the full lifecycle of the application – for both the “Average-Joe” developers and the bigger fish.
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)