PostgreSQL vs. Oracle High Availability solutions

oraclepostgresql

PostgreSQL has a matrix of different high availability options which represent many different ways of building replication into an RDBMS.

Here is the PostgreSQL High Availability, Load Balancing, and Replication Feature Matrix

Questions

  • Which of the approaches in the PostgreSQL High Availability Matrix are supported by Oracle?
  • Does oracle do high availability with techniques that are not available with PostgreSQL?

Best Answer

Oracle's Data Guard replication is similar to PostgreSQL's "Hot/Warm Standby Using PITR", which is built-in to the database as of PostgreSQL 9.0. Version 9.1 adds synchronous replication too. One advantage that PostgreSQL has over Oracle here is that Sync Rep can be controlled on a per-transaction basis. You can have a fully synchronous "Important!" Transaction followed by an asynchronous "OK to lose" one in Postgres.

Oracle's RAC is similar to what PostgreSQL is labelling "Shared Disk Failover" in that grid. The main difference is that RAC is fully integrated into Oracle's product, while "Shared Disk Failover" just describes a method of doing something. You have to assemble the necessary clusterware software around that for PostgreSQL, and there are a variety of advanced things RAC does you'll be hard pressed to duplicate in PostgreSQL. I regularly hear that most of those things are so complicated to setup that few Oracle installations get them right either--just because RAC is built-in doesn't mean it sets itself up automatically.

The main thing you can do in Oracle that is very hard to duplicate as well in PostgreSQL is multi-master replication. It's possible to do multi-master in PostgreSQL, but only with add-on software like Bucardo. And all such programs still have more restrictions on what you can do with them than the Multi-Master Oracle installations provide.