Scaling up versus scaling out

The business models of several leaders in the relational database world have been fundamentally threatened by the rise of cloud computing. Why? Because traditional RDBMS scale up, they rely on a single extremely powerful server, and that server often runs proprietary and non-standard hardware and software, and so is very expensive. The cloud, on the other hand, is all about scaling out, that is, assembling arrays of generic hardware running distributed software. At the time of writing, the cloud model of scaling out seems to be winning. Check out the sluggish stock performance of Teradata or Oracle, both leaders in the traditional data solutions world between 2012 and 2017. Now contrast those with the meteoric increases in Amazon or Google's stock over the same period; these stock prices tell a tale.

Each of the leading public cloud platforms AWS, Azure, and GCP offer their own cloud-based relational database solutions. On the GCP, there are two: Cloud SQL and Cloud Spanner.

Cloud SQL competes squarely with RDS on AWS and in many ways has fewer options currently. For instance, Cloud SQL lets users run MySQL or PostgreSQL, while RDS has several additional options. Cloud SQL is similar to traditional RDBMS, it scales up, not out. This implies that there is an upper limit on the data size, as well as latency for users from different regions.

Cloud Spanner is Google-proprietary, and unlike Cloud SQL, it offers horizontal scaling as well as multi-region replication. Google is very proud of Spanner's technology, which is really quite incredible. Cloud Spanner can scale to handle just about any dataset size; this does require us to increase the number of nodes, and consequently the cost. In some respects, Spanner resembles Redshift on Amazon (Redshift is a data warehousing/OLAP product, not an RDBMS, but like Spanner it scales linearly with the number of nodes).

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset