Il modello di modifiche in tempo reale di Spanner in Pub/Sub è una pipeline di streaming che trasmette i record delle modifiche dei dati di Spanner e li scrive negli argomenti Pub/Sub utilizzando Dataflow Portable Runner.
Per inviare i dati a un nuovo argomento Pub/Sub, devi prima creare l'argomento. Dopo la creazione, Pub/Sub genera e collega automaticamente un abbonamento al nuovo argomento. Se provi a inviare dati a un argomento Pub/Sub inesistente, la pipeline Dataflow genera un'eccezione e si blocca perché tenta continuamente di stabilire una connessione.
Se l'argomento Pub/Sub necessario esiste già, puoi inviare i dati a quell'argomento.
Per saperne di più, consulta Informazioni sulle modifiche in tempo reale, Creare connessioni di modifiche in tempo reale con Dataflow, e Best practice per le modifiche in tempo reale.
Requisiti della pipeline
- L'istanza Spanner deve esistere prima dell'esecuzione della pipeline.
- Il database Spanner deve esistere prima dell'esecuzione della pipeline.
- L'istanza dei metadati di Spanner deve esistere prima dell'esecuzione della pipeline.
- Il database dei metadati di Spanner deve esistere prima dell'esecuzione della pipeline.
- La modifica in tempo reale di Spanner deve esistere prima dell'esecuzione della pipeline.
- L'argomento Pub/Sub deve esistere prima dell'esecuzione della pipeline.
Parametri del modello
Parametri obbligatori
- spannerInstanceId: l'istanza Spanner da cui leggere le modifiche in tempo reale.
- spannerDatabase: il database Spanner da cui leggere le modifiche in tempo reale.
- spannerMetadataInstanceId: l'istanza Spanner da utilizzare per la tabella dei metadati del connettore di modifiche in tempo reale.
- spannerMetadataDatabase: il database Spanner da utilizzare per la tabella dei metadati del connettore di modifiche in tempo reale.
- spannerChangeStreamName: il nome della modifica in tempo reale di Spanner da cui leggere.
- pubsubTopic: l'argomento Pub/Sub per l'output delle modifiche in tempo reale.
Parametri facoltativi
- spannerProjectId: il progetto da cui leggere le modifiche in tempo reale. In questo progetto viene creata anche la tabella dei metadati del connettore di modifiche in tempo reale. Il valore predefinito di questo parametro è il progetto in cui è in esecuzione la pipeline Dataflow.
- spannerDatabaseRole: il ruolo database di Spanner da utilizzare durante l'esecuzione del modello. Questo parametro è obbligatorio solo quando l'entità IAM che esegue il modello è un utente con controllo dell'accesso granulare. Il ruolo database deve avere il privilegio
SELECTsulla modifica in tempo reale e il privilegioEXECUTEsulla funzione di lettura della modifica in tempo reale. Per saperne di più, consulta Controllo dell'accesso granulare per le modifiche in tempo reale (https://cloud.google.com/spanner/docs/fgac-change-streams). - spannerMetadataTableName: il nome della tabella dei metadati del connettore di modifiche in tempo reale di Spanner da utilizzare. Se non viene fornito, Spanner crea automaticamente la tabella dei metadati del connettore di modifiche in tempo reale durante la modifica del flusso della pipeline. Devi fornire questo parametro quando aggiorni una pipeline esistente. Non utilizzare questo parametro in altri casi.
- startTimestamp: la data e l'ora di inizio (https://tools.ietf.org/html/rfc3339), inclusa, da utilizzare per la lettura delle modifiche in tempo reale. Ad esempio, 2021-10-12T07:20:50.52Z. Il valore predefinito è il timestamp di avvio della pipeline, ovvero l'ora corrente.
- endTimestamp: la data e l'ora di fine (https://tools.ietf.org/html/rfc3339), inclusa, da utilizzare per la lettura delle modifiche in tempo reale. Ad esempio, 2021-10-12T07:20:50.52Z. Il valore predefinito è un tempo infinito in futuro.
- spannerHost: l'endpoint Cloud Spanner da chiamare nel modello. Utilizzato solo per i test. Ad esempio,
https://spanner.googleapis.com. Il valore predefinito è https://spanner.googleapis.com. - outputDataFormat: il formato dell'output. L'output viene racchiuso in molti PubsubMessage e inviato a un argomento Pub/Sub. I formati consentiti sono JSON e AVRO. Il valore predefinito è JSON.
- pubsubAPI: l'API Pub/Sub utilizzata per implementare la pipeline. Le API consentite sono
pubsubioenative_client. Per un numero ridotto di query al secondo (QPS),native_clientha una latenza inferiore. Per un numero elevato di QPS,pubsubiooffre prestazioni migliori e più stabili. Il valore predefinito èpubsubio. - pubsubProjectId: il progetto dell'argomento Pub/Sub. Il valore predefinito di questo parametro è il progetto in cui è in esecuzione la pipeline Dataflow.
- rpcPriority: la priorità della richiesta per le chiamate Spanner. I valori consentiti sono HIGH, MEDIUM e LOW. Il valore predefinito è HIGH.
- includeSpannerSource: indica se includere o meno l'ID del database Spanner e l'ID dell'istanza da cui leggere la modifica in tempo reale nei dati dei messaggi di output. Il valore predefinito è false.
- outputMessageMetadata: il valore stringa per il campo personalizzato outputMessageMetadata nel messaggio Pub/Sub di output. Il valore predefinito è vuoto e il campo outputMessageMetadata viene compilato solo se questo valore non è vuoto. Utilizza il carattere di escape per eventuali caratteri speciali quando inserisci il valore qui(ad es. virgolette doppie).
- useSpannerEmulatorHost: indica se utilizzare l'host Spanner configurato in getSpannerHost() come host dell'emulatore. Il valore predefinito è false.
- spannerChangeStreamTvfNameList: un elenco separato da punti e virgola dei nomi TVF di modifiche in tempo reale di Spanner da interrogare e unire. Il valore predefinito è vuoto.
Esegui il modello
Console
- Vai alla pagina Dataflow Crea job da modello. Vai a Crea job da modello
- Nel campo Nome job, inserisci un nome job univoco.
- (Facoltativo) In Endpoint regionale, seleziona un valore dal menu a discesa. La regione predefinita è
us-central1.Per un elenco delle regioni in cui puoi eseguire un job Dataflow, consulta Località di Dataflow.
- Dal menu a discesa Modello Dataflow, seleziona il modello Modifiche in tempo reale di Cloud Spanner in Pub/Sub.
- Nei campi dei parametri forniti, inserisci i valori dei parametri.
- Fai clic su Esegui job.
gcloud
Esegui il modello nella shell o nel terminale:
gcloud dataflow flex-template run JOB_NAME \ --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/ \ --region REGION_NAME \ --parameters \ spannerInstanceId=SPANNER_INSTANCE_ID,\ spannerDatabase=SPANNER_DATABASE,\ spannerMetadataInstanceId=SPANNER_METADATA_INSTANCE_ID,\ spannerMetadataDatabase=SPANNER_METADATA_DATABASE,\ spannerChangeStreamName=SPANNER_CHANGE_STREAM,\ pubsubTopic=PUBSUB_TOPIC
Sostituisci quanto segue:
JOB_NAME: un nome job univoco a tua sceltaVERSION: la versione del modello che vuoi utilizzarePuoi utilizzare i seguenti valori:
latestper utilizzare la versione più recente del modello, disponibile nella cartella principale non datata nel bucket: gs://dataflow-templates-REGION_NAME/latest/- il nome della versione, ad esempio
2023-09-12-00_RC00, per utilizzare una versione specifica del modello, che si trova nidificata nella rispettiva cartella principale datata nel bucket: gs://dataflow-templates-REGION_NAME/
REGION_NAME: la regione in cui vuoi eseguire il deployment del job Dataflow, ad esempious-central1SPANNER_INSTANCE_ID: l'ID istanza SpannerSPANNER_DATABASE: il database SpannerSPANNER_METADATA_INSTANCE_ID: l'ID istanza dei metadati di SpannerSPANNER_METADATA_DATABASE: il database dei metadati di SpannerSPANNER_CHANGE_STREAM: la modifica in tempo reale di SpannerPUBSUB_TOPIC: l'argomento Pub/Sub per l'output delle modifiche in tempo reale
API
Per eseguire il modello utilizzando l'API REST, invia una richiesta HTTP POST. Per saperne di più sull'
API e sui relativi ambiti di autorizzazione, consulta
projects.templates.launch.
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch { "launch_parameter": { "jobName": "JOB_NAME", "parameters": { "spannerInstanceId": "SPANNER_INSTANCE_ID", "spannerDatabase": "SPANNER_DATABASE", "spannerMetadataInstanceId": "SPANNER_METADATA_INSTANCE_ID", "spannerMetadataDatabase": "SPANNER_METADATA_DATABASE", "spannerChangeStreamName": "SPANNER_CHANGE_STREAM", "pubsubTopic": "PUBSUB_TOPIC" }, "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/", } }
Sostituisci quanto segue:
PROJECT_ID: l'ID progetto in cui vuoi eseguire il job Dataflow Google CloudJOB_NAME: un nome job univoco a tua sceltaVERSION: la versione del modello che vuoi utilizzarePuoi utilizzare i seguenti valori:
latestper utilizzare la versione più recente del modello, disponibile nella cartella principale non datata nel bucket: gs://dataflow-templates-REGION_NAME/latest/- il nome della versione, ad esempio
2023-09-12-00_RC00, per utilizzare una versione specifica del modello, che si trova nidificata nella rispettiva cartella principale datata nel bucket: gs://dataflow-templates-REGION_NAME/
LOCATION: la regione in cui vuoi eseguire il deployment del job Dataflow, ad esempious-central1SPANNER_INSTANCE_ID: l'ID istanza SpannerSPANNER_DATABASE: il database SpannerSPANNER_METADATA_INSTANCE_ID: l'ID istanza dei metadati di SpannerSPANNER_METADATA_DATABASE: il database dei metadati di SpannerSPANNER_CHANGE_STREAM: la modifica in tempo reale di SpannerPUBSUB_TOPIC: l'argomento Pub/Sub per l'output delle modifiche in tempo reale
Passaggi successivi
- Scopri di più sui modelli Dataflow.
- Consulta l'elenco dei modelli forniti da Google.