An umbrage of influencer titles
This article is a, “get off my lawn, grumpy old man” article about PostgreSQL but more importantly it is a reminder to another generation to get some perspective. Derrick Wippler recently wrote an article that with a little more research and a little less whiz bang influencer titles would have been a great expose on limitations of a technology and how it makes sense to evaluate your solutions appropriately. Instead, our resident “Efficiency Czar, Evangelist of Cost-Effective Scaling, Professional Value Stream Detective, and Sustainability Champion” goes on a rant about how bad Postgresql (the software) is. It is articles like this that limit the ability to take writers about PostgreSQL seriously. The article is the “vaccines don't work” and the “Chemtrail conspiracy” of database writing. Database people like correctness and we don’t actually buy into the idea that the world is flat so I am going to address the article directly.
The issue with Derrick’s article is that it boils down to I don’t want to learn how to manage a database. I want it to be magic fairy dust from the sky daddy that hands me everything without having to work for it. For example:
“that is designed for consistent 24 hour operation throughout write saturation events”
If you are having write saturation events with modern PostgreSQL, it is likely your configuration that is the problem.
“that has replication designed to be backward compatible with other versions in case of a node failure during upgrades”
While it is true that binary replication is not compatible with other versions, we also have Logical Replication (and have for almost a decade. Not only is that compatible with other versions, it is compatible with other platforms such as S3 or MySQL through logical decoding.
“that doesn’t allow users to naively create schemas that will silently fail 4 years into operation because they used auto incrementing primary keys”
This one comment is the overexposure to the elements comment of the entire article. It says while jumping up and down on a couch Tom Cruise style that, “WHY CAN’T I JUST USE THIS WITHOUT KNOWING HOW”. Don’t get me wrong, I get it. It is an obnoxious thing to have happen and I often prototype without reading docs and understanding what I am actually doing. The difference is, I don’t blame the software when I realize it was my own ignorance that caused the problem in the first place.
“doesn’t require a full time DBA on staff to ensure performant operation and uptime, and that allows me to use the resources at my disposal efficiently and keep my operating costs low.”
Classic and untrue. It isn’t the DBAs that are the issue. It is the developers and their ego which is driven by the unrealistic expectations of the C-suite that is driven by the ridiculous assertions of the investors that drives this problem. DBAs may be an acquired taste but we are the ones that are constantly cleaning up after the developers who could never learn more than the ORM and think it is better to abstract over a framework to the point of job security through obscurity.
“Why is PostgreSQL Terrible?”
Derrick then goes on to list a series of public mishaps about PostgreSQL to attribute some level of legitimacy to his thoughts. Unfortunately, every case study he lists is literally, “I don’t know how to manage PostgreSQL” and “The developers actually broke it”.
There are other numerous errors in the article (no, PostgreSQL wasn’t released in 89) but I want to give credit where it is due. Derrick is absolutely correct on a few items:
- There is literally zero technical reason to not have in place upgrades. (Obviously restart required)
- Autovacuum deficiencies: There is absolutely a limitation to Autovacuum that has not yet been addressed and if you are running a system that hits this limit, it probably makes sense to migrate.
Does this mean that PostgreSQL solves every problem? Absolutely not. If it did, it wouldn’t be forked into 50 different products solving different problems. There is a reason that Aurora, AlloyDB and Yugabyte exist. They solve a problem PostgreSQL doesn’t while providing a PostgreSQL interface. PostgreSQL is a donkey: smart, stubborn, works hard and will be the last out of the field. It isn’t a Unicorn, let’s leave the fairy dust to Harry potter.
If it isn’t obvious, this article is meant to be enlightening and a fun answer to Derrick’s rant. I don’t know Derrick. I am sure he is a fantastic human being. Hey Derrick, why don’t you join me on my podcast? We could have a blast of an argument about, pick a topic.