1. Panoramica
In Parte 1, abbiamo trasformato con successo PDF caotici e non strutturati in tabelle pulite, intelligenti e strutturate in BigQuery utilizzando Knowledge Catalog e DataScan. Ora abbiamo un data warehouse robusto.
Se hai bisogno di un riepilogo rapido, nel lab della parte 1 abbiamo preso in considerazione il caso d'uso di un franchising di yogurt gelato fittizio e abbiamo convertito 400 dei suoi file PDF non strutturati, contenenti testo, tabelle e immagini, in tabelle BigQuery strutturate in modo pulito con relazioni dedotte automaticamente tra loro utilizzando BigQuery Knowledge Catalog e Dataplex.
Cosa creerai
In questa sessione, configureremo AlloyDB per PostgreSQL e faremo qualcosa di magico: federare i nostri dati BigQuery direttamente in AlloyDB. Ciò significa che la nostra app transazionale può eseguire query sui dati del nostro warehouse in tempo reale, senza copiarli o duplicarli.
In questa fase, in qualità di sviluppatore, devi porti questa domanda:
"Se i dati sono già in BigQuery, perché aggiungere AlloyDB? Perché l'applicazione non esegue semplicemente un'istruzione SELECT direttamente su BigQuery?"
Ecco perché:
Con Lakehouse Federation, puoi utilizzare il motore di query di AlloyDB per gestire i carichi di lavoro transazionali e analitici della tua applicazione dalla stessa interfaccia. Puoi anche materializzare o importare questi dati in AlloyDB per un accesso più rapido per l'utilizzo nelle tue applicazioni, il che ti consente di utilizzare AlloyDB AI e il motore colonnare.
Puoi utilizzare AlloyDB come database transazionale e avere anche grandi quantità di dati in BigQuery o BigLake. In genere, le applicazioni si integrano in modo indipendente con entrambi i sistemi per accedere ai dati in questi diversi servizi Google Cloud. Lakehouse Federation per AlloyDB ti consente di utilizzare il supporto per le query federate di AlloyDB implementato come foreign data wrapper per accedere ai dati di BigQuery e AlloyDB utilizzando un'interfaccia SQL in AlloyDB.
Anziché creare una pipeline ETL fragile per eseguire query sui dati BigQuery da AlloyDB, utilizzeremo le query federate. AlloyDB fungerà da endpoint unificato, raggiungendo BigQuery senza problemi quando necessario.
Iniziamo a creare.

Obiettivi didattici
- Come configurare il cluster, l'istanza e la rete AlloyDB con un clic di un pulsante
- Come configurare l'estensione per prepararsi alla federazione
- Come configurare la federazione da BigQuery ad AlloyDB
- Provare
Requisiti
2. Prima di iniziare
Crea un progetto
- Nella console Google Cloud, nella pagina di selezione del progetto, seleziona o crea un progetto Google Cloud.
- Verifica che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata per un progetto.
- Utilizzerai Cloud Shell, un ambiente a riga di comando in esecuzione in Google Cloud. Fai clic su Attiva Cloud Shell nella parte superiore della console Google Cloud.

- Una volta eseguita la connessione a Cloud Shell, verifica che il tuo account sia già autenticato e che il progetto sia impostato sul tuo ID progetto utilizzando il seguente comando:
gcloud auth list
- Esegui il seguente comando in Cloud Shell per verificare che il comando gcloud conosca il tuo progetto.
gcloud config list project
- Se vuoi eseguire l'autenticazione
gcloud auth login
- Se il progetto non è impostato, utilizza il seguente comando per impostarlo:
export PROJECT_ID=<YOUR_PROJECT_ID>
gcloud config set project <YOUR_PROJECT_ID>
- Abilita le API richieste: esegui questo comando per abilitare tutte le API richieste:
gcloud services enable alloydb.googleapis.com
Problemi e risoluzione dei problemi
La sindrome del "progetto fantasma" | Hai eseguito |
La barriera della fatturazione | Hai abilitato il progetto, ma hai dimenticato l'account di fatturazione. AlloyDB è un motore ad alte prestazioni; non si avvierà se il "serbatoio" (fatturazione) è vuoto. |
Ritardo nella propagazione dell'API | Hai fatto clic su "Abilita API", ma la riga di comando continua a visualizzare |
Problemi di quota | Se utilizzi un nuovo account di prova, potresti raggiungere una quota regionale per le istanze AlloyDB. Se |
3. Breve riepilogo dei dati della Parte 1
In questa sezione, devi assicurarti che i dati strutturati che abbiamo estratto dai PDF non strutturati siano disponibili in BigQuery. Se hai perso la parte 1 o non hai un account di fatturazione, non preoccuparti, puoi completare i seguenti passaggi e iniziare:
Vai alla console Google Cloud dal tuo account Gmail personale e fai clic sul pulsante Attiva Cloud Shell nell'angolo in alto a destra della console:

Poi segui i passaggi nella sezione relativa all'account di fatturazione riportata di seguito:
Ora che abbiamo i dati in BigQuery, passiamo ai passaggi successivi.
4. Configura il cluster, l'istanza e la rete AlloyDB
Esiste un'applicazione di avvio rapido basata sul web che ti aiuterà a configurare il cluster, l'istanza e altre dipendenze di AlloyDB. Puoi seguire i passaggi da 2 a 4 in questo lab per configurarlo con un clic di un pulsante:
https://codelabs.developers.google.com/quick-alloydb-setup
Una volta creato il cluster, vai alla pagina Panoramica del cluster e copia i dettagli del service account da lì.

