7

Abbiamo un'applicazione in esecuzione su Google App Engine che utilizza Datastore come back-end di persistenza. Attualmente l'applicazione ha per lo più funzionalità "OLTP" e alcuni rapporti rudimentali. Durante l'implementazione dei report abbiamo riscontrato che l'elaborazione di grandi quantità di dati (milioni di oggetti) è molto difficile con Datastore e GQL. Per migliorare la nostra applicazione con report adeguati e funzionalità di Business Intelligence riteniamo sia meglio impostare un processo ETL per spostare i dati da Datastore a BigQuery.Google Cloud Dataflow ETL (Datastore -> Transform -> BigQuery)

Inizialmente abbiamo pensato di implementare il processo ETL come processo cron di App Engine ma sembra che anche Dataflow possa essere utilizzato per questo. Abbiamo seguito i requisiti per l'impostazione del processo di

  • in grado di spingere tutti i dati esistenti per BigQuery utilizzando lo streaming non API di BigQuery.
  • Una volta completato, inserire tutti i nuovi dati ogni volta che vengono aggiornati/creati in Datastore in BigQuery utilizzando l'API di streaming.

Le mie domande sono

  1. è cloud Dataflow candidato giusto per l'attuazione di questo gasdotto?
  2. Saremo in grado di trasferire i dati esistenti? Alcuni dei tipi hanno milioni di oggetti.
  3. Quale dovrebbe essere l'approccio giusto per implementarlo? Stiamo valutando due approcci. Il primo approccio passa attraverso pub/sub, ad esempio per i dati esistenti crea un cron job e spinge tutti i dati su pub/sub. Per eventuali nuovi aggiornamenti, spingere i dati su pub/sub nello stesso momento in cui viene aggiornato in DataStore. Dataflow Pipeline lo preleverà da pub/sub e lo invierà a BigQuery. Il secondo approccio consiste nel creare un batch Pipeline in Dataflow che interroga DataStore e invia tutti i nuovi dati a BigQuery.

Domanda sono questi due approcci fattibili? qual è il migliore costo saggio? C'è qualche altro modo che è meglio di sopra di due?

Grazie,

rizTaak

risposta

7

Dataflow può assolutamente essere utilizzato per questo scopo. In effetti, la scalabilità di Dataflow dovrebbe rendere il processo veloce e relativamente facile.

Entrambi gli approcci dovrebbero funzionare: preferirei il secondo di utilizzare una pipeline batch per spostare i dati esistenti e quindi una pipeline di streaming per gestire i nuovi dati tramite Cloud Pub/Sub. Oltre al movimento dei dati, Dataflow consente di eseguire analisi/manipolazioni arbitrarie sui dati stessi.

Detto questo, BigQuery e Datastore possono essere collegati direttamente. Vedere, ad esempio, Loading Data From Cloud Datastore nella documentazione di BigQuery.

+0

La soluzione "automatica" che utilizza lo strumento Backup Datastore si basa sull'API File che verrà chiusa in pochi giorni. Oggi è stato chiuso temporaneamente. Quindi sembra che Dataflow sarà la soluzione per implementarlo. Vedo che gli esempi forniscono informazioni per scrivere su BigQuery, ma dove dovremmo cercare un esempio sulla lettura da Datastore? Ho trovato la documentazione e funzionerò da questo, ma un esempio completo di Datastore -> BigQuery che utilizza Dataflow sarebbe davvero utile. Grazie! – Zebs

+0

Un esempio di lettura da Datastore può essere trovato nel nostro ['cookbook'] (https://github.com/GoogleCloudPlatform/DataflowJavaSDK-examples/blob/master/src/main/java/com/google/cloud/dataflow/examples /cookbook/DatastoreWordCount.java) esempi. Dovrebbe essere semplice accoppiarlo con un esempio di BigQuery. –

+0

Perso! Grazie, già ci sto lavorando :) – Zebs

1

Un altro modo per utilizzare soluzioni di terze parti per il caricamento dei dati in Google BigQuery. Ce ne sono molti here. La maggior parte di questi sono pagati, ma sono gratuiti one con una frequenza di caricamento dati limitata. In questo caso non dovrai codificare nulla.