In my previous post, I talked about the similarities between Microsoft Azure and Google Cloud in their Compute sections. In this post, I want to compare the Storage options provided by the two providers.
Microsoft Azure provides the following storage options under its Data & Storage section:
- SQL Database: Relational SQL DB as a service.
- Storage: Blobs, tables (NoSQL), queues, files and disks.
- Redis Cache: High throughput, low latency cache.
- DocumentDB: NoSQL document DB as a service.
- StorSimple:Cloud storage for enterprises.
- Azure Search: Search as a service for mobile and app development.
- SQL Data Warehouse (Preview): Elastic data warehouse as a service.
Google Cloud provides the following storage options under its Storage section:
- Cloud SQL: MySQL DB in the cloud.
- Bigtable: High-volume, low-latency data store (no queries)
- Datastore: Scalable store for NoSQL data.
- Cloud Storage: Binary/object store.
- Memcache: Key/value cache.
- Persistent Disk: Network attached block storage.
Microsoft Azure’s and Google Cloud’s storage options are not listed in a similar way, so let’s break it down in a way that makes sense for both.
Azure’s SQL Database and Google’s Cloud SQL are pretty much the same thing: relational DB in the cloud, except the former uses Microsoft SQL Server whereas the latter uses MySQL. Azure also has something new called SQL Data Warehouse which is an enterprise-class distributed database for petabyte volumes of data but it’s in preview mode currently.
In Google Cloud, we have Bigtable and Datastore for NoSQL support.
- Bigtable is a scalable, distributed, highly available and structured storage. It’s not really a database as it doesn’t support querying. It provides strong consistency for a single row and eventual consistency for a multi-level rows. In Bigtable data model, a row has a key and one or more columns, basically a key/value store. It supports CRUD on a single row and preserves single-row consistency and allows range queries by keys. It provides scalability by automatic sharding, reliability by replication and performance by reduced lock granularity and co-location of data.
- Datastore is built on top of Bigtable and it’s a database for entities and properties on those entities. It support queries by doing index scans on the property being queried (not on the actual underlying Bigtable), so all complex queries require a composite index table to be built upfront (single-property indexes come for free) but this means that the performance of queries depend on the size of the result set, rather than the size of the whole data set.
Azure provides its own Table and DocumentDB for NoSQL support.
- Table (listed under storage) is quite similar to Datastore in functionality. I haven’t run extensive tests on either Azure Table or Datastore to compare their scalability promises though.
- DocumentDB is a NoSQL document database service designed from the ground up to natively support JSON and a unique NoSQL offering from Azure.
Google provides Cloud Storage as binary/object store. In Azure world, this kind of functionality is provided via Blobs (listed under storage).
Google Cloud also provides Persistent Disk which is network-attached block storage and Azure provides Disks for similar functionality.
Cache (or in-memory key-value store)
Azure provides Redis Cache, basically an in-memory database based on open source Redis. Google Cloud offers a key-value cache via Memcache.
Azure provides StorSimple, cloud storage for enterprises and Google Cloud does not seem to have anything similar. Azure Search is also listed under storage which is weird, considering search is not really a storage feature. We’ll cover Azure Search when we talk about services.
This sums up our storage investigation in Azure vs. Google Cloud. In the next post, I want to look at different networking options provided by the two cloud platforms.