Questa sezione contiene informazioni su:
- Il comportamento di Datastream nella gestione dei dati estratti da un database PostgreSQL di origine
- Le versioni del database PostgreSQL supportate da Datastream
- Una panoramica su come configurare un database PostgreSQL di origine in modo che i dati possano essere trasmessi in streaming a una destinazione
- Limitazioni note per l'utilizzo del database PostgreSQL come origine
Comportamento
Il database PostgreSQL di origine si basa sulla funzionalità di decodifica logica. La decodifica logica espone tutte le modifiche eseguite al database e consente di utilizzarle ed elaborarle in un formato intuitivo utilizzando un plug-in di output. Datastream utilizza il plug-in pgoutput
, che è il plug-in di decodifica logica PostgreSQL standard per PostgreSQL 10 e versioni successive.
- È possibile selezionare tutti gli schemi o schemi specifici di una determinata origine PostgreSQL, nonché tutte le tabelle dello schema o tabelle specifiche.
- Tutti i dati storici vengono replicati.
- Vengono replicate tutte le modifiche del data manipulation language (DML), come inserimenti, aggiornamenti ed eliminazioni dai database e dalle tabelle specificati.
- Vengono replicate solo le modifiche di cui è stato eseguito il commit.
- Se definisci un'IDENTITÀ REPLICA in una tabella, Datastream considera le colonne specificate come chiavi primarie.
- Datastream invia periodicamente messaggi heartbeat al database, che aggiungono messaggi di decodifica logica (op='m') che fanno avanzare il file WAL. Questi messaggi sono generalmente richiesti da Datastream per garantire la vivacità e calcolare l'aggiornamento. Devi tenerli presenti se altre configurazioni di replica leggono dallo stesso database, in quanto devono essere in grado di leggerli e ignorarli.
Versioni
Datastream supporta PostgreSQL versione 10 e successive.
Datastream supporta i seguenti tipi di database PostgreSQL:
- PostgreSQL self-hosted
- Cloud SQL per PostgreSQL
- AlloyDB per PostgreSQL
- AlloyDB Omni
- Amazon RDS per PostgreSQL
- Amazon Aurora PostgreSQL
Limitazioni note
Le limitazioni note per l'utilizzo di Datastream con un database PostgreSQL come origine includono:
- Gli stream sono limitati a 10.000 tabelle.
- Una tabella con più di 500 milioni di righe non può essere compilata a ritroso, a meno che non siano soddisfatte le seguenti condizioni:
- La tabella ha un indice B-tree univoco.
- L'indice non include colonne dei seguenti tipi:
DOUBLE
,FLOAT
,MONEY
,REAL
,JSON
,JSONB
,BYTEA
,TXID
,XML
, tipi di dati compositi o tipi di dati geometrici. - Nessuna delle colonne dell'indice può ammettere valori nulli.
- Tutte le colonne dell'indice sono in ordine crescente oppure tutte le colonne dell'indice sono in ordine decrescente.
- Tutte le colonne dell'indice sono incluse nel flusso.
- Le tabelle senza chiavi primarie devono avere un'IDENTITÀ DI REPLICA. In caso contrario, nella destinazione vengono replicati solo gli eventi
INSERT
. - Le tabelle con chiavi primarie non possono avere REPLICA IDENTITY impostato su
FULL
oNOTHING
. Deve essere impostato suDEFAULT
. - Datastream non può eseguire la replica da un'istanza di replica di lettura perché PostgreSQL non supporta la decodifica logica nelle repliche di lettura.
- Non tutte le modifiche allo schema di origine possono essere rilevate automaticamente, nel qual caso potrebbe verificarsi un danneggiamento dei dati. Le seguenti modifiche allo schema potrebbero causare il danneggiamento dei dati o l'impossibilità di elaborare gli eventi a valle:
- Eliminazione delle colonne.
- Aggiunta di colonne al centro di una tabella.
- Modifica del tipo di dati di una colonna.
- Riordinare le colonne.
- Eliminazione di tabelle (pertinente se la stessa tabella viene poi ricreata con l'aggiunta di nuovi dati).
- Datastream non supporta le colonne dei tipi di dati
geometric
. - Datastream non supporta le colonne dei tipi di dati
range
. - Datastream non supporta array di tipi di dati non supportati, array di tipi di dati definiti dall'utente (incluso
ENUM
) o array di tipi di datiDATE
,TIMESTAMP
oTIMESTAMP WITH TIME ZONE
. Queste colonne vengono ignorate. - Datastream non supporta la replica degli eventi
UPDATE
per le righe che includono valoriTOAST
nelle colonne che fanno parte dell'identità di replica della tabella. Questi eventi vengono ignorati. - Datastream non supporta la replica di righe che includono valori
JSON
oJSONB
con più di 2950 oggetti nidificati. Gli eventi contenenti questi valoriJSON
oJSONB
non vengono replicati nel database di destinazione. - Datastream non supporta la replica di righe che includono valori
NaN
nelle colonneNUMERIC (precision, scale)
. I valori di queste colonne vengono sostituiti con i valoriNULL
. - Datastream non supporta la replica delle colonne del tipo di dati hstore. I valori di queste colonne vengono sostituiti con i valori
NULL
. - Datastream non supporta la replica di record non ASCII da un database di origine con codifica SQL_ASCII. Questi record vengono ignorati.
- Datastream non supporta la replica di tabelle con policy di sicurezza a livello di riga (RLS) definite. Per informazioni su come aggirare questa limitazione, vedi Comportamento e limitazioni dell'origine PostgreSQL.
- Datastream non acquisisce le modifiche apportate alle colonne generate.
- Datastream potrebbe smettere di funzionare o non acquisire nuovi eventi quando viene eseguito un upgrade della versione principale di PostgreSQL sul database. Ti suggeriamo di eliminare gli slot di replica prima dell'upgrade, quindi di eseguire l'upgrade del database e infine di ricreare gli slot di replica. Se i flussi non vanno a buon fine, recuperali specificando il nuovo nome dello slot di replica ed esegui un backfill se è necessaria la coerenza dei dati.
Passaggi successivi
- Scopri come configurare un'origine PostgreSQL per l'utilizzo con Datastream.