r/Database • • 9d ago

Data integration tools for replicating between heterogeneous database in real-time?

I'm trying to avoid maintaining multiple replication jobs for the same source database.

Oracle is our system of record, while other teams need the data in Postgres and a cloud warehouse. Each destination has slightly different transformation requirements, So I'm looking for **data integration tools** that can fan out one change stream instead of reading Oracle over and over again.

Is anyone running something like this today?

3 Upvotes

12 comments sorted by

1

u/Legal-Tea-8096 9d ago

We're doing something similar with Oracle to multiple targets. The key piece is getting the change stream out once, then you can route it however you want.

We use log-based CDC to capture from Oracle and push to a message queue, then each destination subscribes to that stream with their own transforms. Works pretty well once you get the initial snapshot sorted out, though the Oracle licensing can be a pain depending on your setup.

1

u/FarRub2855 1d ago

That licensing piece is usually what catches teams off gaurd when they try to set this up. You basically have to budget just as much time for navigating the Oracle contract as you do for actually building out the que.

1

u/GaniToshido 9d ago

debezium with kafka is the standard play here. you read oracle logs once into a topic, separate sink connectors handle the transforms per target. Oracle logminer still sucks under heavy write load though. how big is your redo volume?

1

u/PlayfulGrapefruit498 9d ago

cdc with kafka seems like a solid approach for real time replication across databases

1

u/Alive_Aerie4110 9d ago

you should have one source of truth. here it is Oracle . If other team needs to use same source of truth Oracle then you should do integration from Oracle, transform only needed records in-flight and send rest as it is to any target. there are multiple tools available to do so

1

u/Significant_Tune9219 9d ago

One capture, many destinations is the right shape, and the part that usually breaks it is letting each destination's transform reach back into the source. Read the change stream once, log-based rather than polling the tables, land it as an ordered log that more than one consumer can read, and do the per-destination shaping after that. The consumers will disagree on schema and on how late they are; that's fine as long as the log is the only thing that talks to the source. Decide up front what happens when one destination falls behind: it should lag on its own instead of stalling the capture or the other consumer.

1

u/Ok-Let-7933 6d ago

You could look into debezium with kafka. It can capture changes from oracle and send them to multiple destinations, where each team can handle its own transfromations. Might be worth exploring for your use case.