The path of the Cloud generally starts in migrations to infrastructure platforms as a Service (IaaS); where we make a virtual mirror of our physical structure on which we deploy our applications.
The next step comes when we recognize that the true value and productivity of the Cloud is in the Platform as a Service (PaaS), and we face new challenges in the form of software transformation and reconstruction in the search for the optimal cost/benefit ratio.
And one of the initial decisions that have more impact is to adopt the storage of our information in Databases as a Service by selecting which one to use in our software; being the NoSQL solutions, an affordable first step, of remarkable simplicity, powerful and of contained cost.
Why transform towards simplicity?
The first thing to be clear is that the adoption of this type of service is not a ”silver bullet ” that is valid for all use cases. Moreover, the relational databases of all life have inherent advantages and disadvantages, studied and recognized this type of storage services. However, for applications that require an especially economical way to store data that adapt to the characteristics of these WCS services and that allow changing the persistence logic – the data storage layer – in a simple way to migrate to the APIs of connection can be a solution with an excellent efficiency ratio.
The key lies in the complexity of the data structure and the relational operations that we have to perform on the set of tables.
The three that we are going to analyze in this article are of the type Wide Column Store (WCS), heirs of this paper of BigTable, which defines a storage in two-dimensional tables where the first columns are the indexes (between one and three columns) that unequivocally identify the horizontal rows that store the records. Next, an indeterminate number of columns is defined in which the field structure of the records is constructed, in a totally flexible way, based on a key/value format.
This dynamic approach to the data structure allows us to evolve and transform the persistence of information without being constrained by the rigid conventions of relational systems.
They are also platforms with a particularly good performance, both in reading and writing operations, having a very simple database engine, oriented to do only what is needed (List, Insert, Update and Delete), without heavy languages of exploitation as it is SQL, and avoiding having to support complex commands such as JOIN, GROUP, ORDER, etc.
In summary, they are light, simple and fast. And, being a Cloud service that allows us to forget about managing scaling, high availability and data sharing; the platform itself being responsible for ensuring service agreements (SLA) of more than 99.99%.
The simplest, not the least powerful
At the moment, a tricephalic monopoly in Cloud technologies is being consolidated with Amazon in the lead with a presence in the market of almost 47%, followed very far by Microsoft Azure with 10%, and Google closing the club to be touching 4%. The generic persecuting group is headed by IBM and its SoftLayer which gets close to 3%; completing the remaining 36% with a myriad of small platforms. Apache Cassandra is the WCS database that reigns indisputably in this segment of the market, but we have not included it in the analysis since there is no cloud service that allows us to consume it in PaaS format.
However, Amazon’s SimpleDB, Microsoft’s Azure Tables, and Google’s Cloud BigTable are indeed NoSQL database cloud services, which represent the first link to the persistence of information beyond binary storage.
In the following table you can see the direct comparison of the three services:
|DESCRIPTION||MICROSOFT AZURE TABLE STORAGE||AMAZON SIMPLEDB||GOOGLE CLOUD BIGTABLE|
|DATABASE MODEL||Wide column store||Wide column store||Key-value store|
|PREDEFINED TYPES||Yes||do not||do not|
|ACCESS METHODS||RESTfull API||RESTfull API||gRPC (using protocol buffers) API HBase API compatible (Java)|
|CONSISTENCY||Immediate Consistency||Eventual Consistency Immediate Consistency||Immediate Consistency|
|TRANSACTIONS||Optimistic lock||do not||Atomic operations in a registry|
|ACCESS CONTROL||Access rights based on permissions on the service, authentication by private key and shared signatures||Access rights via AWS Identity and Access Management (IAM)||do not|
|POPULARITY||Position 66||Position 91||Post 159|
It should be noted that SimpleDB is not really a BD of type WCS, but Key-value Store. Its operation is practically the same as the rest of the comparison, having its main difference in that it is not designed for large volumes of information as if its opponents are.However, we have included it in the comparison because Amazon does not have a WCS service, and DynamoDB – which can be used in this way – is classified within a higher level of complexity where it would be accompanied by CosmosDB or similar.
The three magnificent
Using the own pages to calculate the prices of the three Cloud platforms, we have found that the costs are different for similar configurations: November 2017, 1Tb. of storage, in the CPD of Ireland, with the geographic replication by default.
- Amazon SimpleDB: $ 281 / month
- Google BigTable: $ 174 / month
- Azure Tables: $ 75 / month
But these prices must be taken with care because there is a sustained war that allows for a constant (downward) variation of them; that each calculator requests different data to perform the cost forecast; and that the sections up to the first Gigabyte, are free in the three Clouds.
Certainly, they are not going to be objective causes based on metrics of performance or of various volumetrics that should make us opt for one of these three magnificent platforms.
They are really fast in both writing and reading operations, have a storage capacity that only has our budget limit, and availability, stability, and resilience are ensured by the Terms of Service.
Therefore, less obvious factors become important, such as the knowledge we have of the Cloud that supports it. For example, if the development team is used to Microsoft environments, it will tend to use Azure and Tables Storage; On the other hand, if the application works on AWS, the normal thing would be to opt for Amazon’s SimpleDB; and we would choose Google if our main working language was Go.
Popularity rankingIf anything to point out as an advantage or disadvantage as the case may be that Google’s BigTable uses an own access API, not as well known as the universal RESTfull API of Microsoft and Amazon.
The documentation in all cases is excellent and very abundant in all the Cloud going a step ahead of Microsoft – which is making a Herculean effort to solve what was its weak point a few years ago.
Amazon offers, however, the longest service and – therefore – more mature and well-known. We must recognize that bringing more than a decade of advantage to its competitors provides a security and stability that should not be forgotten.
Google, in its favor, has that the Bigtable service is used internally in such demanding platforms as Analytics, Maps, Gmail, etc. confirming that it meets the expected characteristics.
In short, to choose between Tables, SimpleDB or Bigtable, what you have to do is look around: what is it that we know how to do, what we have to integrate with and what Cloud platform we want to work on best.Any of the three is excellent.