Oracle makes fantastic databases. It doesn’t make many friends. Amazon Web Services (AWS) CEO Andy Jassy played to this anti-Oracle sentiment in his AWS re:Invent 2017 keynote, and the reason the audience found it so funny is that it resonated as truth. Oracle regularly gets cited as one of the vendors enterprise customers would most like to ditch.

And yet they don’t. Not in droves, anyway. This is particularly odd given that a ready-made, open source replacement exists: Postgres. Now the world’s fourth most popular database, Postgres has a wealth of community love and over two decades of engineering. Yet for all the Postgres love, it has yet to significantly dent the Oracle hate. Why?

A little respect

To be clear, Postgres isn’t a drop-in Oracle replacement. As Oracle DBA Neil Chandler has pointed out, Postgres “is nowhere near as capable as Oracle.” Even so, he continued, “on modern hardware it is capable enough for many systems.”

Some say the variances between the two are “niche,” but the reality is that Postgres is quite good, just not good enough to fully replace Oracle (a bit like OpenOffice in its day trying to replace Microsoft Office. It turned out 95% compatibility wasn’t worth the risk of running afoul of those 5% edge cases).

As such, the upside for abandoning Oracle is daunting. As DBA Bjoern Rost‏ told me, “No one wants to move their top workloads off of Oracle and risk performance, availability and security.” Those risks may be more perceived than real, but perception is reality, especially when it’s easier to just pay the Oracle tax as “no one ever got fired for spending too much on Oracle”.

SEE: Job description: Oracle application developer (Tech Pro Research)

What is clear, however, is that Postgres, much like MongoDB, MySQL, and other Oracle alternatives, proves its mettle for net new database needs. When was the last time a startup opted for Oracle? The answer to that is “never.” But it’s not just startups: Enterprises, too, are turning to Postgres for modern application workloads, and companies like AWS are happy to help them make the switch. As Mark Porter, general manager for Amazon RDS & Amazon Aurora, told me: “At AWS, we love PostgreSQL for both RDS for PostgreSQL and for Aurora PostgreSQL. The code is great, the community is forward-thinking and innovative, and customers are moving enterprise workloads to PostgreSQL almost faster than we can keep up!”

Even so, there’s serious friction involved in breaking the Oracle chains.

Chains of ‘love’

A database decision isn’t simply about the database, of course, and Oracle has spent decades perfecting the art of the deal. That is, some of the biggest reasons people can’t check out of their Hotel California-esque relationship with Oracle is that they’re contractually bound to stick around. Forever. Sort of.

A few years back EnterpriseDB, built on Postgres, offered enterprises something they shouldn’t have been able to refuse: All the Oracle database goodness without any of the Oracle. Enterprises were intrigued, but the efforts foundered. The problem? Contracts. As Keith Alsheimer, chief marketing officer for EnterpriseDB, explained:

Some of the practices that Oracle has of locking customers in contractually is a real challenge. Even if they want to move over [to another database system], they still have this number of licenses they bought, and they have to pay support for them [even if those licenses remain unused]. It’s very hard to get out of that.

SEE: Vendor contract renewal planner (Tech Pro Research)

It’s not merely a matter of contracts, but also how Oracle sells. Over the years, Oracle has acquired a bevy of applications (ERP, CRM, SCM, etc.) and tends not to certify that those applications will work with any other database. They probably would work fine, but not many CIOs would take that risk, especially given that doing so would violate their (wait for it!) contracts.

Add to this the inherent stickiness of databases–once you have it running, you don’t really want to change things–and Oracle has managed to double up on database stickiness through contracts and go-to-market activities. It’s a perfect storm for lock-in, which is what makes Oracle’s own attempts to point fingers at AWS over lock-in so laughable.

As such, it’s not surprising that so many can love Postgres, without it overthrowing Oracle’s database empire. This will change as more applications move to the cloud, a place where Oracle is trying to make a dent and mostly failing. But that change will take time and until then, Postgres will continue to be well-loved and not used nearly as much as it should be.

Subscribe to the Developer Insider Newsletter

From the hottest programming languages to commentary on the Linux OS, get the developer and open source news and tips you need to know. Delivered Tuesdays and Thursdays

Subscribe to the Developer Insider Newsletter

From the hottest programming languages to commentary on the Linux OS, get the developer and open source news and tips you need to know. Delivered Tuesdays and Thursdays