Well rounded ACM article on building scalable SQL solutions authored by Michael Rys:
Building scalable database applications is not necessarily a question of whether one should use a relational database system or a NoSQL system. It is more a question of choosing the right application architecture that is agile enough to scale. For example, combining asynchronous messaging with a relational database system provides the powerful infrastructure that enables developers to build highly scalable, agile applications that provide partition tolerance and availability while providing a high level of eventual consistency.
Scale-out applications with SQL are being built using similar architectural principles as scale-out applications using NoSQL while providing more mature infrastructure for declarative query processing, optimizations, indexing, and data storage/high availability.
First thought after reading the article was that while it is probably possible to build systems with similar characteristics on top of either NoSQL databases or RDBMSs, using NoSQL solutions involves an incremental approach where you create and assemble together the building blocks fulfilling the requirements of the system, while using a relational database translates the set of requirements into solutions to overcome/eliminate limitations of the database. Differently put, using NoSQL databases feels like assembling your systems out of small Lego blocks, while using a relational database might feel like chopping a log to make it take the form you need.
Original title and link: Scalable SQL: How do large-scale sites and applications remain SQL-based? (NoSQL databases © myNoSQL)