Azure Storage Options
Part 1: Why Create a Platform-as-a-Service (PaaS) Solution?
Part 2: Storage Options with PaaS
Part 3: PaaS Architecting: Designing Apps for the Cloud
Part 4: PaaS Security (coming soon)
Deciding which Azure storage medium to use for your Azure PaaS solution can be a little disconcerting. There are several options and it’s likely you haven’t used most of them. Traditionally, organizations have used relational storage technologies (RDBMS) like SQL for their data storage needs. SQL Server, MySQL, and Oracle are just three of the many SQL options. SQL has become a standard choice for data storage due to its powerful query features (and where it gets its name). However, there are scenarios where SQL is not the best option. There are certainly faster and more flexible data storage technologies. In some cases, you should look at NoSQL storage technologies. Before jumping into the PaaS-specific storage options, it’s beneficial to understand what the various storage technologies are.
Relational storage technologies tend to be the go-to option for most organizations because it’s what everyone is familiar with. SQL Server, MySQL, Oracle, SQL Lite and many others fill this category. They allow for complex searching criteria and are designed to ensure the integrity of the data. Relational storage requires considerable design planning. It’s a good idea to design your table structures early in the your development process. Understanding your core search and query needs will inform these structures.
NoSQL options are varied. There are four categories of NoSQL options: Key/Value, Column Family, Document, and Graph. Key/Value offers a great solution when you have a lot of data and only need to retrieve a single item given a particular key value. It’s not a good solution when you need to find data based on various queries or multiple values. Azure table storage and blob storage are typical key/value storage options. Table storage is highly scalable and cheap but does not provide a lot of flexibility beyond querying against its key. Blob storage also uses key/value and is a great storage medium when you need to store files. Blob storage is essentially file storage in the cloud where the key value is based on the folder and file name. Column family storage is great for keeping huge amounts of data. In fact, column storage handles large amounts of data much better than RDBMS does. Column family storage keeps data in columns unlike relational DBMS which store data in rows. Its limitation is that you cannot do complex querying for data, you are limited to querying against the key value. This makes it fast and efficient but not as flexible. Document storage is built for semi-structure data or ‘document-oriented’ data. Unlike a traditional RDBMS where the schema must be predefined and all data must have the same format as every other, document storage allows for unique properties in each document. It also allows a little more flexibility to querying because it does not limit you to search on just the primary key, but extracts and indexes various metadata which makes finding content in the documents much easier. Graph Storage stores data as objects and their corresponding relationships. Its primary purpose is to allow you to query based on the relationships of the objects themselves.
When building an Azure PaaS application you have three PaaS options: Azure SQL storage, Table Storage, and Blob storage. Using one of these options means you do not need to install, configure, or manage the database infrastructure. All that management is done for you, behind the scenes. If you need Document storage, Graph storage, or Column family storage, or you want to use a specific RDBMS technology, then you will need to use Azure’s Infrastructure-as-a-Service (IaaS) and install it, or choose one of the pre-built images from the Azure gallery.
Choosing a data storage technology is one of the important first steps when building an Azure PaaS application. As you can see, there is no single ‘best choice’ when it comes to data storage technologies. Each has their purpose. Take the time to better understand the various technologies before taking too big a step. Or, make sure you have built your applications in a way that allows you to modify your data storage technologies should you find that the current solution doesn’t suit your application needs.
For more information, check out this overview by Tom Dykstra, Rick Anderson and Mike Wasson.