5. Configurazione delle autorizzazioni
Concedi le autorizzazioni BigQuery a questo service account
- Vai a IAM e amministrazione > IAM.
- Fai clic su Concedi accesso.
- Incolla l'indirizzo del service account AlloyDB nel campo Nuove entità.
- Assegna i seguenti ruoli:
- Visualizzatore dati BigQuery (roles/bigquery.dataViewer): consente di leggere i dati.
- Utente BigQuery (roles/bigquery.user): consente di eseguire le query.
- (Facoltativo, ma consigliato) Utente sessione di lettura BigQuery (roles/bigquery.readSessionUser): ottimizza la lettura di set di dati di grandi dimensioni tramite l'API Storage Read.
6. Connettiti ad AlloyDB e abilita l'estensione BigQuery
Ora ci connettiamo alla nostra nuova istanza AlloyDB per configurare l'estensione di federazione. Per farlo, utilizzeremo AlloyDB Studio.
- Dalla pagina Panoramica del cluster (console AlloyDB), fai clic su AlloyDB Studio.

- Connettiti con il database, il nome utente e la password che hai configurato durante il passaggio di configurazione rapida di AlloyDB.
- Una volta connesso, nella scheda Editor di query sul lato destro, inserisci le seguenti istruzioni ed esegui una alla volta:
CREATE EXTENSION IF NOT EXISTS bigquery_fdw;
CREATE SERVER bigquery_server FOREIGN DATA WRAPPER bigquery_fdw;
CREATE USER MAPPING FOR postgres SERVER bigquery_server;
- Una volta completata l'operazione, vai al riquadro dell'explorer a sinistra e scorri verso il basso fino alle tabelle BigQuery:

- Fai clic sui tre puntini e poi su "Connetti tabella BigQuery".
- Nel popup Connetti tabella BigQuery che si apre, seleziona project_id e il nome del set di dati BigQuery (creato nella parte 1) da cui vuoi eseguire query sui dati nel tuo database AlloyDB.

- Seleziona ogni tabella una alla volta per connettere tutti i dati ad AlloyDB. In questo modo, convalidiamo i tipi di colonne per assicurarci che siano supportati in AlloyDB.
Se vuoi fare la stessa cosa con SQL anziché tramite l'approccio point-and-click:
CREATE FOREIGN TABLE <<TABLE_NAME>> (
"cas_number" VARCHAR, "ingredient_name" VARCHAR, "max_moisture_percentage" DOUBLE PRECISION, "ph_range" VARCHAR, "purity_percentage" DOUBLE PRECISION, "shelf_life_months" BIGINT, "specific_gravity_range" VARCHAR
) SERVER "bigquery_server" OPTIONS (
project '<<PROJECT_ID>>',
dataset 'froyo_data',
table '<<BQ_TABLE_NAME>>'
);
La magia!!!
Abbiamo appena creato le "tabelle esterne" in AlloyDB. Queste tabelle hanno lo stesso aspetto e si comportano come le normali tabelle PostgreSQL, ma non memorizzano alcun dato. Quando esegui query su di esse, AlloyDB passa immediatamente la query a BigQuery, recupera i risultati e li restituisce.
7. Testa la federazione in AlloyDB
Verifichiamo se possiamo eseguire query sul nostro set di dati BigQuery analitico di grandi dimensioni direttamente dal nostro database PostgreSQL transazionale.
Sempre in AlloyDB Studio, eseguiamo una query per scoprire quali allergeni sono presenti in "Midnight Swirl" (la stessa domanda che abbiamo posto nella Parte 1, ma questa volta da AlloyDB):
SELECT
p.product_name,
i.ingredient_name,
a.allergen_name
FROM
consistsof c
INNER JOIN product p
ON c.product_id = p.product_id
INNER JOIN ingredient i
ON c.ingredient_id = i.ingredient_name
LEFT OUTER JOIN containsallergen a
ON i.ingredient_id = a.ingredient_id
WHERE
UPPER(p.product_name) LIKE '%MIDNIGHT%SWIRL%'
AND a.allergen_name IS NOT NULL;
Ma non finisce qui. Dovresti vedere gli stessi risultati che hai visto in BigQuery.

8. Libera spazio
Al termine di questo lab, non dimenticare di eliminare il cluster e l'istanza AlloyDB.
Il cluster e le relative istanze verranno eliminati.
9. Congratulazioni per il tuo livello di dati unificato
Pensa a cosa abbiamo appena fatto:
- La nostra app transazionale (in esecuzione su AlloyDB) può gestire sessioni utente rapide e simultanee.
- Quando ha bisogno di dati analitici o di un contesto storico (come i dettagli del fornitore o mappature complesse degli ingredienti), esegue query sullo schema froyo_data di BigQuery.
- Nessun ETL. Nessuna interruzione delle pipeline di dati. Nessun database non sincronizzato. Archiviamo una sola volta (in BQ) ed eseguiamo il calcolo dove ci serve.
Ora che la nostra base di dati, sia analitica che transazionale, è solida e interconnessa, siamo pronti per la parte divertente.
Nella Parte 3, creeremo l'applicazione multi-agente che si basa su questa architettura per eseguire le operazioni aziendali di Froyo.