Informazioni sul processo Replicat coordinato
In modalità coordinata, Replicat opera come segue:
-
Legge il trail di Oracle GoldenGate.
-
Esegue l'applicazione dei filtri, il mapping e la conversione dei dati.
-
Esegue l'applicazione dei filtri, il mapping e la conversione dei dati.
-
Applica l'istruzione SQL alla destinazione tramite l'interfaccia SQL supportata per il database di destinazione specificato, ad esempio ODBC o l'interfaccia del database nativo.
La differenza tra modalità classica e modalità coordinata è che Replicat è multi-threaded in modalità coordinata. All'interno di una singola istanza di Replicat, più thread leggono il trail in modo indipendente e applicano le transazioni in parallelo. Ogni thread gestisce l'applicazione di filtri, il mapping, la conversione, la costruzione SQL e la gestione degli errori per il carico di lavoro assegnato. Un thread coordinatore coordina le transazioni tra i thread per tenere conto delle dipendenze tra i thread.
È possibile frazionare le transazioni di origine tra processi CR in modo che non venga mantenuta l'integrità della transazione di origine totale. La parte della transazione elaborata da un processo CR viene eseguita in un ordine impegnato, ma l'intera transazione in tutti i processi CR non lo è.
Coordinated Replicat consente il partizionamento del carico di lavoro definito dall'utente in modo da applicare contemporaneamente transazioni a volume elevato. Inoltre, coordina automaticamente l'esecuzione delle transazioni che richiedono il coordinamento, ad esempio DDL, e gli aggiornamenti della chiave primaria con il partizionamento THREADRANGE. Tale transazione viene eseguita come una transazione nell'obiettivo con sincronizzazione completa: attende che tutte le transazioni precedenti vengano applicate per prime e tutte le transazioni dopo questa transazione barriera devono attendere l'applicazione di questa transazione barriera.
Per un Replicat coordinato è necessario un solo file di parametri, indipendentemente dal numero di thread. L'opzione THREAD o THREADRANGE nell'istruzione MAP consente di specificare i thread che elaborano le transazioni per tali oggetti e di specificare il numero massimo di thread quando si crea il gruppo Replicat.
Questa figura illustra l'architettura di Coordinated Replicat.

Come illustrato in questa figura, il Replicat coordinato include i due processi riportati di seguito.
Informazioni sulle transazioni delle barriere
Le transazioni barriera vengono gestite automaticamente in una configurazione Replicat coordinata. Le transazioni barriera sono transazioni che richiedono il coordinamento tra thread. Ad esempio, le istruzioni DDL, le transazioni che includono aggiornamenti alle chiavi primarie e alcune azioni EVENTACTIONS.
Facoltativamente, è possibile forzare altre transazioni a essere trattate come una transazione di barriera attraverso l'uso della ` COORDINATED keyword in a MAP statement. One use case for this would be force a SQLEXEC` per essere eseguite in modo simile a un'esecuzione seriale. Ciò potrebbe essere utile se i risultati possono diventare ambigui a meno che lo stato dell'obiettivo non sia coerente in tutte le transazioni.
Nota: Replicat coordinato non esegue calcoli di dipendenza per le transazioni non di tipo barriera quando una tabella mappata viene partizionata in base a THREADRANGE. Si basa sulle colonne THREADRANGE specificate per calcolare un valore hash. Partiziona i dati in entrata in base al valore hash e invia tutti i record che corrispondono a questo valore hash allo stesso thread.
Modalità di elaborazione delle transazioni barriera
Tutti i thread convergono e attendono all'inizio di una transazione barriera. La transazione della barriera viene sospesa finché gli altri fili non raggiungono la posizione iniziale. Se alcuni thread stavano già elaborando parte della transazione barriera, tali thread eseguono un rollback. Anche le transazioni raggruppate, come quelle controllate dai parametri BATCHSQL o `GROUPTRANSOPS', vengono sottoposte a rollback e quindi riapplicate fino a quando non raggiungono l'inizio della transazione barriera.
Tutti i thread convergono e aspettano all'inizio della transazione successiva anche dopo la transazione barriera. I due punti di sincronizzazione, prima e dopo la transazione di barriera, assicurano che le operazioni di metadati e le azioni EVENTACTIONS avvengano nel corretto ordine pertinente alle operazioni di dati.
Una volta che i thread vengono sincronizzati all'inizio della transazione barriera, la transazione barriera viene elaborata in serie dal thread che ha l'ID thread più basso tra tutti i thread specificati nelle istruzioni MAP e quindi l'elaborazione parallela tra i thread viene ripresa. È possibile forzare l'elaborazione delle transazioni barriera tramite un thread specifico, sempre thread 0, specificando il parametro USEDEDICATEDCOORDINATIONTHREAD nel file dei parametri Replicat.