En esta página, se muestra cómo sincronizar tablas de BigQuery con tu instancia de AlloyDB para PostgreSQL.
Si sincronizas los datos analíticos de BigQuery en AlloyDB, puedes crear sistemas operativos que se beneficien del acceso transaccional y de baja latencia a tu data lake. A diferencia de un wrapper de datos externos (FDW) que consulta los datos en su lugar, la tabla de sincronización mueve los datos al almacenamiento de AlloyDB para obtener el máximo rendimiento.
AlloyDB proporciona las siguientes formas de transferir datos de BigQuery a tu instancia:
Sincronización única: Crea una copia independiente y grabable de tu tabla de BigQuery.
Sincronización periódica (duplicación): Crea una tabla local de solo lectura que se actualiza automáticamente según un programa, por ejemplo, cada 6 horas o a diario.
Consideraciones operativas y de rendimiento
Cuando uses tablas de sincronización de BigQuery, ten en cuenta lo siguiente:
- Uso de recursos: El movimiento de datos consume CPU y memoria. En el caso de tablas muy grandes, considera programar las sincronizaciones durante las horas de menor demanda para evitar afectar tu carga de trabajo transaccional principal.
- Visibilidad de los datos: Durante una operación de reemplazo, la tabla de destino existente se descarta y se vuelve a crear por adelantado. Las consultas durante la importación ven una tabla vacía inicialmente, seguida de los datos recién importados que aparecen de forma incremental a medida que se confirman las transacciones por lotes.
Antes de comenzar
- Familiarízate con la forma en que
bigquery_fdwcontrola los tipos de datos y las asignaciones de columnas de BigQuery, ya que la extensiónalloydb_syncusabigquery_fdwpara conectarse a BigQuery. -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Habilita las API de Cloud necesarias para crear una conexión a AlloyDB.
Para confirmar el nombre del proyecto en el que realizarás cambios, haz clic en Siguiente en el paso Confirmar proyecto.
En el paso Habilitar APIs, haz clic en Habilitar para habilitar lo siguiente:
- API de AlloyDB
- API de Compute Engine
- API de Cloud Resource Manager
- API de Service Networking
- API de BigQuery Storage
La API de Service Networking es obligatoria si planeas configurar la conectividad de red a AlloyDB con una red de VPC que reside en el mismo proyecto Google Cloud que AlloyDB.
Las APIs de Compute Engine y Cloud Resource Manager son necesarias si planeas configurar la conectividad de red a AlloyDB con una red de VPC que reside en un proyecto Google Cloud diferente.
- Asegúrate de tener una tabla de BigQuery existente desde la cual sincronizar los datos. Para obtener más información, consulta Crea y usa tablas de BigQuery.
Roles obligatorios
Para otorgar acceso al conjunto de datos de BigQuery a la cuenta de servicio del clúster de AlloyDB, necesitas los siguientes permisos:
- Visualizador de datos de BigQuery (
roles/bigquery.dataViewer) o cualquier rol personalizado con los permisosbigquery.tables.getybigquery.tables.getData. Cuando se otorga en una cuenta de servicio, este rol proporciona permisos para leer datos y metadatos de la tabla o vista. - Usuario de sesión de lectura de BigQuery
(
roles/bigquery.readSessionUser) o cualquier rol personalizado con los permisosbigquery.readsessions.createybigquery.readsessions.getData. Proporciona la capacidad de crear y usar sesiones de lectura. - Usuario de trabajo de BigQuery (
roles/bigquery.jobUser) o cualquier rol personalizado con permisosbigquery.jobs.createProporciona la capacidad de crear y ejecutar trabajos, incluidos los trabajos de consulta.
Configura la extensión
Antes de sincronizar tablas desde BigQuery, habilita la extensión requerida y configura la conexión a BigQuery. Si usas la consola de Google Cloud , AlloyDB realiza estos pasos automáticamente.
Crea la extensión.
- Conéctate a la instancia de AlloyDB con el cliente psql siguiendo las instrucciones que se indican en Conecta un cliente psql a una instancia.
Ejecuta el comando siguiente:
CREATE EXTENSION IF NOT EXISTS alloydb_sync;
Para permitir que AlloyDB se autentique con BigQuery, crea la asignación de usuarios.
CREATE EXTENSION IF NOT EXISTS bigquery_fdw; CREATE SERVER IF NOT EXISTS BIGQUERY_SERVER_NAME FOREIGN DATA WRAPPER bigquery_fdw; CREATE USER MAPPING IF NOT EXISTS FOR USER SERVER BIGQUERY_SERVER_NAME;Reemplaza lo siguiente:
USER: Es un nombre de usuario de la base de datos o un usuario de IAM que accede a la tabla de BigQuery.BIGQUERY_SERVER_NAME: Es el identificador único del servidor de BigQuery. Defínelo una vez en una base de datos determinada. Puedes reemplazarBIGQUERY_SERVER_NAMEpor el nombre de tu servidor.
Sincroniza una tabla de BigQuery para una exportación única
Puedes sincronizar una tabla de BigQuery para una exportación única con la consola deGoogle Cloud o con psql.
Usa la consola de Google Cloud
Para sincronizar una tabla de BigQuery con AlloyDB usando la consola deGoogle Cloud , haz lo siguiente:
Abre la página de BigQuery en la Google Cloud consola.
En el panel de la izquierda, haz clic en Explorar.
Si no ves el panel izquierdo, haz clic en Expandir panel izquierdo para abrirlo.
En el panel Explorador, expande tu proyecto, haz clic en Conjuntos de datos y, luego, en tu conjunto de datos.
Haz clic en Overview > Tables y, luego, selecciona una tabla.
En el panel de detalles, haz clic en Cargar Exportar o sincronizar > AlloyDB (exportar una vez o sincronizar).
En Elige un clúster de destino, selecciona una de las siguientes opciones:
Selecciona Usar un clúster existente para exportar la tabla de BigQuery a un clúster existente de AlloyDB. A continuación, sigue estos pasos:
Selecciona el clúster principal de AlloyDB.
Selecciona la base de datos de AlloyDB de destino.
Selecciona el esquema para tu tabla de AlloyDB de destino.
Especifica un nombre para tu tabla de destino de AlloyDB.
En Frecuencia de sincronización, selecciona Solo una vez para crear una copia de la tabla de BigQuery.
Haz clic en Configurar exportación.
Cuando se complete la configuración de la sincronización, podrás usar las sentencias SQL proporcionadas para hacer un seguimiento del trabajo de importación y consultar las tablas importadas. Haz clic en Consulta para que se te dirija a la tabla importada en AlloyDB Studio.
Selecciona Crear un clúster nuevo para exportar la tabla de BigQuery a un clúster nuevo de AlloyDB. A continuación, sigue estos pasos:
Haz clic en Configurar exportación.
En el diálogo Redireccionar a AlloyDB, selecciona Redireccionar.
Selecciona un tipo de clúster, ya sea Clúster de prueba gratuita o Clúster aprovisionado.
Haz clic en Continuar.
En Configuración de sincronización, selecciona la base de datos de AlloyDB de destino
postgrespredeterminada, el esquemapublicpredeterminado para tu tabla de AlloyDB de destino y especifica un nombre para tu tabla de AlloyDB de destino.En Frecuencia de sincronización, selecciona Solo una vez para crear una copia de la tabla de BigQuery.
Haz clic en Continuar.
Configurar el clúster. Para obtener más información sobre cada campo, consulta Crea un clúster y una instancia principal nuevos.
Haga clic en Crear clúster.
Cuando se complete la configuración de la sincronización, navega a AlloyDB Studio para consultar las tablas importadas.
Sincroniza una tabla de BigQuery una sola vez con psql
Para crear una copia editable de los datos de BigQuery, usa psql para ejecutar la función alloydb_sync.import_bq_table.
SELECT alloydb_sync.import_bq_table(
'PROJECT_ID.DATASET_ID.TABLE_ID',
'ALLOYDB_DESTINATION_TABLE_NAME',
'ON_EXISTS',
ARRAY['PRIMARY_KEY_COLUMN']
);
Reemplaza lo siguiente:
PROJECT_ID: Es el ID del proyecto en el que reside el conjunto de datos de BigQuery.DATASET_ID: Es el nombre del conjunto de datos de BigQuery para la tabla. En el caso de las tablas de Iceberg con un nombre de 4 partes, este es elCatalog.Namespace.TABLE_ID: El nombre de la tabla o vista de BigQuery.ALLOYDB_DESTINATION_TABLE_NAME: Es el nombre de la tabla local en la base de datos de AlloyDB en la que se crearán y se importarán los datos. Puedes incluir el nombre del esquema, por ejemplo,public.local_sales.ON_EXISTS: Es la estrategia que se usará si ya existe la tabla de destino.PRIMARY_KEY_COLUMN: Es una lista opcional de nombres de columnas que se usarán como clave primaria.
Ejemplo
En el siguiente ejemplo, se muestra cómo sincronizar una tabla llamada transactions desde un conjunto de datos de BigQuery en una tabla nueva de AlloyDB llamada public.local_sales:
SELECT alloydb_sync.import_bq_table(
'my-gcp-project.sales_data.transactions',
'public.local_sales',
'replace'
);
Parámetro on_exists
El parámetro on_exists determina cómo la función controla la sincronización si la tabla de destino ya existe en AlloyDB:
error: Es la opción predeterminada. Detiene la sincronización si la tabla de destino ya existe.skip: Se omite la sincronización si la tabla de destino ya existe.replace: Reemplaza la tabla local existente por datos actualizados de BigQuery.
Compatibilidad con claves primarias
Si proporcionas el parámetro opcional primary_key como un array de texto, AlloyDB crea la tabla con las columnas especificadas como clave primaria.
SELECT alloydb_sync.import_bq_table(
'my-gcp-project.sales_data.transactions',
'public.local_sales',
ARRAY['transaction_id']
);
Sincroniza una tabla de BigQuery para la exportación periódica
Puedes sincronizar una tabla de BigQuery para la exportación periódica con la consola deGoogle Cloud o con psql.
Usa la consola de Google Cloud
Para sincronizar una tabla de BigQuery con AlloyDB usando la consola deGoogle Cloud , haz lo siguiente:
Abre la página de BigQuery en la Google Cloud consola.
En el panel de la izquierda, haz clic en Explorar.

