CDC är ett enkelt sätt att fånga förändringar i källsystemens tabeller och sedan propagera dessa till datalagret eller integrationshubben för bearbetning via förändringsvyer. DBMS_CDC-paketen är ett API ovanpå Streams AQ, dvs anrop till DBMS_CDC sätter upp köer, förändringstabeller osv (se tidigare inlägg om CDC). CDC är snabbt och relativt enkelt att sätta upp. CDC-paketen kom senare och frågan är om CDC alltid kan användas eller om det finns situationer när det är bättre att sätta upp Streams AQ direkt?
Enligt min mening så kan CDC användas i de fall när propagering av förändringar endast ska ske till ett ställe, s.k. punkt-till-punkt. Prenumeration på förändringar kan ske av flera användare på den mottagande sidan. Om data från källsystemen däremot ska propageras till flera ställen med många olika prenumeranter i flera databaser så är det bättre att sätta upp Streams AQ för att fånga förändringar och sedan propagera dessa till alla intressenter. Man kan med fördel använda Oracles egen Capture- och Applyprocess för att åstadkomma LCR (Logical Change Records) som skickas vidare till mottagande köer i olika databaser via meddelandetypen ANYDATA.
Fördelen med Streams i jämförelse med CDC är följande:
En utkö i källsystemet för vidare transport av förändringar istället för flera köer.
Propagering till flera olika databaser istället för punkt till punkt.
Kontroll på start av transaktioner att flytta över via SCN (System Change Number).
Skapa kanonisk xml direkt från LCR-meddelanden via paket.
Nackdelen med Streams i jämförelse med CDC:
- Tar längre tid att sätta upp
- Process för att ta hand om LCR-meddelanden på mottagande sida.