PostgreSQL vs. MS SQL Server

I work as a data analyst in a global professional services firm (one you have certainly heard of). I have been doing this for about a decade. I have spent that decade dealing with data, database software, database hardware, database users, database programmers and data analysis methods, so I know a fair bit about these things. I frequently come into contact with people who know very little about these things – although some of them don’t realise it.

Over the years I have discussed the issue of PostgreSQL vs. MS SQL Server many, many times. A well-known principle in IT says: if you’re going to do it more than once, automate it. This document is my way of automating that conversation.

Unless otherwise stated I am referring to PostgreSQL 9.3 and MS SQL Server 2014, even though my experience with MS SQL Server is with versions 2008 R2 and 2012 – for the sake of fairness and relevance I want to compare the latest version of PostgreSQL to the latest version of MS SQL Server. Where I have made claims about MS SQL Server I have done my best to check that they apply to version 2014 by consulting Microsoft’s own documentation – although, for reasons I will get to, I have also had to rely largely on Google, Stack Overflow and the users of the internet. I know it’s not scientifically rigorous to do a comparison like this when I don’t have equal experience with both databases, but this is not an academic exercise – it’s a real-world comparison. I have done my honest best to get my facts about MS SQL Server right – we all know it is impossible to bullshit the whole internet. If I find out that I’ve got something wrong, I’ll fix it.

I am comparing the two databases from the point of view of a data analyst. Maybe MS SQL Server kicks PostgreSQL’s arse as an OLTP backend (although I doubt it), but that’s not what I’m writing about here, because I’m not an OLTP developer/DBA/sysadmin…”