Si no ves el panel izquierdo, haz clic en Expandir panel izquierdo para abrirlo.
En el panel Explorador, expande tu proyecto, haz clic en Conjuntos de datos y, luego, en tu conjunto de datos.
Haz clic en Overview > Tables y, luego, selecciona una tabla.
En el panel de detalles, haz clic en Cargar Exportar o sincronizar > AlloyDB (exportar una vez o sincronizar).
En Elige un clúster de destino, selecciona una de las siguientes opciones:
Selecciona Usar un clúster existente para exportar la tabla de BigQuery a un clúster existente de AlloyDB. A continuación, sigue estos pasos:
Selecciona el clúster principal de AlloyDB.
Selecciona la base de datos de AlloyDB de destino.
Selecciona el esquema para tu tabla de AlloyDB de destino.
Especifica un nombre para tu tabla de destino de AlloyDB.
En Frecuencia de sincronización, selecciona un período para crear una sincronización periódica de la tabla de BigQuery, por ejemplo, Cada hora o Cada seis horas.
Haz clic en Configurar exportación.
Cuando se complete la configuración de la sincronización, podrás usar las sentencias SQL proporcionadas para hacer un seguimiento del trabajo de importación y consultar la tabla importada. Haz clic en Consulta para que se te dirija a la tabla importada en AlloyDB Studio.
Selecciona Crear un clúster nuevo para exportar la tabla de BigQuery a un clúster nuevo de AlloyDB. A continuación, sigue estos pasos:
Haz clic en Configurar exportación.
En el diálogo Redireccionar a AlloyDB, selecciona Redireccionar.
Selecciona un tipo de clúster, ya sea Clúster de prueba gratuita o Clúster aprovisionado.
Haz clic en Continuar.
En Configuración de sincronización, selecciona la base de datos de AlloyDB de destino
postgrespredeterminada, el esquemapublicpredeterminado para tu tabla de AlloyDB de destino y especifica un nombre para tu tabla de AlloyDB de destino.En Frecuencia de sincronización, selecciona Solo una vez para crear una copia de la tabla de BigQuery.
Haz clic en Continuar.
Configurar el clúster. Para obtener más información sobre cada campo, consulta Crea un clúster y una instancia principal nuevos.
Haga clic en Crear clúster.
Cuando se complete la configuración de la sincronización, navega a AlloyDB Studio para consultar las tablas importadas.
Cómo crear una sincronización periódica
Para mantener una tabla de solo lectura que se mantenga sincronizada con los datos de BigQuery, usa psql para ejecutar la función alloydb_sync.create_bq_sync_table.
SELECT alloydb_sync.create_bq_sync_table(
'PROJECT_ID.DATASET_ID.TABLE_ID',
'ALLOYDB_DESTINATION_TABLE_NAME',
'REFRESH_INTERVAL',
'ON_EXISTS',
ARRAY['PRIMARY_KEY_COLUMN']
);
Reemplaza lo siguiente:
PROJECT_ID.DATASET_ID.TABLE_ID: Es el nombre completamente calificado de la tabla o vista de BigQuery, incluidos el ID del proyecto, el ID del conjunto de datos y el ID de la tabla, separados por puntos. En el caso de las tablas de Iceberg con un nombre de 4 partes,DATASET_IDse representa comoCatalog.Namespace. Por ejemplo,my-gcp-project.sales_data.transactions.ALLOYDB_DESTINATION_TABLE_NAME: Es el nombre de la tabla local en la base de datos de AlloyDB en la que se crearán y sincronizarán los datos.REFRESH_INTERVAL: Es el intervalo con el que AlloyDB actualiza periódicamente los datos de BigQuery, por ejemplo,12 hours.ON_EXISTS: Es la estrategia que se usará si ya existe la tabla de destino.PRIMARY_KEY_COLUMN: Es una lista opcional de nombres de columnas que se usarán como clave primaria.
Ejemplo
En el siguiente ejemplo, se muestra cómo crear un duplicado del perfil del cliente que se actualiza cada 12 horas:
SELECT alloydb_sync.create_bq_sync_table(
'my-gcp-project.crm_data.profiles',
'public.customer_mirror',
'12 hours',
'replace'
);
Supervisa y administra trabajos
Después de iniciar una sincronización, puedes supervisar su progreso y administrar los trabajos.
Verifica el estado del trabajo
Las sincronizaciones grandes pueden tardar un tiempo. Puedes supervisar el progreso, incluidos los registros procesados y el tiempo estimado de finalización, si consultas la vista job_status:
SELECT
import_id,
status,
records_processed,
total_records,
error
FROM alloydb_sync.job_status;
Por ejemplo, para cancelar el trabajo, ejecuta el siguiente comando:
SELECT alloydb_sync.cancel_import_job('85bb5dfa-dfb9-4017-9153-738f55abe4b1');
Cómo detener y borrar un trabajo de sincronización
Para detener la duplicación de una tabla de BigQuery y borrar la tabla local, usa la función alloydb_sync.delete_bq_sync_table:
SELECT alloydb_sync.delete_bq_sync_table('public.customer_mirror');
Asignaciones de tipos de datos
Cuando sincronizas o importas datos de BigQuery a AlloyDB con la extensión alloydb_sync, AlloyDB asigna los tipos de datos de BigQuery a los tipos de datos de PostgreSQL correspondientes en tu tabla de destino.
Verifica que las columnas de la tabla de BigQuery de origen usen los siguientes tipos de datos admitidos.
En la siguiente tabla, se enumeran las asignaciones de tipos de datos entre BigQuery y AlloyDB.
| Tipos de datos de la tabla de BigQuery | Tipos de datos recomendados para tablas externas de PostgreSQL |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Para obtener más información, consulta PostGIS_Geography. |
|
|
|
Para obtener más información, consulta la extensión de |
Limitaciones
Se aplican las siguientes limitaciones cuando se sincronizan tablas desde BigQuery:
- Esta función solo es compatible con la versión 18 de PostgreSQL.
- Si
DROPla extensiónalloydb_sync, debes reiniciar la instancia antes de volver a crear la extensión. - Las sincronizaciones se ejecutan dentro de una transacción. Si se interrumpe o falla el trabajo de importación, el sistema revierte los datos importados.
- Si dos usuarios inician trabajos de sincronización al mismo tiempo con las mismas tablas de destino, es posible que las tablas se reemplacen entre sí.
- Si se produce alguna interrupción durante la importación inicial en segundo plano de una tabla de sincronización recién registrada, la tabla permanecerá incompleta hasta el próximo intervalo de actualización programado. Para resolver este problema, puedes borrar la tabla de sincronización con la función
alloydb_sync.delete_bq_sync_table()y volver a crearla. - Los tipos complejos de BigQuery, como
ARRAY,BYTES,VECTORyGEOGRAPHY, no son compatibles con la sincronización. Para obtener una lista completa, consulta los tipos de datos y las asignaciones de columnas compatibles con BigQuery. - No borres manualmente una tabla replicada. Usa la función de API
alloydb_sync.delete_bq_sync_table()para descartar la tabla y actualizarla de forma segura. - Para descartar una base de datos que usa la extensión
alloydb_sync, debes usarDROP DATABASE ... WITH (FORCE). - Si la base de datos de Postgres falla mientras se ejecuta una importación, es posible que los metadatos queden atascados en el estado
RUNNING, lo que bloqueará las importaciones futuras. Debes ejecutarUPDATE alloydb_sync.import_job_status SET status = 'FAILED' WHERE status = 'RUNNING';de forma manual para desbloquearlo.
Precios
Cuando sincronizas datos de BigQuery en AlloyDB, se te factura según los precios de las lecturas de transmisión de BigQuery (API de Storage Read).
Una vez que se exportan los datos, se te cobra por almacenarlos en AlloyDB. Para obtener más información, consulta los precios de AlloyDB para PostgreSQL.
¿Qué sigue?
- Obtén más información sobre la exportación de datos a AlloyDB (ETL inversa).
- Obtén más información para consultar datos de BigQuery directamente con FDW.