Running non-SQL Server database workloads in Azure

I’ve written few (most of my) posts about running SQL Server, and very often about running it in Azure. While Azure is absolutely the best cloud platform for SQL Server, it is also an excellent platform for plenty of other database workloads. In short: “If it runs on a server or a virtual machine, you can move it to the Azure.” However, I also feel that most blog posts should exceed tweets in length, which is why we’ll go a little deeper into this.

So many databases…

Not so deep, though, that we’d start discussing non-relational databases (those can go to CosmosDB).

Commercial, relational databases in Azure that are not SQL Server

When it comes to relational, enterprise-grade database workloads, outside SQL Server, I most often tend to run into Oracle and DB2. Both can definitely run on VMs, but both also have some exotic deployment models that can make your life interesting, or horrible and painful. Especially if you’re trying to move some of these beasts into public cloud, like Azure.

Oracle RAC

There is a huge amount of confusion around what you can actually do with Oracle and especially RAC in the public clouds. You can certainly deploy it there, the question is that should you. Oracle has made it clear that they are not supporting RAC deployments in any other cloud platform than OCI. To quote Oracle document ID: 2688277.1 (which you can only access if you have Oracle support ID, thanks for that Oracle)

Support Policy for Oracle Real Application Clusters (RAC)

Oracle does not support Oracle RAC or Oracle RAC One Node running on Non-Oracle Public Cloud Environments.

It doesn’t really help to clear the confusion around this topic, that a lot of cloud platforms have Oracle RAC certified hardware to offer. Certified hardware is not, in this case, the same as having a fully Oracle supported environment. To add to the mix, Azure has couple separate offerings aimed just for running Oracle RAC in Azure, to mention a few see the list below.

Microsoft and Oracle also provide interconnectivity between Azure and OCI, but I have never heard anyone recommend running apps and databases in different clouds. You will also not hear me recommend it, unless it’s an app that’s especially designed to handle latencies and network interruptions.

Oracle without RAC

Oracle workloads without RAC are, however, perfectly fine to be running in Azure, including use of GoldenGate and Data Guard deployments. There’s a slew of options for deploying VMs running Oracle in Azure Marketplace. The only thing to remember is, that there is not PAYG licensing model available, so you need to bring your own license (BYOL).


DB2 for Linux, Unix and Windows (LUW) is surprisingly Azure friendly, that is if you run the latest version of it. There is a really nice setup for high-availability based on SUSE Linux and Pacemaker, which, combined with the use of Azure Availability Set or Availability Zones, provides a good solution for more business critical workloads.

Occasionally, you get unlucky and find yourself looking at DB2 running on AIX. If you’re in a hurry to get to Azure and can’t replatform out of the current setup, there’s still hope for you yet. Let me introduce you to Skytap on Azure, which is pretty much a bare metal solution for DB2.

Skytap on Azure, alternative for running AIX workloads.
Source link

Note: Skytap is currently available only from 5 Azure Regions, so you might still be out of luck.

Open-Source Databases in Azure

Many people are surprised to learn that Azure has an excellent PaaS offering for your favorite open-source databases: Postgres, MySQL and MariaDB. To me, this makes complete sense, seeing how popular these databases are with organizations and developers today. What makes Microsoft offering different from, say AWS, is that they’re using the community editions for 100% compatibility to perform migrations to in or out of Azure.

For MySQL, Postgres and MariaDB, you can also enable the Azure Defender to provide better security for your data assets.

Azure Database for MySQL and MariaDB

Azure Database for MySQL has all the benefits you would expect to find from Microsoft flagship, SQL Server Database in Azure. The SLA provided can go up to 99.99%, and you can also get the Query Performance Insights and Performance recommendations for the database. MySQL offering in Azure also includes Flexible Server option, adding the capability to scale vertically as needed, and to horizontally up to 10 readable replicas.

For MariaDB Database, there are the same benefits of having it as a fully managed database, but compared to MySQL the offering is missing some useful features.

Azure Database for PostgreSQL

Azure PostgreSQL Database in Azure is, in my opinion, even more impressive than MySQL. Besides having the Flexible Server deployment option, in Azure, Postgres can be deployed as a fully managed database. With the Citus extension, you can have a truly hyperscale database with the capability to scale horizontally to dozens of worker nodes.

Maybe just a brief note about the non-relational databases

Against what I was promising at the beginning of the article, I do make a small note about non-relational databases. While they should probably go to CosmosDB, that is not the only option in Azure. Recently, Microsoft has introduced a Managed Instance for Cassandra, which is still in preview. I wouldn’t be too surprised to find similar deployment models becoming available for other non-relational databases in the future.

And that’s it for today. While SQL Server is core of the Azure infrastructure and the one that Microsoft likes to talk about most often, it’s not the only supported database there.

Published by

Leave a Reply

%d bloggers like this: