My last job was using MongoDB for what was essentially a relational application. It was every bit as as bad as I would have expected. Data consistency problems. Writing queries with a few joins were so much harder (though a lot of that was down to the nested data stored in the collections, a flat structure would have made it easier).
I'll add a couple of other benefits of SQL databases
- many frameworks Django for example have add ons that are based around a relational database. Django's admin and migration system for example make life so much easier as a developer.
- Have a fixed schema also makes it a lot easier for new developers to understand the structure of the database.
I’m having a hard time understanding the author’s model of “scalability” such that unique indexes are a problem, but joins are not. An arbitrary join (even an equijoin) between two relations sharded on distinct keys needs at least the kind of 1:N broadcast coordination required to ensure uniqueness.
I'll add a couple of other benefits of SQL databases - many frameworks Django for example have add ons that are based around a relational database. Django's admin and migration system for example make life so much easier as a developer. - Have a fixed schema also makes it a lot easier for new developers to understand the structure of the database.