I spent the first few years of my IT career working as a systems developer during the day, and teaching college at night. At first I taught a lot of courses on office automation technology. After a few years, I ended up teaching systems analysis and design, and database design. I did that for years before the travel schedule got to be too much, and I had to give up the college professor gig.
The database design course explained the theory of what databases are and do, including models, design approaches, and how to bind databases properly with applications and other systems. The fundamentals of database design teach us that the way you approach database design for one system is very different from the way you approach it for another. You have to consider things such as the platform, the application, type of data, and, most important, how the database will be leveraged in operations.
The rise of the cloud, as well as cloud-based databases, have led to some rethinking about how we do database design for cloud-based systems. While many hold on to the belief that databases in the cloud are the same as databases in the enterprise, the reality is that both the consumption model and the platform are different, and you need to design your database accordingly to take the best advantage of the platform.
So, what’s changed? In the case of the public cloud, there are a few obvious things to note:
First, the database is typically remotely hosted. Those who consume the data are rarely collocated with the data. The data’s ability to move effectively between the physical database and the application or user is something that must be considered in the design of the database, and the design of the applications that leverage the database.
Second, the database may be widely distributed. This means that aspects of the data may exist in the cloud, on-premise, or on several clouds. These types of complex multi-cloud architectures are becoming the norm, and databases should be designed around the use of multi-cloud, including how the data will be distributed on each platform and for what purpose.
Finally, the database is typically accessed using data services. The use of the cloud means the use of cloud-based APIs or services, and the database is no different. When considering new systems to be built on cloud-based platforms, as well as existing systems that will migrate to the cloud, the use of service orientation is much more “architecturally correct” and productive. Both services provide and consume data that exists within the growing cloud services catalog. Thus, there is an increased ability to reuse these data services among many different types of applications, versus more traditional database access approaches.
This is an evolution in how databases are deployed on cloud-based platforms. So, what are the new rules consider when designing databases?
Rule 1: Make sure to design databases as autonomous entities, which are not bound to specific applications. The days of coupling applications to databases are long over, cloud or no-cloud. However, it’s more important that you loosely couple data when moving to cloud-based platforms. The data may not coexist with the application, or perhaps be more widely distributed on the cloud-based platforms.
Rule 2: Design security and governance into the database. For the most part, security and governance are afterthoughts, layered into the database just before or after deployment. In the case of cloud-based databases, this does not wash. Security should be considered when the database is designed and based how it will be leveraged. What’s more, consider how the data will be governed and managed. This has to be planned ahead of time.
Rule 3: When in doubt, break it out. The ability to distribute database processing across many server instances on public clouds is something that’s new and powerful. As we’ve seen with the use of big data, this brings the ability to scale up database operations as needed to do complex and far reaching queries in a fraction of the time it took when using traditional systems. While Hadoop provides a standard way to distribute data, many emerging cloud-based databases provide easy and elastic distribution mechanisms that should be considered as well.
So have things changed with the cloud? You bet, but things are always changing. The way databases were designed and operated back in my college professor days are very different from how they should be designed and deployed today on cloud-based platforms. That said, fast forward 3 or 5 years and we’ll be thinking a bit differently about databases again, and that’s what makes this business fun.
Photo courtesy of Shutterstock.