&gt;&gt;&gt; use the right tool for the job&quot; and &quot;do one thing and do it well&quot; feels like the right approach to take<p>Absolutely. However, database is a sort of an extreme example. A lot in the modern software (especially Web) relies on the database, and often migrating to completely different one (because requirements change and it might not be the right tool anymore) is a huge task. So you want to use something flexible enough.<p>Also, you want to hire people, people leave the jobs, people change teams, etc. If you use some exotic, less common DB, it adds a lot of overhead. And if you apply the &quot;right tool&quot; to an extreme and have a few completely different DBs flying around, your maintenance cost increases a lot.<p>See, SQL might not be a perfect, most elegant choice, but most often it is just good enough. A lot of people have used it, a lot of people have scaled it. If you run into an issue, often enough,other people did too and blogged about it, etc. Hiring &#x2F; getting help will be much easier than $insertNoSQLDBName.<p>And, let&#x27;s be realistic, relatively few companies have hundreds of gigabytes or terabytes of data that typical relational DBs can&#x27;t handle.<p>My rule of thumb is that if you&#x27;re in doubt, use SQL&#x2F;relational store (I realize that they are different things but often used as synonyms and mean MySQL&#x2F;PostgreSQL&#x2F;etc).