Posted on Fri 17 October 2025
It has been over 1111 days since we switched from Oracle’s database to Postgresql at work. I have been happy about the switch for every single one of those days. No regrets at all.
Changing your core database is a huge proposition, especially when the one you have is not broken. It’s also a huge amount of work. [Workplace] has been built on Oracle for more than twenty years. Why did we do it?
The original value of Oracle was two-fold. First, Oracle built a database product that worked pretty well. At the time we started, it was a pretty clear choice simply on the basis of functionality. Second, and of nearly equal importance: we had already chosen to bet the company on Linux. These days, Linux is ubiquitous. Android phones run it. Supercomputers run it. Every Internet service you can think of runs on Linux, except Microsoft’s Azure cloud – and that is overwhelmingly used to run Linux in virtual machines. But in 2000, Linux was nine years old, not thirty-one. It was not at all the obvious choice to run a serious financial service. Banks had not heard of it. But banks all knew what Oracle was.
In 2000, Oracle was the database that banks used if they didn’t use mainframes. (Here in 2025, Oracle is still the database that banks use if they don’t use mainframes. Oracle just wants banks to move from mainframes to Oracle databases in Oracle’s cloud.)
So when we explained our service to the technology evaluators at a prospective bank, their eyes passed blankly over “Linux” and seized on “Oracle” as a touchstone of comfort. Technology evaluators want to hear about secure and reliable infrastructure. It would not be a terrible overstatement to say that using Oracle – just the name – prevented us from being rejected outright.
Now Linux is bigger than Oracle. Oracle has its own distribution of Linux. It would be a little strange to run Oracle on anything else. We no longer need the Oracle name to establish our credentials of reliability.
Postgresql – or Postgres, or PG – is actually older than Linux, and almost as old as Oracle. The general class of relational database management systems started in the late 1970s. Oracle’s first released version (2.3, because who wants to buy version 1 of anything?) came out in 1979. The INGRES project at Berkeley released a stable version in 1974. Postgres was started in 1985 as the Post-INGRES project. Around 1996, the project became open source, focused on SQL, and changed its name to Postgresql. By 2016, PG was clearly a serious technical competitor for any database in the world.
That’s when I started arguing for a conversion.
Although: I might have started looking for an alternative the second or third time I had to negotiate for an Oracle license.
As a complete nonsequitur, the last time I looked, Oracle forbade anyone using their database from publishing performance comparisons with it. That’s certainly the attitude of a company you trust, right? So I won’t publish any benchmarks. You can be certain, however, that we had minimal performance issues with the changeover. Everything we were concerned about turned out to be solvable by adjusting the way we did queries from something weirdly Oracle-specific – often that we didn’t even know was Oracle-specific – to something PG-specific.