Jinnah
Jinnah

Reputation: 148

Eventual consistency in RDBMS (Oracle)

I understand RDBMS databases like Oracle are not really meant for eventual consistency. But is it technically not feasible to customize oracle to follow eventual consistency model (say like what cassandra is supporting?)

For example: Cant we have two Oracle clusters (with it's own storage) connected by an active data-guard replicating in both directions? i.e., Active-Active! I have seen Active-Passive model in many production systems. But Is Active-Active feasible in Oracle?

Upvotes: 3

Views: 572

Answers (2)

Matthew McPeak
Matthew McPeak

Reputation: 17934

You could build it using GoldenGate, but consider using Oracle Sharding, available in 18c. That way, you can just declare the replication topology you want using the GDSCTL command syntax and Oracle will make it happen (using GoldenGate).

Here is a link to the documentation:

https://docs.oracle.com/en/database/oracle/oracle-database/18/shard/sharding-overview.html#GUID-0F39B1FB-DCF9-4C8A-A2EA-88705B90C5BF

In particular, check out section 7.1 about High Availability and integration with Oracle GoldenGate.

Response about Active-Active

I cannot say for sure, but Oracle's documentation strongly implies it can be used in an active-active arrangement. From Oracle's documentation:

7.1.1 When To Choose Oracle GoldenGate for Shard High Availability When should Oracle GoldenGate be employed as your high availablility solution for Oracle Sharding?

Oracle GoldenGate should be your preferred high availability solution in the following cases:

All shards read-write. With Active Data Guard the DR/backup shards are read-only.

More flexibility in deploying shards. Each shard can be on a different operating system or a different database version.

More than a single updatable copy of the data. For example, with Oracle GoldenGate, using the replication factor of 4, you can have 4 read-write copies of the data that can be updated.

Upvotes: 3

Adam Leszczyński
Adam Leszczyński

Reputation: 1161

You can create an active-active bidirectional asynchronous replication using Oracle GoldenGate or any other replication engine. But you have to strictly define the way that the rows are handled.

For example:

  1. If the same row is updated at the same time in both sites - which one should be more important?

  2. If you are assigning new identifiers to rows (like sequence) you have to make sure that you won't be assigning the same identifier at the both sites.

Or you can create a synchronous replication using Oracle RAC. You would create one big database that is created on 2 hosts with a shared storage. Every change made at one site is immediately visible on the other.

Upvotes: 2

Related Questions